# Vaultwarden Restore Runbook ## Vorbedingungen - Borg-Quelle ist verfuegbar - Secret-Datei vorhanden: `/mnt/user/appdata/secrets/vaultwarden_admin_token.txt` - Borg-Passphrase-Datei vorhanden: `/mnt/user/appdata/secrets/borg_repo_passphrase.txt` - Testpfade unter `/mnt/user/backups/restore-lab/` und `/mnt/user/backups/restore-reports/` sind freigegeben ## Bestaetigter Host-Stand - `borg` ist im Container `borg-ui` verfuegbar - `BORG_BACKUP_PATH` ist im `borg-ui`-Container auf `/backups` gesetzt - produktive Vaultwarden-Daten liegen unter `/mnt/user/appdata/vaultwarden` - produktives Admin-Token liegt unter `/mnt/user/appdata/secrets/vaultwarden_admin_token.txt` - `restore-lab` und `restore-reports` sind auf dem Host vorhanden ## Beobachtete Borg-Hinweise - beobachtetes produktives Repo: `ssh://u565255@u565255.your-storagebox.de:23/./hetzner_borg_appdata_critical` - beobachtete Archivnamen: - `Taegliche-Sicherung-2026-04-16T04:30:02.798` - `Taegliche-Sicherung-2026-04-17T04:30:31.660` - aeltere manuelle Beispiele: - `manual-backup-2026-04-12T17:17:30` - `manual-backup-2026-04-12T17:35:17` Hinweis: Vor dem ersten echten Restore-Lauf immer das aktuelle Archiv mit `borg list` erneut pruefen. ## Platzhalter - `ARCHIVE_NAME`: Borg-Archiv fuer den Restore-Test - `REPORT_DATE`: z. B. `2026-05-06` - `BORG_REPO`: Host-Borg-Repo, z. B. das produktive `critical_infra` - `BORG_PASSPHRASE_FILE`: `/mnt/user/appdata/secrets/borg_repo_passphrase.txt` ## Ablauf 1. Testpfade vorbereiten ```bash mkdir -p /mnt/user/backups/restore-lab/vaultwarden/data mkdir -p /mnt/user/backups/restore-reports rm -rf /mnt/user/backups/restore-lab/vaultwarden/data/* ``` 2. Vaultwarden-Daten aus Borg in das Restore-Lab extrahieren Archiv zuerst pruefen: ```bash export BORG_REPO='...' export BORG_PASSPHRASE="$(cat /mnt/user/appdata/secrets/borg_repo_passphrase.txt)" borg list "$BORG_REPO" ``` Restore in das Testziel: ```bash cd /mnt/user/backups/restore-lab/vaultwarden borg extract "$BORG_REPO" "::ARCHIVE_NAME" local/appdata/vaultwarden mv /mnt/user/backups/restore-lab/vaultwarden/local/appdata/vaultwarden /mnt/user/backups/restore-lab/vaultwarden/data rmdir /mnt/user/backups/restore-lab/vaultwarden/local/appdata rmdir /mnt/user/backups/restore-lab/vaultwarden/local ``` Wenn das Archiv den Pfad anders ablegt, zuerst mit `borg list "$BORG_REPO" "::ARCHIVE_NAME"` den exakten Eintrag pruefen. Zielpfad nach dem Restore: ```text /mnt/user/backups/restore-lab/vaultwarden/data ``` 3. Testcontainer starten ```bash docker compose -f /mnt/user/services/homelab/ops/restore-tests/vaultwarden-compose.test.yml up -d ``` 4. Smoke-Test ```bash curl -I http://127.0.0.1:18080 docker logs restoretest-vaultwarden --tail 50 ``` Minimal erfolgreich: - HTTP-Antwort kommt - Login-Seite ist erreichbar - Vaultwarden-Daten liegen im Restore-Lab vor 5. Testcontainer wieder stoppen ```bash docker compose -f /mnt/user/services/homelab/ops/restore-tests/vaultwarden-compose.test.yml down ``` 6. Report schreiben Ziel: ```text /mnt/user/backups/restore-reports/vaultwarden-REPORT_DATE.md ``` 7. Testdaten nach erfolgreichem Lauf bereinigen ```bash rm -rf /mnt/user/backups/restore-lab/vaultwarden/data ``` ## Festgelegte Entscheidungen - Testdaten werden nach erfolgreichem Lauf geloescht. - `ntfy` wird nicht im ersten echten Lauf eingebunden. - `ntfy` folgt spaeter, wenn der manuelle Basisablauf stabil verifiziert ist. - Die Borg-Passphrase wird fuer Restore-Tests aus einer Host-Secret-Datei gelesen, nicht aus Borg-UI-Interna.