Files
homelab-infra/ops/restore-tests/hetzner-snapshot-runbook.md
T
Micha c4ba67b55c Activate Hetzner snapshot restore test after live validation
Codex first live run passed (SUCCESS, 7 snapshots, single-file restore from .zfs/snapshot; report hetzner-snapshot-2026-06-23.md) with no ENV overrides. Set runbook status to active, document the run, and add the monthly cadence (15th, cron 0 6 15 * *) to schedule.md and the restore-tests README. Remaining host step: create the Unraid User Script restore-hetzner-snapshot-monthly.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 13:15:58 +02:00

45 lines
2.1 KiB
Markdown

# Hetzner Storage Box Snapshot Restore - Runbook
Typ: Runbook · Stand: 2026-06-23 · Status: aktiv (live validiert 2026-06-23)
Belegt den Off-site-Schutz der Hetzner Storage Box. Append-only ist bewusst NICHT
umgesetzt (DECISIONS 2026-06-01); der Schutz ist snapshot-basiert (DECISIONS
2026-06-11): operative Borg-Creds koennen weiter `prune`/`compact`, die ZFS-
Snapshots der Box sind hostseitig nicht loeschbar (taeglich 05:30 UTC, Retention 7 Tage).
## Was der Test tut
`ops/restore-tests/hetzner-snapshot-restore-test.sh` (Dispatcher: `hetzner-snapshot`):
1. listet `.zfs/snapshot/` auf der Box (READ-ONLY, via SFTP aus dem `borg-ui`-Container)
2. zaehlt Snapshots (Retention) + prueft das Alter des neuesten aus dessen Namen
3. holt eine kleine Datei (`<repo>/README`) aus dem neuesten Snapshot, prueft Groesse + SHA256
4. loescht die Temp-Datei und schreibt einen Report nach `/mnt/user/backups/restore-reports/`
Verbindung (user/host/port/Repo-Verzeichnis) wird aus der in `borg-ui` konfigurierten
Borg-Repo-URL abgeleitet; SSH-Key + `known_hosts` liegen bereits im Container. Kein
Secret im Skript, kein Schreibzugriff, kein `prune`/`compact`.
## Manuell belegter Referenzlauf (2026-06-23, Codex)
- Box `u565255.your-storagebox.de`, `.zfs/snapshot` sichtbar
- Snapshots `2026-06-17`..`2026-06-23`, je `05:30` -> 7 Tage Retention
- neuester: `Automatic-2026-06-23T05-30-24`
- Probe `hetzner_borg_appdata_critical/README`, 73 B, SHA256 erzeugt, Temp geloescht
## Live-Validierung (2026-06-23, Codex): erfolgreich
Erstlauf ohne ENV-Anpassung gruen (`SUCCESS`), Defaults passten direkt:
- Report: `/mnt/user/backups/restore-reports/hetzner-snapshot-2026-06-23.md`
- 7 Snapshots gefunden, neuester `Automatic-2026-06-23T05-30-24`
- Einzeldatei-Restore aus `.zfs/snapshot` erfolgreich
ENV-Override (`SNAPSHOT_DIR`, `PROBE_FILE`, `SNAPSHOT_NAME_GLOB`,
`SNAPSHOT_SSH_OPTS`, `MIN_SNAPSHOTS`, `MAX_SNAPSHOT_AGE_HOURS`) bleibt fuer
kuenftige Abweichungen verfuegbar.
**Verbleibender Host-Schritt (Codex/Du):** Unraid-User-Script
`restore-hetzner-snapshot-monthly` anlegen (Cron `0 6 15 * *`), Vorlage in
`unraid-user-scripts.md`.