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:
- Host-Schedule fuer Gitea-Bundles und Restore-Freshness pruefen.
- FRITZ!Box-Portfreigaben (UI) gegen Repo-Soll abgleichen (
443/tcp + 222/tcp).
- H:/ Pull-Workflow festlegen.
- Family-Onboarding-Doku familienverstaendlich umarbeiten, vor der Wochenend-Einladung.
- 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 |
| erledigt |
docs/STORAGE_LAYOUT.draft.md finalisieren |
Datei als docs/STORAGE_LAYOUT.md Active v1.4 gefuehrt; Draft-Blocker entfernt |
| erledigt (Baseline) |
Disk- und Share-TBDs eintragen |
Disk-Modelle, Seriennummern, Groessen, Filesysteme und Share-Cache-Settings aus docs/HARDWARE_INVENTORY.md und Host-Readout 2026-05-27 uebernommen; Retention-/Schwellen-Kalibrierung bleibt Folgeaufgabe |
| 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 |
| erledigt |
Immich-Restore-Test planen |
Testumfang, Datenpfade und Smoke-Test-Kriterium sind in docs/IMMICH_RESTORE_TEST.md, ops/restore-tests/immich-plan.md und ops/restore-tests/immich-runbook.md festgehalten; erster Host-Lauf bleibt offen |
Sprint 3 - Restore und Monitoring
| Status |
Aufgabe |
Ergebnis |
| in Arbeit (vorbereitet) |
Immich-Restore-Test implementieren |
ops/restore-tests/immich-restore-test.sh, immich-compose.test.yml und Dispatcher-Eintrag vorbereitet; lokaler und Host---what-if erfolgreich; Host-Preflight 2026-05-27: immich.dump 66M, /mnt/user/backups ca. 3.7T frei; Abschluss erst nach echtem Host-Lauf mit Report unter /mnt/user/backups/restore-reports/ |
| in Arbeit (Regeln vorbereitet) |
Borg-Stale-Alert bauen |
Textfile-Metrik homelab_borg_last_completed_timestamp_seconds und Prometheus-Regeln vorbereitet; Abschluss nach Host-Schedule + Prometheus-Reload/Testalert |
| in Arbeit (Regeln vorbereitet) |
TLS-Cert-Expiry-Alert bauen |
Blackbox-Regeln fuer 21-/7-Tage-Schwellen vorbereitet; Abschluss nach Prometheus-Reload/Testalert |
| in Arbeit (Regeln vorbereitet) |
Container-Down-Alert bauen |
Textfile-Metrik homelab_critical_container_running{name=...} und Alert vorbereitet; Abschluss nach Host-Schedule + Prometheus-Reload/Testalert |
| 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 (vorbereitet) |
H:/ Groesse und Pull-Schedule festschreiben |
Groesse erfasst: 8.0T NTFS, 3.91T belegt, 4.10T frei, Healthy; docs/H_DRIVE_NEARLINE_PULL.md und ops/h-drive-nearline/pull-critical-backups.ps1 vorbereitet; SMB-Quelle erreichbar; empfohlener Schedule taeglich 05:30, Task noch nicht aktiviert |
| 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: