103 lines
3.9 KiB
Markdown
103 lines
3.9 KiB
Markdown
# Backup und Wiederherstellung
|
|
|
|
## Athena
|
|
|
|
`mike-ai-backup` erzeugt alle fünf Stunden ein Archiv unter
|
|
`/data/docker-backups` und behält 14 Tage. Gesichert werden:
|
|
|
|
- `/etc/mike-ai` mit lokaler Konfiguration,
|
|
- Router-Zustand und erzeugte Bilder,
|
|
- der kanonische Stack als zusätzlicher Snapshot.
|
|
|
|
Nicht in das Archiv gehören die großen Modellgewichte unter `/data/models`.
|
|
Sie bleiben auf der Daten-SSD oder werden anhand der gepinnten Angaben in
|
|
`config/install.env.example` erneut geladen. Die Dashboard-Historie liegt
|
|
dauerhaft unter `/data/llama-dashboard`.
|
|
|
|
Für FLUX.2 Klein 9B müssen vor einem erneuten Download die Bedingungen der
|
|
beiden Black-Forest-Labs-Repositories im Hugging-Face-Konto akzeptiert sein.
|
|
Außerdem muss die in `HF_TOKEN_FILE` angegebene Token-Datei wiederhergestellt
|
|
oder neu erzeugt werden. Der Token selbst ist absichtlich nicht Bestandteil
|
|
des Git-Repositories oder des Athena-Backups.
|
|
|
|
Portainers lokale Konfiguration liegt im Docker-Volume `portainer_data` und
|
|
wird zusammen mit den übrigen nicht reproduzierbaren Volumes gesichert und
|
|
wiederhergestellt.
|
|
|
|
### Neuaufbau
|
|
|
|
1. Debian installieren und `/data` wieder am bisherigen Pfad einhängen.
|
|
2. Dieses Repository klonen.
|
|
3. Installationsdatei ausfüllen und Installation starten:
|
|
|
|
```bash
|
|
sudo ./install.sh --config /root/mike-ai-install.env
|
|
```
|
|
|
|
4. Letztes Datenarchiv einspielen:
|
|
|
|
```bash
|
|
sudo ./restore.sh --check /data/docker-backups/athena-latest.tar.gz
|
|
sudo ./restore.sh /data/docker-backups/athena-latest.tar.gz
|
|
sudo ./smoke-test.sh
|
|
```
|
|
|
|
`--check` liest das komplette gzip-Archiv und prüft dessen sichere
|
|
`/backup`-Struktur sowie die benötigten Konfigurations- und Volume-Bäume, ohne
|
|
Container oder Dateien zu verändern. Der reguläre Restore extrahiert und
|
|
verwendet anschließend ausschließlich diesen einen geprüften Baum.
|
|
|
|
Das Restore verändert weder SSH noch LAN, WireGuard, Kernel, Partitionen oder
|
|
Mounts.
|
|
|
|
## Unraid
|
|
|
|
Hermes und die Fach-MCPs sind kein Bestandteil des Athena-Backups. Sie werden
|
|
durch das vorhandene Unraid-Appdata-Backup gesichert:
|
|
|
|
- `/mnt/nvme-storage/appdata/Hermes-Agent`
|
|
- die jeweiligen Appdata-Verzeichnisse der MCP-Container
|
|
- DockerMan-Templates unter
|
|
`/boot/config/plugins/dockerMan/templates-user/`
|
|
|
|
Container-Images stammen aus den dokumentierten Registries beziehungsweise den
|
|
eigenen Gitea-Repositories. Damit besteht die Wiederherstellung aus
|
|
Appdata-Restore plus Neuerstellung über die jeweilige Template-XML.
|
|
|
|
### Hermes Cron/Bot-Chat auf Unraid
|
|
|
|
Der offizielle Hermes-Build `0.21.0` mit Upstream-Stand `4b30b917` entfernt im
|
|
Cron-Zustellprozess fälschlich `HERMES_HOME`. Bei einem Docker-Datenverzeichnis
|
|
unter `/opt/data` findet `deliver=bot-chat:<profil>` dadurch vorhandene Profile
|
|
nicht. Bis zur Übernahme des Upstream-Fixes bindet die Unraid-Vorlage dieses
|
|
idempotente Startskript ein:
|
|
|
|
- Host: `/mnt/nvme-storage/appdata/Hermes-Agent/patches/025-cron-profile-root-fix`
|
|
- Container: `/etc/cont-init.d/025-cron-profile-root-fix` (read-only)
|
|
- Quelle: `platform/hermes/025-cron-profile-root-fix`
|
|
|
|
Das Skript entfernt nur die bekannte fehlerhafte Zeile. Ist sie in einem neuen
|
|
Image nicht mehr vorhanden, bleibt der Workaround automatisch wirkungslos. Es
|
|
stellt außerdem `/usr/local/bin/hermes` wieder her, weil der offizielle
|
|
Container den vom eigenen Doctor erwarteten CLI-Link derzeit nicht anlegt.
|
|
|
|
Nach einem Restore die Datei mit Modus `0755` ins Appdata kopieren, den Mount in
|
|
der DockerMan-Vorlage kontrollieren und den Container neu erstellen. Prüfung:
|
|
|
|
```bash
|
|
docker logs Hermes-Agent 2>&1 | grep cron-profile-root-fix
|
|
docker exec Hermes-Agent hermes cron doctor
|
|
```
|
|
|
|
## Kontrolle
|
|
|
|
```bash
|
|
docker compose --env-file /etc/mike-ai/stack.env ps
|
|
sudo ./restore.sh --check /data/docker-backups/athena-latest.tar.gz
|
|
curl -fsS http://192.168.1.212:8099/health
|
|
sudo ./smoke-test.sh
|
|
```
|
|
|
|
Anschließend einen Hermes-Chat, einen Router-Aufruf und je eine kleine
|
|
read-only-Abfrage der benötigten MCPs testen.
|