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

9.3 KiB

Audit TODO 2026-05-25

Quelle: docs/AUDIT_2026-05-25.md

Status: Arbeitsliste fuer die Umsetzung. Authelia-2FA/OIDC, CrowdSec und Nextcloud-2FA-Haertung bleiben ganz hinten und werden bewusst nicht in diesem Audit-Zyklus angefasst.

Leitplanken

  • Authelia-2FA-ACL, Authelia-OIDC und CrowdSec werden in diesem Audit-Zyklus nicht umgesetzt (Operator-Vorgabe 2026-05-26).
  • Keine Live-riskanten Bind-/Port-Aenderungen ohne vorher erfasste Host-Werte, insbesondere Tailscale-IP.
  • Hermes-Agent ist geparkt, nicht entfernt; Review-Deadline 2026-07-25.
  • USV-Anschaffung ist verschoben; Power-Loss-Risiko ist als Operator-Entscheidung 2026-05-26 bewusst akzeptiert.
  • Borg-Passphrase ist offline gesichert (bestaetigt 2026-05-26).
  • H:/ ist evaluiert als zweite lokale Nearline-Kopie, nicht als Offsite-Ersatz (siehe docs/CAPACITY_AND_LIFECYCLE.md).
  • Familien-Einladung ist fuer das Wochenende nach Erreichen des finalen Stands geplant; Family-Onboarding muss familienverstaendlich werden, nicht technisch.
  • Jede produktive Aenderung bekommt Validierung und Rollback-Hinweis.

Naechster Startpunkt 2026-05-26

Kontext bewusst gesichert, bevor weitere Live-Aenderungen passieren:

  1. Host-Schedule fuer Gitea-Bundles und Restore-Freshness pruefen.
  2. FRITZ!Box-Portfreigaben (UI) gegen Repo-Soll abgleichen (443/tcp + 222/tcp).
  3. H:/ Pull-Workflow festlegen.
  4. Family-Onboarding-Doku familienverstaendlich umarbeiten, vor der Wochenend-Einladung.
  5. Authelia 2FA/OIDC und CrowdSec weiterhin nicht anfassen; bleibt bewusst der letzte Block.

Sprint 0 - Inventar und Baseline

Status Aufgabe Ergebnis
erledigt Hardware-Inventar ausfuellen CPU, RAM, Mainboard, BIOS, NIC, Controller, Disks, SMART und Capacity-Baseline erfasst; USV ist als nicht validiert dokumentiert
erledigt Netzwerk-Inventar ausfuellen Host-IP, Gateway, Tailscale-IP, AdGuard-Bind und FRITZ!Box-Baseline (7590, FRITZ!OS 8.21, Telekom DSL 87/36, 36 Geraete, Gast-WLAN inaktiv, Ausfallschutz inaktiv, 2 Portfreigaben aktiv) erfasst; IPv6 und FRITZ!OS-Update bleiben Operator-Folgeaufgaben
erledigt (Baseline) Externe Abhaengigkeiten dokumentieren docs/EXTERNAL_DEPENDENCIES.md enthaelt bekannte Provider, Kritikalitaet, Ausfallplaene; Account-Recovery-Codes/Zahlungswege bleiben Off-Repo-Operatorcheck
erledigt (Baseline) Services-Recovery-Pfade beschreiben docs/SERVICES_RECOVERY.md enthaelt Gitea-/Komodo-/Secrets-Sonderpfade; Gitea-Bundle-/Mirror-Mechanik bleibt als Umsetzungsentscheidung offen
erledigt Baseline-Tag setzen audit-2026-05-25-baseline ist lokal und remote vorhanden
erledigt Policy-Check neu ausfuehren SEC001-Warnings aus altem Report sind nicht mehr aktuell

Sprint 1 - Nicht-kontroverse Sicherheits- und Repo-Hygiene

