Files
mission-control-v2/docs/BACKUP.md

3.3 KiB

Backup & Restore

Sichert den nicht wiederherstellbaren Zustand der AI-Box. Code kommt aus Git, Modelle sind neu ladbar — gesichert wird nur, was sonst weg wäre.

Was im Backup ist

  • Gedächtnis: /srv/models/mem0/ (Chroma-Vektoren + history.db)
  • Hermes: ~/.hermes/config.yaml, ~/.hermes/.env (Secrets!), ~/.hermes/plugins/
  • Engine: /etc/llama-swap/config.yaml

Nicht enthalten (bewusst): GGUF-Modelle, MC2-Code (Git), venvs, systemd-Units (aus deploy.sh).

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.

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: systemctl --user list-timers mc2-backup.timer
  • Manuell (Box): bash ~/mission-control-v2/deploy/backup.sh
  • UI: Wartungs-Drawer → „Snapshot erstellen"

Wiederherstellen (Restore)

Restore läuft nur per CLI auf der Box (bewusst — er stoppt Dienste und überschreibt Configs). Vor dem Zurückspielen macht das Skript automatisch ein Sicherheits-Backup des aktuellen Zustands.

cd ~/mission-control-v2
bash deploy/restore.sh --list                 # vorhandene Backups anzeigen
bash deploy/restore.sh --dry-run latest       # zeigen, was passieren würde
bash deploy/restore.sh latest                 # neuestes wiederherstellen (mit Rückfrage)
bash deploy/restore.sh mc2-state-YYYYMMDD-HHMMSS.tar.gz   # bestimmtes Backup

Ablauf: Sicherheits-Backup → Dienste stoppen (mem0-service, mission-control-2, hermes-gateway) → Dateien zurückspielen (mem0 wird ersetzt, Configs überschrieben) → Dienste starten → Health-Check.

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.

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.