# 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, - Piper-Daten, - 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:` 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.