Status Aufgabe Ergebnis
erledigt Borg-Passphrase analog sichern Operator bestaetigt am 2026-05-26: Passphrase ist offline gesichert und ohne Host/Vaultwarden wiederherstellbar
erledigt (repo) AdGuard Admin-Bind vorbereiten Tailscale-IP 100.80.98.33 erfasst, Compose-Soll geaendert
erledigt AdGuard Admin-Port auf Tailscale-IP binden Live validiert: ss -ltnp zeigt 100.80.98.33:8082, DNS auf Port 53 funktioniert, LAN-Zugriff auf 192.168.178.58:8082 schlaegt fehl
erledigt Alte Monitoring-Verzeichnisse entfernen ops/grafana-influxdb/ und ops/loki/ sind aus dem aktiven Repo entfernt; Rollback erfolgt ueber Git-Historie
erledigt Komodo/Gitea-Restdrift bereinigen alter Komodo-Stack grafana ist inert und ohne Repo-Pfad/Webhook; Gitea-Hook 35 und komodo-Self-Hook 11 sind inaktiv; aktive Gitea-Hooks haben keine Fehlstatus
erledigt Policy-Warnings triagieren Plex Host-Netz und digest-gepinnte mutable Tags sind dokumentierte Info-Ausnahmen; monitoring-influxdb3-core als Root-Ausnahme bleibt bewusst als Warning sichtbar

Sprint 2 - Storage und Recovery verbindlich machen

Status Aufgabe Ergebnis
offen docs/STORAGE_LAYOUT.draft.md finalisieren Datei wird als docs/STORAGE_LAYOUT.md Active gefuehrt
offen Disk- und Share-TBDs eintragen Modelle, Groessen, Seriennummern, Filesysteme und Cache-Settings sind dokumentiert
erledigt (Skript + Host-Test) Gitea-Repo-Mirror-Mechanik definieren ops/borg-ui/scripts/gitea-bundle-mirror.sh erzeugt verifizierte Bundles unter /mnt/user/backups/git-bundles/gitea; Host-Erstlauf 2026-05-26: 4 Bundles, Checksums OK, homelab-infra.bundle klonbar und git fsck sauber; Schedule bleibt offen
offen Komodo-Bootstrap-Pfad beschreiben Kaltstart ohne laufendes Komodo ist dokumentiert
offen Immich-Restore-Test planen Testumfang, Datenpfade und Smoke-Test-Kriterium stehen fest

Sprint 3 - Restore und Monitoring

Status Aufgabe Ergebnis
offen Immich-Restore-Test implementieren Restore-Report landet unter /mnt/user/backups/restore-reports/
offen Borg-Stale-Alert bauen Alarm feuert, wenn Borg-Archiv zu alt ist
offen TLS-Cert-Expiry-Alert bauen Alarm feuert bei Restlaufzeit unter Schwellwert
offen Container-Down-Alert bauen Unerwartet fehlende Container werden sichtbar
offen Family-View Dashboard definieren Uptime, Backup-Frische, Cert-Tage, Disk-Fuellung auf einer Seite

Sprint 4 - Familien- und Betriebsdoku

Status Aufgabe Ergebnis
in Arbeit Familien-Onboarding schreiben Familienverstaendlich (kein Tech-Jargon); deckt Nextcloud, Immich, Vaultwarden, Mealie, Paperless, Plex, Passwort-/2FA-Verlust und WAN-/DNS-Stoerungen ab; finaler Stand vor Wochenend-Einladung
erledigt (Baseline) Capacity-/Lifecycle-Review erstellen Cache 6 %, Array/User-Shares 33 %, lokale Backups 2.2G; H:/-Nearline-Bewertung ergaenzt; externe Cold-Storage-Groessen bleiben offen
erledigt USV-Test oder USV-Entscheidung Operator-Entscheidung 2026-05-26: aktuell keine USV-Anschaffung; Power-Loss-Risiko wird bewusst akzeptiert und dokumentiert
erledigt (Baseline) H:/ als zusaetzliches lokales Backupziel bewerten Als zweite Nearline-Kopie und Freeze-Sicherung sinnvoll; kein Offsite-Ersatz, kein CIFS-Hard-Mount am Unraid; Pull-Modell vom Windows-PC ist der getestete Weg (siehe docs/CAPACITY_AND_LIFECYCLE.md)
in Arbeit H:/ Groesse und Pull-Schedule festschreiben Groesse erfasst: 8.0T NTFS, 3.91T belegt, 4.10T frei, Healthy; Pull der Borg-Dumps, Gitea-Bundles und Flash-Backups noch planen
offen FRITZ!Box-Portfreigaben gegen Repo-Soll abgleichen UI -> Internet -> Freigaben pruefen; nur 443/tcp -> 192.168.178.58 und 222/tcp -> 192.168.178.58 sollten aktiv sein

