Files
homelab-infra/docs/AUDIT_2026-05-25_TODO.md
T

11 KiB

Audit-Restliste 2026-05-25

Status: kompakte Restliste. Die erledigten Sprint-Tabellen und langen Audit-Snapshots wurden aus der Arbeitskopie entfernt; Detailhistorie liegt in Git.

Letzter Sync mit docs/MASTER_TODO.md: 2026-06-05. Offene Punkte sind deckungsgleich; neue Restore-Runbook-Stubs (Unraid Flash / AdGuard / Tailscale / Redis 8) wurden in docs/RESTORE_MATRIX.md ergaenzt.

Aktuell offene Punkte

Prioritaet Punkt Naechster Schritt
P1 DR-Workstation Bare-Metal-Kit: Borg-Client + Hetzner-Smoke abschliessen Readiness-Check 2026-06-06: WSL2 Ubuntu 24.04 ist vorhanden, SSH/Git sind vorhanden, Gitea-SSH-Smoke aus WSL ist erfolgreich, ~/dr-smoke.sh wurde bereitgestellt. Verbleibend: Operator muss in Ubuntu per sudo apt install borgbackup openssh-client den Borg-Client installieren, den offline gesicherten Hetzner-DR-Key als Arbeitskopie nach ~/.ssh/dr-hetzner legen und den Borg-Smoke fahren. Beleg: docs/audit/dr-workstation-readiness-2026-06-06.md
P2 Family-Onboarding praktisch starten Fokus: Vaultwarden als Passwortbasis, Immich-Mobile-Backup auf jedem Handy, Mealie mit erstem Rezept/Einkaufsliste; Ablauf steht in docs/FAMILY_ONBOARDING.md

Restore-Audit Backlog (Stand 2026-06-03)

Ergebnis des Restore-Skills-Audits (Session 2026-06-02/03). Die kritischen Bugfixes (Cron-OR-Semantik, ntfy-Race, Cleanup-Trap, Pfad-Inkonsistenz, Vaultwarden-Token, Paperless-Retry, Header-Validierung, Authelia-Test) sind erledigt und committed. Die folgenden Punkte sind bewusst offener Backlog:

Prioritaet Punkt Status Naechster Schritt
P1 Nextcloud-Restore-Test erledigt 2026-06-03 Borg-Extract + pg_restore (126 Tabellen) + HTTP 200 + occ status maintenance:false. Quelle: hetzner_borg_appdata_critical, Archiv Taegliche-Sicherung-2026-06-03T04:30:41.432. Zwei Skript-Bugs im Zuge des Laufs gefixt (check_data_directory_permissions: false patchen, .ncdata-Marker anlegen). Report /mnt/user/backups/restore-reports/nextcloud-2026-06-03.md.
P1 Shared PostgreSQL 18 Cluster Restore Drill erledigt 2026-06-03 Globals + 5 DBs (paperless 72t, mailarchiver 1t, authelia 25t, nextcloud 126t, mealie 66t), data_checksums=on, Report /mnt/user/backups/restore-reports/shared-pg-cluster-2026-06-03.md
P1 Komodo-Mongo-Daten-Restore erledigt 2026-06-03 86904 Dokumente erfolgreich restored, Report /mnt/user/backups/restore-reports/komodo-mongo-restore-2026-06-03.md. Nebenbefund: Dump von Mongo 8.0.23, Test auf 7.0.32 — Cross-Version-Warning, fuer Lesetest harmlos
P2 Mailarchiver-Restore-Test erledigt 2026-06-03 Data-Protection-Keys + 645M pg_restore + HTTP 200. Report /mnt/user/backups/restore-reports/mailarchiver-2026-06-03.md
P2 Mealie-Restore-Test erledigt 2026-06-03 Borg-Data + pg_restore + HTTP 200, 3 Rezepte. Report /mnt/user/backups/restore-reports/mealie-2026-06-03.md
P2 Traefik-Restore-Test erledigt 2026-06-03 dynamic/ + letsencrypt/ aus Borg, File-Provider + Ping 200. CF-Token bewusst nicht im Smoke. Report /mnt/user/backups/restore-reports/traefik-2026-06-03.md
P3 Negativ-Test fuer Frische-Check offen Einmal pro Quartal bewusst kaputten Dump einfuettern und pruefen ob homelab-alerts feuert
P3 End-to-end-DR-Drill offen Komplett-Bootstrap Phase 1-5 auf einem Wegwerf-Host; realistisch nur mit zweiter Hardware

Bewusst geparkt

