Files
mission-control-v2/docs/BACKUP.md
T
Hitonabi 8554e7b29c Feat: Voll-Zustands-Backup + getesteter Restore + taeglicher Timer
Behebt 3 von 4 Backup-Luecken (Schicht 1, lokal):
- backup.sh sichert jetzt den ECHTEN Zustand als ein Tarball mc2-state-<ts>.tar.gz:
  mem0 (Chroma+history.db), ~/.hermes (config.yaml, .env, plugins/), llama-swap config.
  Vorher wurde nur die alte/leere mc2-memory.db gesichert. chmod 600 (enthaelt .env).
- restore.sh: --list / --dry-run / [--yes] <datei|latest>; macht VOR dem Zurueckspielen
  ein Sicherheits-Backup, stoppt/startet Dienste, Health-Check. Live round-trip verifiziert.
- mc2-backup.timer/.service: taegliches Backup ~03:30 (vorher gab es KEINE Automatik).
- backend/services/backup.py delegiert an backup.sh (eine Quelle der Wahrheit); UI-Button
  + /api/system/backups zeigen die Tarballs.
- docs/BACKUP.md: Backup/Restore-Anleitung.

Offen (Schicht 2): Off-Box-Spiegel (Box ist Bare Metal -> PBS-Client oder rsync in LXC).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-27 21:25:39 +02:00

2.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.

⚠️ 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".

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.

Ein Backup von einer anderen Maschine zurückspielen: Tarball nach /srv/models/mc2-backups/ kopieren, dann restore.sh <datei>.

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.