Files
AI-Profile-Router/docs/RECOVERY.md
T

124 lines
5.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Backup und Wiederherstellung
## Athena – geprüfter Sicherungsstand vom 16. September 2026
`mike-ai-backup` läuft und sichert im Fünf-Stunden-Takt nach
`/data/docker-backups` (14 Tage Aufbewahrung). Die aktuell geprüften Mounts sichern:
- `/etc/mike-ai` einschließlich lokaler Konfiguration und Secrets,
- `/opt/mike-ai` einschließlich der bereitgestellten Checkouts,
- die Volumes `router-images`, `router-state` und `portainer_data`.
Der neue WebRTC-Sprachadapter liegt unter
`/opt/mike-ai/stack/services/athena-realtime-voice`. Ein manueller Lauf der
vorhandenen Backup-Software am 16. September 2026 um 15:02 Uhr hat ihn
eingeschlossen: Im Archiv `athena-2026-09-16T13-02-56.tar.gz` wurden sowohl
`compose.yaml` als auch `services/athena-realtime-voice/server.py` geprüft.
Das OpenClaw-Plugin auf Unraid liegt außerhalb dieses Athena-Backups; seine
Quelle ist im Git-Repository unter `integrations/openclaw-athena-talk` erfasst.
Piper-Daten sind kein aktueller Sicherungsbestand. Modellgewichte unter
`/data/models` und das reproduzierbare Whisper-Volume gehören nicht zu diesen
Backup-Mounts. Ein Backup ausschließlich auf `/data` schützt nicht vor deren Ausfall.
Die verschlüsselten Notfallpakete über `athena-export-backup.timer` laufen
ebenfalls im Fünf-Stunden-Takt; beim Abgleich war der Timer aktiv und der
letzte Lauf am 16. September 2026 um 13:50 Uhr verzeichnet. Sie
liegen unter `/data/emergency-backups`. Schutz vor Datenplattenausfall setzt
eine außerhalb Athenas aufbewahrte Kopie voraus.
Die externe Restic-Sicherung über `athena-disaster-backup.timer` ist derzeit
nicht eingerichtet: Der Timer ist zwar aktiviert, aber
`/etc/mike-ai/disaster-backup.env` fehlt. Bis ein externes
Ziel konfiguriert und ein erfolgreicher Lauf geprüft wurde, darf diese Ebene nicht als
vorhandener Schutz eingeplant werden. Ein vollständiger Restore wurde in
diesem Auftrag nicht ausgeführt.
### Applio-Stimmen
Die verschlüsselten Notfallpakete enthalten die selbst trainierten
Applio-Stimmen vollständig:
- `/data/voice/applio/logs`: `.pth`-Gewichte, `.index`-Dateien und
Trainings-Zwischenstände,
- `/data/voice/applio/datasets`: verwendete Trainingsdaten,
- `/data/voice/applio/mikes-applio-ui`: Auftragsdatenbank der Oberfläche,
- `/data/voice/applio/models/pretraineds/custom`: benutzerdefinierte
Pretrain-Dateien.
Erneut ladbare Predictor-, Embedder- und Standard-Pretrain-Caches bleiben
ausgeschlossen. Die breite externe Restic-Sicherung umfasst, sobald sie
konfiguriert und aktiviert ist, ohnehin das gesamte Verzeichnis
`/data/voice`.
### Wiederherstellung und Versionsgrenze
Die geprüften Quell- und Compose-Dateien liegen im Git; ein frischer Clone
enthält jedoch keine Secrets, Modellgewichte, Trainingsdaten oder sonstigen
persistenten Nutzerdaten. Die lokalen `/etc/mike-ai`-Werte und die
Backup-Archive bleiben daher für eine vollständige Wiederherstellung nötig.
Die alten Live-Checkouts zeigen zudem ältere Commits als Doggo, obwohl die
geprüften Quelldateien inhaltlich übereinstimmen; siehe [Live-Stand](LIVE_STATE.md).
Vor einem Restore sind
Archivinhalt, Aktualität und Kompatibilität der zugehörigen Restore-Skripte
zu prüfen. Bestehende lokale Änderungen niemals blind überschreiben.
Die Host-Regel gilt unverändert: **Athena niemals herunterfahren oder neu
starten und ihre Erreichbarkeit nicht gefährden.** Eine Neuinstallation ist
keine normale Wartungsmaßnahme am erreichbaren Remote-Host.
Für einen begrenzten Rückfall des Modellservers den aktuellen
[Updatebericht](UPDATE_AUDIT_20260915.md) und die tatsächlich vorhandenen
lokalen Images prüfen. Der [b10930-Bericht](LLAMA_B10930_UPDATE_20260912.md)
beschreibt nur einen älteren Stand.
## 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.