Sprint 5 - Auth und Frontdoor, bewusst zuletzt

In diesem Audit-Zyklus werden diese Punkte nicht umgesetzt. Sie sind dokumentiert, damit sie bei einer kuenftigen Policy-Entscheidung sofort priorisiert werden koennen.

Status Aufgabe Begruendung der Parkung
geparkt Authelia 2FA fuer Operator-UIs erweitern (F-04) Operator-Vorgabe 2026-05-26: keine Auth-Aenderungen in diesem Zyklus
geparkt Authelia OIDC fuer Apps pruefen (F-13) Operator-Vorgabe 2026-05-26: keine Auth-Aenderungen in diesem Zyklus
geparkt CrowdSec vor Traefik pruefen (F-14) Operator-Vorgabe 2026-05-26: erst nach finaler Auth-Policy
geparkt Nextcloud-2FA-/Brute-Force-Haertung dokumentieren (F-18) beruehrt Auth-Policy fuer Familien-Konten; gemeinsam mit OIDC-Entscheidung

Sprint 6 - Geparkte Apps und Folgeentscheidungen

Status Aufgabe Naechster Pruefschritt
geparkt Hermes-Agent (F-06) — Operator-Entscheidung produktiv vs. entfernen Review-Deadline 2026-07-25; bis dahin bleibt der NAS-Stack deaktiviert, das Repo-Verzeichnis erhalten, Dashboard-Domain und ACL-Eintrag unveraendert
offen paperless-gpt / BentoPDF Nutzungsentscheidung Mit Wochenend-Einladung Familienprobelauf, danach Operator-Entscheidung
offen Plex Remote Access in UI deaktivieren falls nur LAN/Tailscale (F-17) Plex-UI -> Settings -> Remote Access -> deaktivieren, falls nicht aktiv genutzt
erledigt infra/redis Doku-Etikett korrigieren (F-16) SERVICE_CATALOG, REPO_MAP, MASTER (Sektion 13) und DISASTER_RECOVERY Bootstrap-Stufe 2 auf "primaer Paperless-Redis" praezisiert; keine Compose-Aenderung
erledigt Paperless-DBPass DR-Restore-Reihenfolge in DR-Doc (F-20) DISASTER_RECOVERY 6.2.1 (Restore-Quellen fuer Stack-ENV-Werte) ergaenzt; SECRETS_MAP um Abschnitt "Stack-ENV-only Secrets - Restore-Wege" mit Reihenfolge Komodo-Mongo-Dump -> Vaultwarden -> externe Notiz erweitert; Paperless, Immich, Mail-Archiver, Speedtest, Komodo, Hermes und Glance je mit Restore-Quelle dokumentiert

Sprint 7 - Off-site und 3-2-1 (offen)

Status Aufgabe Bemerkung
offen Zweites echtes Off-site (F-03) H:/ ersetzt das nicht; rsync.net / BorgBase EU2 / Cold-Wechselplatte mit fester Rotation pruefen
offen Restore-Lab-Drill quartalsweise dokumentieren Routine festlegen, nicht ad-hoc

Offene Host-Werte

Diese Werte muessen am Unraid-Host erhoben werden, bevor die entsprechenden Aenderungen sauber umgesetzt werden:

hostname
cat /proc/cpuinfo | awk '/model name|flags/ {print; if(/flags/) exit}'
free -h
dmidecode -t baseboard | head -30
ip -br link
tailscale ip -4
lsblk -o NAME,SIZE,MODEL,SERIAL,FSTYPE,MOUNTPOINT,VENDOR
df -h /mnt/cache /mnt/disk1 /mnt/user
smartctl -a /dev/nvme0n1 | head -80
smartctl -a /dev/sdb | head -80