Files

3.5 KiB

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
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/*
  1. Vaultwarden-Daten aus Borg in das Restore-Lab extrahieren

Archiv zuerst pruefen:

export BORG_REPO='...'
export BORG_PASSPHRASE="$(cat /mnt/user/appdata/secrets/borg_repo_passphrase.txt)"
borg list "$BORG_REPO"

Restore in das Testziel:

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:

/mnt/user/backups/restore-lab/vaultwarden/data
  1. Testcontainer starten
docker compose -f /mnt/user/services/homelab/ops/restore-tests/vaultwarden-compose.test.yml up -d
  1. Smoke-Test
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
  1. Testcontainer wieder stoppen
docker compose -f /mnt/user/services/homelab/ops/restore-tests/vaultwarden-compose.test.yml down
  1. Report schreiben

Ziel:

/mnt/user/backups/restore-reports/vaultwarden-REPORT_DATE.md
  1. Testdaten nach erfolgreichem Lauf bereinigen
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.