Document validated Vaultwarden restore pattern
This commit is contained in:
@@ -33,6 +33,20 @@ Ziel:
|
||||
- Meldung: `ntfy`
|
||||
- Hermes: optional nur fuer Zusammenfassung und Auswertung
|
||||
|
||||
## 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`.
|
||||
|
||||
## Status
|
||||
|
||||
Aktuell ist hier nur die erste Repo-Vorbereitung angelegt.
|
||||
|
||||
@@ -2,6 +2,7 @@ param(
|
||||
[string]$BackupSource = "/mnt/user/backups/borg",
|
||||
[string]$RestoreRoot = "/mnt/user/backups/restore-lab/vaultwarden",
|
||||
[string]$ReportRoot = "/mnt/user/backups/restore-reports",
|
||||
[string]$BorgPassphraseFile = "/mnt/user/appdata/secrets/borg_repo_passphrase.txt",
|
||||
[switch]$WhatIf
|
||||
)
|
||||
|
||||
@@ -12,6 +13,7 @@ Write-Output "Vaultwarden restore test scaffold"
|
||||
Write-Output "BackupSource: $BackupSource"
|
||||
Write-Output "RestoreRoot: $RestoreRoot"
|
||||
Write-Output "ReportRoot: $ReportRoot"
|
||||
Write-Output "BorgPassphraseFile: $BorgPassphraseFile"
|
||||
Write-Output "Expected Borg source path inside archive: local/appdata/vaultwarden"
|
||||
|
||||
if ($WhatIf) {
|
||||
@@ -25,6 +27,7 @@ Write-Output "Planned steps:"
|
||||
Write-Output "1. Prepare restore-lab target under /mnt/user/backups/restore-lab/vaultwarden"
|
||||
Write-Output "2. Restore Vaultwarden data into an isolated test path"
|
||||
Write-Output ' Template: borg extract "$BORG_REPO" "::ARCHIVE_NAME" local/appdata/vaultwarden'
|
||||
Write-Output ' Passphrase source: $(cat /mnt/user/appdata/secrets/borg_repo_passphrase.txt)'
|
||||
Write-Output "3. Start container restoretest-vaultwarden against test data only"
|
||||
Write-Output "4. Run smoke checks against the test instance"
|
||||
Write-Output "5. Write markdown report under /mnt/user/backups/restore-reports"
|
||||
|
||||
@@ -4,14 +4,36 @@
|
||||
|
||||
- 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`: wie im bestehenden Host-Setup
|
||||
- `BORG_PASSPHRASE_FILE`: `/mnt/user/appdata/secrets/borg_repo_passphrase.txt`
|
||||
|
||||
## Ablauf
|
||||
|
||||
@@ -29,7 +51,7 @@ Archiv zuerst pruefen:
|
||||
|
||||
```bash
|
||||
export BORG_REPO='...'
|
||||
export BORG_PASSPHRASE='...'
|
||||
export BORG_PASSPHRASE="$(cat /mnt/user/appdata/secrets/borg_repo_passphrase.txt)"
|
||||
borg list "$BORG_REPO"
|
||||
```
|
||||
|
||||
@@ -95,3 +117,4 @@ rm -rf /mnt/user/backups/restore-lab/vaultwarden/data
|
||||
- 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.
|
||||
|
||||
Reference in New Issue
Block a user