C12: Off-Box-Backup-Spiegel auf den Proxmox-Host (rsync)
backup.sh spiegelt nach dem lokalen Tarball die Backups per rsync aufs Proxmox (root@192.168.178.108:/var/lib/vz/mc2-backups) -- Retention via --delete mitgezogen, chmod 600 erhalten, best-effort (Fehlschlag = lokal gilt trotzdem). restore.sh kennt den Spiegel: --list zeigt Off-Box, --pull-offsite holt alles zurueck, und fehlt ein Backup lokal, wird es automatisch vom Proxmox gezogen (Platte-tot-Fall). Nebenbei latenten Abbruch in list_backups bei leerem Ordner gefixt (set -e + leeres Glob). Auth: dedizierter, gehaerteter Key ~/.ssh/mc2_offsite. Live E2E verifiziert. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
+23
-8
@@ -13,8 +13,17 @@ Nicht enthalten (bewusst): GGUF-Modelle, MC2-Code (Git), venvs, systemd-Units (a
|
||||
Jedes Backup ist ein Tarball `mc2-state-<zeitstempel>.tar.gz` unter `/srv/models/mc2-backups/`,
|
||||
`chmod 600` (enthält `.env`). Es werden die letzten **14** behalten.
|
||||
|
||||
> ⚠️ Das Tarball enthält Secrets und liegt aktuell auf **derselben Platte** wie die Daten.
|
||||
> Für echten Desaster-Schutz noch eine Off-Box-Kopie einrichten (PBS / rsync). Siehe „Offen".
|
||||
## Off-Box-Spiegel (C12) — zweite Kopie WEG von der Box
|
||||
Nach jedem lokalen Backup spiegelt `backup.sh` die Tarballs per `rsync` auf ein **zweites Gerät**
|
||||
(Default: **Proxmox-Host** `root@192.168.178.108:/var/lib/vz/mc2-backups`). Stirbt die NVMe der
|
||||
Box, liegen die Backups noch auf dem Proxmox. Die Retention (14) wird per `--delete` mitgezogen,
|
||||
`chmod 600` bleibt erhalten. Der Off-Box-Sync ist **best-effort**: schlägt er fehl, gilt das
|
||||
lokale Backup trotzdem als erfolgreich (Warnung im Log).
|
||||
|
||||
- **Auth:** eigener SSH-Key `~/.ssh/mc2_offsite` (nur für dieses Backup), im Proxmox in
|
||||
`root/.ssh/authorized_keys` **gehärtet** eingetragen: `from="<Box-IP>"`, kein Port-/Agent-/
|
||||
X11-Forwarding, kein PTY → der Key kann nur rsync-Backup, keinen Voll-Root-Fernzugang.
|
||||
- **Ziel/Key überschreibbar:** `MC_BACKUP_OFFSITE` (leer = Off-Box aus) und `MC_BACKUP_OFFSITE_KEY`.
|
||||
|
||||
## Backup erstellen
|
||||
- **Automatisch:** systemd-Timer `mc2-backup.timer`, täglich ~03:30. Status:
|
||||
@@ -38,10 +47,16 @@ Ablauf: Sicherheits-Backup → Dienste stoppen (`mem0-service`, `mission-control
|
||||
`hermes-gateway`) → Dateien zurückspielen (mem0 wird **ersetzt**, Configs überschrieben) →
|
||||
Dienste starten → Health-Check.
|
||||
|
||||
Ein Backup von einer **anderen** Maschine zurückspielen: Tarball nach
|
||||
`/srv/models/mc2-backups/` kopieren, dann `restore.sh <datei>`.
|
||||
### Wenn die Box-Platte tot ist (Off-Box-Restore)
|
||||
`restore.sh` kennt den Off-Box-Spiegel: fehlt ein Backup lokal, holt es sich das Skript
|
||||
automatisch vom Proxmox. Kein manuelles Kopieren nötig.
|
||||
|
||||
## Offen / TODO
|
||||
- **Off-Box-Spiegel** (Schicht 2): Box ist Bare Metal (kein Proxmox-Gast → kein vzdump).
|
||||
Saubere Wege: Proxmox Backup Server + `proxmox-backup-client` ODER rsync in einen
|
||||
vzdump-gesicherten LXC. Noch nicht eingerichtet.
|
||||
```bash
|
||||
bash deploy/restore.sh --list # zeigt lokal UND Off-Box (Proxmox)
|
||||
bash deploy/restore.sh --pull-offsite # ganzen Off-Box-Bestand nach lokal spiegeln
|
||||
bash deploy/restore.sh latest # zieht das jüngste — vom Proxmox, falls lokal leer
|
||||
```
|
||||
|
||||
## Erledigt
|
||||
- **Off-Box-Spiegel (C12):** rsync auf den Proxmox-Host, live E2E verifiziert (2026-07-03).
|
||||
Box ist Bare Metal (kein Proxmox-Gast → kein vzdump), daher aktiver Push statt vzdump-Pull.
|
||||
|
||||
Reference in New Issue
Block a user