Files
homelab-infra/ops/restore-tests
Micha e4b0db2af6 Add Komodo bootstrap dry-run scaffold (F-09 rest)
Mirror of the Immich restore-test pattern for the Komodo bootstrap
anchor. Brings up a throwaway komodo-mongo + komodo-core +
komodo-periphery under project restoretest-komodo, isolated from
production:

- same image digests as production (mongo:7.0.32, komodo-core:2,
  komodo-periphery:2) to prove compose-level bootstrap compatibility
- restore-lab paths under /mnt/user/backups/restore-lab/komodo
- 127.0.0.1:19120 only, no LAN bind, no Traefik, no Authelia
- test periphery runs WITHOUT docker.sock mount and WITHOUT
  /mnt/user/services mount; cannot manage productive containers
- KOMODO_* secrets are throwaway placeholders hardcoded in the test
  compose; productive secrets never enter this path

Smoke test: compose config valid, mongo healthy, mongo auth-ping
with test creds, komodo-core HTTP 200/302/303/401, periphery
container running. Report under restore-reports/komodo-bootstrap-*.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-29 15:25:41 +02:00
..
2026-05-27 18:25:30 +02:00
2026-05-26 21:33:01 +02:00

Restore Tests

Kontrollierte Restore-Tests fuer homelab-infra.

Ziel:

  • Backups durch echte Test-Restores verifizieren
  • produktive Pfade nicht beschreiben
  • Testlaeufe spaeter weitgehend automatisieren

Grundregeln

  • Restore-Quelle bleibt im Backup-Bereich, z. B. /mnt/user/backups/borg
  • Test-Restores laufen nur in /mnt/user/backups/restore-lab
  • Reports landen in /mnt/user/backups/restore-reports
  • Test-Container nutzen das Praefix restoretest-
  • keine produktiven Volumes schreibend mounten
  • keine produktiven Domains fuer Testinstanzen uebernehmen

Geplante Struktur

  • schedule.md: Intervalle und Verantwortlichkeiten
  • vaultwarden-restore-test.ps1: erster Mini-Restore-Ablauf
  • vaultwarden-restore-test.sh: hosttauglicher Vaultwarden-Restore-Job
  • vaultwarden-plan.md: konkreter Vaultwarden-Testplan
  • vaultwarden-compose.test.yml: isolierte Testinstanz fuer Vaultwarden
  • gitea-restore-test.ps1: Gitea-Mini-Restore-Ablauf
  • gitea-restore-test.sh: hosttauglicher Gitea-Restore-Job
  • gitea-plan.md: konkreter Gitea-Testplan
  • gitea-compose.test.yml: isolierte Testinstanz fuer Gitea
  • paperless-restore-test.ps1: Paperless-Mini-Restore-Ablauf
  • paperless-restore-test.sh: hosttauglicher Paperless-Restore-Job
  • paperless-plan.md: konkreter Paperless-Testplan
  • paperless-compose.test.yml: isolierte Testinstanz fuer Paperless inkl. Test-Postgres und Test-Redis
  • immich-restore-test.ps1: Immich-Mini-Restore-Ablauf als Plan-/Windows-Scaffold
  • immich-restore-test.sh: hosttauglicher Immich-Restore-Job, erster echter Lauf noch offen
  • immich-plan.md: konkreter Immich-Testplan
  • immich-runbook.md: Operator-Runbook fuer den ersten Immich-Lauf
  • immich-compose.test.yml: isolierte Testinstanz fuer Immich inkl. pgvecto-rs Test-Postgres und Test-Redis
  • check-restore-freshness.ps1: woechentlicher Frische-Check fuer Dumps und Reports
  • run-restore-checks.ps1: einfacher Dispatcher fuer Restore-Jobs
  • check-restore-freshness.sh: hosttauglicher Frische-Check
  • run-restore-checks.sh: hosttauglicher Dispatcher
  • common.sh: gemeinsame Host-Helferfunktionen
  • automation-plan.md: Host-Job- und Automatisierungsmodell

Automatisierungsmodell

  • Ausfuehrung: Unraid User Script / Host-Job
  • Logik: Repo-Skripte in diesem Verzeichnis
  • Ergebnis: Markdown-Report
  • Meldung: ntfy
  • Hermes: optional nur fuer Zusammenfassung und Auswertung

Wichtig:

  • die Bash-Skripte *.sh sind die produktive Host-Variante
  • check-restore-freshness.ps1 und die *.ps1-Dateien bleiben als lokale Plan-/Hilfsvariante nutzbar
  • im Windows-Clone fehlen die /mnt/user/...-Pfade naturgemaess

Validiertes Grundmuster

Stand nach dem ersten echten Vaultwarden-Test:

  • Borg-Quelle bleibt das produktive Remote-Repo bei Hetzner
  • Borg-Zugriff laeuft praktisch ueber den vorhandenen borg-ui-Container
  • SSH-Trust wird ueber known_hosts im borg-ui-Container hergestellt
  • die Borg-Passphrase kommt fuer Restore-Tests aus einer Host-Secret-Datei
  • Restore-Ziel liegt immer getrennt unter /mnt/user/backups/restore-lab
  • Reports liegen unter /mnt/user/backups/restore-reports
  • Testinstanzen bekommen keine produktive Domain und keine Traefik-Route

Das ist das bevorzugte Muster fuer weitere dateibasierte Restore-Tests wie gitea.

Fuer datenbankgestuetzte Dienste wie paperless kommt zusaetzlich ein isolierter Dump-Restore in Test-Postgres dazu.

Status

Aktuell ist das erste validierte Muster vorhanden.

  • echter Vaultwarden-Restore am 2026-05-07 erfolgreich verifiziert
  • echter Gitea-Restore am 2026-05-07 erfolgreich verifiziert
  • echter Paperless-Restore am 2026-05-07 erfolgreich verifiziert
  • Immich-Restore-Test am 2026-05-26 vorbereitet; erster echter Lauf mit Report steht noch aus
  • Bash-Dispatcher und Bash-Restore-Jobs am 2026-05-07 erfolgreich hostseitig verifiziert
  • Restore-Lab und Report-Pfade auf dem Host angelegt
  • V1-Ablauf weiter ohne ntfy, mit Bereinigung nach Erfolg
  • naechster grosser Kandidat ist der erste echte Immich-Lauf mit Zeitmessung; erst danach in die Rotation aufnehmen

Vor dem ersten echten Testlauf muessen Zielpfade, Quellpfade und Bereinigungsschritte bewusst freigegeben werden.