diff --git a/docs/AUDIT_2026-05-25_TODO.md b/docs/AUDIT_2026-05-25_TODO.md index d37b87c..996a30f 100644 --- a/docs/AUDIT_2026-05-25_TODO.md +++ b/docs/AUDIT_2026-05-25_TODO.md @@ -106,7 +106,7 @@ In diesem Audit-Zyklus werden diese Punkte **nicht** umgesetzt. Sie sind dokumen | erledigt 2026-05-28 (bewusst nicht umgesetzt) | Zweites echtes Off-site (F-03) | Operator-Entscheidung 2026-05-28: kein zweites Off-site. 3-2-1 ist mit Live + lokalem Borg + Hetzner + H:/-Nearline erfuellt; ein zweites Off-site wuerde nur den Fall "Hetzner-Account verloren" zusaetzlich abdecken, Aufwand/Kosten unverhaeltnismaessig fuer Familien-Homelab. Statt dessen drei Hetzner-Haertungen als Folge-TODOs (siehe `docs/OFFSITE_BACKUP_OPTIONS.md` Beschluss-Block). Review-Trigger sind dort definiert. | | offen (Operator-Aufgabe) | Hetzner-Account-Hygiene ohne 2FA | Starkes, einzigartiges Passwort in Vaultwarden + Backup-Zahlungsweg + Login-Benachrichtigungen per E-Mail. 2FA bewusst nicht (analog USV: Risiko bewusst akzeptiert, Aufwand ueberwiegt Risiko-Reduktion fuer Familien-Homelab). | | offen (Folge-Sprint) | Borg `--append-only` auf Hetzner setzen | Aktuell laeuft Repo `appdata-critical` im Mode `full`, `custom_flags` leer. Setup server-seitig in Hetzner `~/.ssh/authorized_keys` mit `command="borg serve --append-only"`. Schuetzt gegen Ransomware, die client-seitig Borg-Credentials abgreifen koennte. | -| offen (Operator-Go) | H:/-Pull als Windows Scheduled Task | Skript und Doku sind ready (`docs/H_DRIVE_NEARLINE_PULL.md`, `ops/h-drive-nearline/pull-critical-backups.ps1`). Erstlauf 2026-05-27 erfolgreich; Scheduled Task taeglich 05:30 noch nicht aktiviert. | +| erledigt 2026-05-28 | H:/-Pull als Windows Scheduled Task | Task `KalliLab H Drive Nearline Pull` registriert: taeglich 05:30, `RunLevel Limited`, `AllowStartIfOnBatteries`, `StartWhenAvailable`, `ExecutionTimeLimit 2h`. Naechster Lauf 2026-05-29 05:30. Erstlauf manuell 2026-05-27 20:45 erfolgreich, Task-Setup in `docs/H_DRIVE_NEARLINE_PULL.md` aktualisiert (RunLevel-Enum-Fix `LeastPrivilege` -> `Limited`). | | erledigt (Routine dokumentiert) | Restore-Lab-Drill quartalsweise dokumentieren | `docs/RESTORE_DRILL_ROUTINE.md` definiert Drei-Stufen-Modell (Freshness woechentlich / Mini-Restore monatlich-bimonatlich / DR-Sanity quartalsweise), Quartals-Belegung Q1-Q4 mit Dienst-Rotation, Immich 2026-05-27 als bestaetigter Erstlauf gefuehrt, 10-Punkte-Sanity-Check, kein Host-Schedule angelegt. `ops/restore-tests/schedule.md` verweist jetzt auf Drill-Routine. | ## Offene Host-Werte diff --git a/docs/H_DRIVE_NEARLINE_PULL.md b/docs/H_DRIVE_NEARLINE_PULL.md index 553fbbc..d13d32b 100644 --- a/docs/H_DRIVE_NEARLINE_PULL.md +++ b/docs/H_DRIVE_NEARLINE_PULL.md @@ -1,6 +1,6 @@ # H:/ Nearline Pull -Status: **erster echter Lauf erfolgreich** (2026-05-27 20:45). Scheduled Task **noch nicht** aktiv — wird erst nach Operator-Bestaetigung angelegt. +Status: **produktiv** (2026-05-28). Erster echter Lauf 2026-05-27 20:45 erfolgreich. Windows Scheduled Task `KalliLab H Drive Nearline Pull` taeglich 05:30 ist seit 2026-05-28 aktiv. ## Erstlauf-Befund 2026-05-27 @@ -53,23 +53,49 @@ H:\kallilab-nearline-backups\_logs Empfohlen: taeglich 05:30 Uhr, nach dem Borg-Dump-Fenster um ca. 04:00 Uhr. -Der Task wird erst nach Operator-Sichtpruefung angelegt. Vorschlag: +Aktiv seit 2026-05-28. Tatsaechlicher Register-Befehl (RunLevel-Enum-Wert ist `Limited`, nicht `LeastPrivilege`): ```powershell $Action = New-ScheduledTaskAction ` -Execute "powershell.exe" ` - -Argument "-NoProfile -ExecutionPolicy Bypass -File G:\Gitea_Clone\homelab-infra\ops\h-drive-nearline\pull-critical-backups.ps1" + -Argument "-NoProfile -ExecutionPolicy Bypass -File `"G:\Gitea_Clone\homelab-infra\ops\h-drive-nearline\pull-critical-backups.ps1`"" $Trigger = New-ScheduledTaskTrigger -Daily -At 05:30 +$Settings = New-ScheduledTaskSettingsSet ` + -AllowStartIfOnBatteries ` + -DontStopIfGoingOnBatteries ` + -StartWhenAvailable ` + -ExecutionTimeLimit (New-TimeSpan -Hours 2) + Register-ScheduledTask ` -TaskName "KalliLab H Drive Nearline Pull" ` -Action $Action ` -Trigger $Trigger ` + -Settings $Settings ` -Description "Copies critical KalliLab restore artifacts from Unraid SMB backup share to H:/ nearline disk." ` - -RunLevel LeastPrivilege + -RunLevel Limited ``` +Status pruefen: + +```powershell +Get-ScheduledTask -TaskName "KalliLab H Drive Nearline Pull" | Format-List TaskName, State +Get-ScheduledTaskInfo -TaskName "KalliLab H Drive Nearline Pull" | Format-List LastRunTime, LastTaskResult, NextRunTime, NumberOfMissedRuns +``` + +Manueller Trigger zum Testen: + +```powershell +Start-ScheduledTask -TaskName "KalliLab H Drive Nearline Pull" +``` + +Verhalten: + +- Laeuft als angemeldeter User (`RunLevel Limited`); wenn der PC abgemeldet ist, wartet der Task bis zur naechsten Anmeldung (`StartWhenAvailable`). +- Akku-Modus blockiert nicht (`AllowStartIfOnBatteries`). +- Maximale Laufzeit 2 h, danach wird der Task abgebrochen. + ## Erfolgscheck Nach einem echten Lauf muessen mindestens diese Artefakte unter `H:\kallilab-nearline-backups` liegen: diff --git a/docs/MIGRATION_LOG.md b/docs/MIGRATION_LOG.md index af9f79d..b606975 100644 --- a/docs/MIGRATION_LOG.md +++ b/docs/MIGRATION_LOG.md @@ -17,6 +17,13 @@ Dieses Dokument ist nur noch ein historischer Verlauf. Der aktuelle operative Ab ## Historische Meilensteine +### 2026-05-28 - H:/-Pull als Windows Scheduled Task aktiviert + +- Task `KalliLab H Drive Nearline Pull` registriert auf dem Operator-Windows-PC: taeglich 05:30 (nach dem Borg-Dump-Fenster um ca. 04:00), `RunLevel Limited`, `AllowStartIfOnBatteries`, `DontStopIfGoingOnBatteries`, `StartWhenAvailable`, `ExecutionTimeLimit 2 h`. Naechster Lauf 2026-05-29 05:30. +- Repo-Doku `docs/H_DRIVE_NEARLINE_PULL.md` Status auf "produktiv" gesetzt, Register-Snippet auf den tatsaechlich ausgefuehrten Befehl korrigiert (PowerShell-Enum `LeastPrivilege` -> `Limited`; alter Snippet haette beim ersten Aufruf einen Parameter-Binding-Fehler geworfen). +- Verifikation am Windows-PC: `Get-ScheduledTask` zeigt State `Ready`, Trigger-Start 2026-05-28T05:30, RunLevel `Limited`. +- Kein Eingriff am Host noetig; SMB-Quelle und H:/-Ziel waren bereits vorbereitet. + ### 2026-05-28 - Zweites Off-site bewusst nicht umgesetzt - Operator-Bewertung: 3-2-1-Regel ist mit aktueller Topologie erfuellt (Live + lokales Borg-Repo + Hetzner-Borg + H:/-Nearline = 4 Kopien / 3 Medien / 1 Off-site).