Punkt Entscheidung
Authelia 2FA fuer Operator-UIs (Rest) Tier-1-Operator-UIs sind 2026-06-03 auf two_factor gehoben (files, scrutiny, borg, code). Restliche Admin-UIs (monitoring, glances, glance, speedtest, paperless-gpt, pdf, mail, hermes, sp) bleiben bewusst auf one_factor, bis die finale Auth-Policy steht.
Authelia OIDC fuer Apps Geparkt bis klare Familien-/SSO-Entscheidung
CrowdSec vor Traefik Bewusst nicht umgesetzt: einzige WAN-Tuer ist 443/tcp, Operator-Pfad ist Tailscale, Authelia-regulation: deckt Auth-Brute-Force ab. Neu bewerten bei breiterer Attack Surface.
Nextcloud 2FA/Brute-Force-Haertung UI-Schritt fuer Operator-Account (twofactor_totp aktivieren) bleibt offen. App-weite Familien-Policy gemeinsam mit OIDC entscheiden.
Hermes-Agent NAS-Stack bleibt deaktiviert; Review-Deadline 2026-07-25
USV Anschaffung verschoben; Power-Loss-Risiko bewusst akzeptiert
Zweites Off-site-Ziel Bewusst nicht umgesetzt; neu bewerten bei Hetzner-Problemen, stark wachsendem Datenwert oder geaenderter Betreiber-Praeferenz
Borg append-only auf Hetzner Operator-Entscheidung 2026-06-01: nicht umgesetzt. Der forced-command-Test auf der Storage Box brach Key-Auth und wurde per Passwort-Recovery zurueckgesetzt; Nutzen steht fuer dieses Homelab nicht im Verhaeltnis zum Betriebsrisiko.

Zuletzt geschlossen

  • Nextcloud-Restore-Test 2026-06-03 erfolgreich (Tier-2 damit komplett belegt). Drei Laeufe noetig: Lauf 1 schlug an chmod() der data-Dir auf shfs fehl (OC_Util.php:486), Lauf 2 an fehlender .ncdata-Marker-Datei, Lauf 3 sauber durch. Beide Bug-Fixes ins Skript ops/restore-tests/nextcloud-restore-test.sh integriert. Endresultat: HTTP 200 auf /status.php, occ status ok, 126 Tabellen in der DB. Source: hetzner_borg_appdata_critical, Archiv Taegliche-Sicherung-2026-06-03T04:30:41.432. Report unter /mnt/user/backups/restore-reports/nextcloud-2026-06-03.md.
  • Hetzner Storage Box DR-SSH-Key dr-hetzner-2026-06-03 (ed25519, Passphrase-frei) angelegt: Pubkey via install-ssh-key auf der Storage Box autorisiert, passwortloser Login erfolgreich (Borg-Repos backup, backup2, hetzner_borg_appdata, hetzner_borg_appdata_critical sichtbar), Private-Key offline neben KOMODO_*-Notiz und GitHub-Deploy-Key abgelegt, Arbeitsplatz-Kopie geloescht. Damit ist Bare-Metal-Borg-Zugang von der DR-Workstation moeglich, sobald WSL2+Borg installiert sind.
  • Fix Common Problems Plugin (FCP) 2026-06-03 deinstalliert. Befund: drei grep -R ... /usr/local/emhttp-Prozesse aus einem FCP-Daily-Scan hingen seit ~7 Tagen in einem Symlink-Loop (/usr/local/emhttp/mnt -> /mnt, gesamte Array). 3 Cores dauerhaft 100 %, IOWAIT bis 55 %, USB-Flash unter Dauer-IO. Plugin via plugin remove entfernt, Cron + /tmp-Reste sauber, Load von 14.6 auf 1.08 gefallen. FCP wird bewusst nicht wieder installiert (Begruendung siehe HOMELAB_ARCHITECTURE_MASTER_V2.md Sektion 13). Bekannte Risiken decken Scrutiny, Monitoring, Posture-Check und Critical-Events-Watcher bereits ab.
  • GitHub-Mirror Read-Only Deploy-Key DR Read-Only 2026-06-03 (ed25519, Passphrase-frei) angelegt: GitHub Repo Settings -> Deploy Keys ohne Write-Access, Smoke git ls-remote erfolgreich (HEAD d947c7f = master), Private-Key offline neben der KOMODO_*-Notiz abgelegt, Arbeitsplatz-Kopie nach USB-Transfer geloescht. Damit ist der DR-Read-Pfad zum privaten Mirror ohne Operator-Browser-Login moeglich.
  • KOMODO_*-Notiz offline gesichert (Operator-Bestaetigung 2026-06-03). Quelle bleibt host-seitige .env unter /mnt/user/services/stacks/komodo/.env bzw. die Drift-Recovery-Kopie unter /mnt/user/appdata/secrets/_komodo_stack_env_recovery_2026-05-04.env. Damit ist der Bare-Metal-Komodo-Bootstrap ohne Vaultwarden moeglich. Eintrag in docs/EXTERNAL_DEPENDENCIES.md Reviews und Pflichtbestandteil im DR-Workstation-Kit nachgezogen.
  • DR-Tabletop 2026-06-03 durchgelaufen, Findings in docs/DR_DRILL_2026-06-03.md (23 Befunde: 1 CRITICAL, 11 HIGH, 8 MED, 3 LOW). Reine Doku-Fixes in DR.md (Phase 0 Mirror-Klarstellung, neue Phase 4 Stufe 0 Docker-Netze, LE-Staging-Hinweis, Komodo-Stolperfallen, App-DB-Verify in Phase 5) und in EXTERNAL_DEPENDENCIES.md (DR-Workstation-Kit, KOMODO_*-Notiz und GitHub-Read-PAT als offene Bootstrap-Bloecke) sind im selben Aenderungsblock erledigt. Operator-Aufgaben (Notiz/PAT/WSL-Setup) wandern als P1 in die offenen Punkte.
  • Authelia ACL: borg.kaleschke.info und code.kaleschke.info 2026-06-03 in den two_factor-Block der Repo-Baseline aufgenommen. Beide UIs haben effektiv Host-/Backup-Zugriff (Borg-Restore-Scope inkl. /local/secrets, code-server mit Workspaces). Wirkung erst nach manuellem Merge in /mnt/user/appdata/authelia/config/configuration.yml, docker restart authelia und Smoke-Test auf einer der vier 2FA-Domains; services/authelia-diff.sh muss exit 0 liefern. TOTP-Enrollment des Operator-Accounts ist Voraussetzung, sonst Login-Sperre.
  • Alt-Volumes nach Burn-in freigegeben und reversibel archiviert: Shared PG17, Mealie PG17, Nextcloud PG17 und Immich pgvecto.rs liegen seit 2026-06-02 unter /mnt/user/appdata/_archive/pg18-immich-rollback-volumes-20260602; Manifest auf dem Host: /mnt/user/appdata/_archive/pg18-immich-rollback-volumes-20260602/MANIFEST.txt. Keine harte Loeschung, keine aktiven Container-Mounts auf die alten Pfade.
  • Externer Betreibercheck vorbereitet: docs/EXTERNAL_OPERATOR_RUNBOOK.md und ops/maintenance/check-external-operator.sh; Live-Baseline am 2026-06-01: FRITZ!OS 154.08.25, keine Public-AAAA-Records fuer *.kaleschke.info, Host ohne globale Provider-IPv6, WAN 443/tcp offen und 80/tcp/222/tcp geschlossen.
  • FRITZ!Box-Servicefenster UI-seitig abgeschlossen: FRITZ!Box-Dienste aus dem Internet sind aus (HTTPS auf FRITZ!Box-UI, FTP/FTPS auf Speichermedien), aktive WAN-Freigabe bleibt nur 443/tcp -> 192.168.178.58, keine aktive IPv6-Freigabe sichtbar, UPnP-Selbstfreigaben aus.
  • FRITZ!Box-Konfig-Backup exportiert und extern/off-system in Vaultwarden abgelegt: Einstellungen_FRITZ.Box_7590_154.08.25_01.06.26_1318.export; Kennwort und Datei bleiben ausserhalb des Repos.
  • Hetzner-Account-Hygiene erledigt: externe Kontakt-/Rechnungs-Mail bestaetigt, Zahlung ok, 2FA mit Google Authenticator aktiv, Recovery Key offline ausgedruckt.
  • Hetzner Storage Box geprueft: storage-box-1, u565255.your-storagebox.de, SSH-Port 23, SSH aktiv, SMB/WebDAV aus, 64,94 GB / 1 TB belegt; Borg-UI-Key und separater Maintenance-Key funktionieren wieder nach Passwort-Recovery. Borg append-only ist bewusst nicht umgesetzt.
  • Family-View Dashboard ist repo-seitig gebaut: monitoring/grafana/dashboards/family-status.json zeigt Family-App-Uptime, Backup-Alter, TLS-Restlaufzeit, Critical-Container und Image-Drift.
  • Borg-Nachlauf nach dem 2026-05-31-Sprint ist belegt: Archiv Taegliche-Sicherung-2026-06-01T04:30:26.913, 101669 Dateien, rc=0; Freshness-Check am 2026-06-01: Critical 0, Warnings 0.
  • H:/ Nearline-Pull am 2026-06-01 repariert und manuell validiert: kuratierte Borg-Dumps Exit 0, Gitea-Bundles Exit 1 (Robocopy-Erfolg mit Kopien), Report nearline-pull-2026-06-01-082553.md.
  • Immich-, Paperless-, Gitea- und Vaultwarden-Restore-Pfade sind belegt.
  • H:/ Nearline-Pull laeuft seit 2026-05-28 als Windows Scheduled Task.
  • FRITZ!Box-Portfreigaben sind bereinigt: WAN-seitig bleibt 443/tcp.
  • InfluxDB 3 Core ist effektiv nur auf 127.0.0.1:8181 gebunden.
  • Renovate ist produktiv, Major-Updates werden bewusst manuell entschieden.
  • Policy-Check bleibt ohne Criticals; bekannte Root-Ausnahmen sind dokumentiert.