# Vollständige Bare-Metal-Wiederherstellung Dieses Dokument ist die verbindliche Anleitung für den Verlust der Athena- System-SSD. Wissen aus früheren Chats ist weder Voraussetzung noch gültige Dokumentation. ## Was woher wiederkommt | Bestandteil | Quelle beim Recovery | |---|---| | Plattform, Router, Profile, MCP-Builds und Patches | dieses Git-Repository, exakter Commit | | Qwen-, Projektor- und Bildmodelle | dokumentierte URLs und SHA256 in `config/install.env.example` beziehungsweise der gesicherten Installationskonfiguration | | Navidrome-MCP 2.2.0 samt llama.cpp-Schemafix | `platform/mcp/Dockerfile.navidrome` | | OpenWebUI-Benutzer, Chats, Arbeitsbereichsmodelle, Filter und Verbindungen | verschlüsseltes Recovery-Bundle | | Router-, WireGuard-, HA-, ARR-, Unraid- und Navidrome-Zugangsdaten | verschlüsseltes Recovery-Bundle | | Last.fm API-Key | `/etc/mike-ai/navidrome-mcp.env` im verschlüsselten Bundle | | Navidrome-Bibliothek und Benutzer | bleiben auf dem separaten Unraid-Server | Das Last.fm Shared Secret wird nicht verwendet und daher nicht gesichert. Modelldateien müssen nicht im Bundle liegen: Der Installer lädt sie erneut und verifiziert jede Datei kryptografisch. Ein vorhandenes intaktes `/data` kann den Download lediglich beschleunigen. ## Einmalige Vorbereitung Die geheime age-Identität muss **außerhalb Athenas** liegen, beispielsweise auf dem Mac und zusätzlich in einem Passwortmanager oder Offline-Datenträger: ```bash age-keygen -o athena-recovery.agekey age-keygen -y athena-recovery.agekey > athena-recovery.recipient ``` Nur die öffentliche Zeile aus `athena-recovery.recipient` wird auf Athena als `/etc/mike-ai/recovery.age-recipient` mit Modus `0600` abgelegt. Die Datei `athena-recovery.agekey` darf niemals auf Athena oder im Git liegen. ## Sicherung erzeugen Das Ziel muss nach einem SSD-Verlust noch existieren. Bevorzugt wird ein gemountetes, ausschließlich für Backups beschreibbares Verzeichnis auf Unraid; `/data` allein schützt nur vor dem Verlust der System-SSD, nicht vor Verlust des gesamten Rechners. ```bash sudo /opt/mike-ai/stack/platform/recovery/create-recovery-bundle.sh \ /PFAD/AUF/UNRAID/athena-recovery-$(date +%F).tar.age ``` Das Skript nimmt ausschließlich auf: - `/etc/mike-ai` einschließlich aller Fach-MCP-Secrets, - `/root/mike-ai-install.env`, - das lokale `runraid`-Binary, falls vorhanden, - das vollständige OpenWebUI-Datenvolume, - Prüfsummen und den eingesetzten Git-Commit. Der Klartext liegt nur in einem kurzlebigen root-only Verzeichnis unter `/tmp` und wird beim Ende entfernt. Das Ergebnis ist vollständig mit age verschlüsselt. Ohne erfolgreiche Ausgabe `RECOVERY_BUNDLE_OK` gilt die Sicherung als fehlgeschlagen. Für ein konsistentes SQLite-Abbild verwendet das Skript die Online-Backup-Schnittstelle der Datenbank. OpenWebUI, laufende LLM-Profile und MCP-Dienste bleiben während der Sicherung verfügbar. ## Wiederherstellung nach SSD-Verlust 1. Debian 12 oder 13 installieren, Netzwerk herstellen und den administrativen Benutzer aus der Installationskonfiguration anlegen. 2. Root-SSH-Zugriff mit dem vorhandenen Schlüssel herstellen. 3. Dieses Repository klonen und exakt den in `METADATA` des Bundles genannten Commit auschecken. Normalerweise ist das der Commit, mit dem die Sicherung erzeugt wurde. 4. Recovery-Bundle und `athena-recovery.agekey` temporär auf den Host kopieren. 5. Einen Befehl ausführen: ```bash sudo ./platform/recovery/restore-recovery-bundle.sh \ /root/athena-recovery-YYYY-MM-DD.tar.age \ /root/athena-recovery.agekey ``` Der Wiederhersteller: 1. installiert nur die zum Entschlüsseln benötigten Basispakete, 2. prüft Verschlüsselung, Archivstruktur, SHA256 und Git-Commit, 3. stellt Installationskonfiguration und Secrets ohne Ausgabe ihrer Werte her, 4. führt den idempotenten Hostinstaller aus, 5. signalisiert einen notwendigen NVIDIA-/Netzwerk-Reboot mit Status 20/21; danach wird derselbe Befehl erneut ausgeführt, 6. sichert den vorhandenen OpenWebUI-Stand als Rückfallarchiv und stellt dann das geprüfte OpenWebUI-Datenvolume wieder her, 7. installiert die versionierten Modelleinstellungen, Filter und MCP- Verbindungen erneut, 8. startet alle durch vorhandene Secret-Dateien freigegebenen Toolprofile, 9. prüft Navidrome, sämtliche Werkzeug-Schemas, Last.fm und den OpenWebUI- Verbindungseintrag ohne Musik- oder Zugangsdaten auszugeben. Erst die Ausgabe `BARE_METAL_RECOVERY_OK` bedeutet Erfolg. ## Navidrome-Abnahmekriterium Bei vorhandenem `LASTFM_API_KEY` müssen 45 Werkzeuge erscheinen, andernfalls 38. Playback-Werkzeuge dürfen auf Athena nicht auftauchen. Sämtliche Regex- Patterns müssen für llama.cpp vollständig mit `^…$` verankert sein. Eine öffentliche Last.fm-Trendabfrage muss funktionieren; Bibliothek, Playlists und Hörverlauf werden während der Abnahme nicht gelesen. Die Prüfung kann jederzeit wiederholt werden: ```bash sudo /opt/mike-ai/stack/platform/mcp/verify-navidrome.sh ``` ## Regelmäßige Kontrolle Mindestens nach jeder Änderung an OpenWebUI, WireGuard oder einem MCP-Secret wird ein neues Bundle erzeugt und **außerhalb Athenas** aufbewahrt. Quartalsweise wird ein Restore in einer isolierten Testinstallation durchgeführt. Eine Sicherung ohne getestete Entschlüsselung und Abnahmemarker ist nur eine Hoffnung, kein Backup. ## Geprüfter Recovery-Punkt vom 23. August 2026 Der erste vollständige Recovery-Punkt wurde mit dem Plattform-Commit `404073340c9e376103d8e3a4d045ef5231ca61ca` erzeugt. - Athena: `/data/recovery/athena-recovery-2026-08-23.tar.age` - zweite verschlüsselte Kopie auf dem Mac: `~/.config/mike-ai-recovery/bundles/athena-recovery-2026-08-23.tar.age` - private age-Identität ausschließlich auf dem Mac: `~/.config/mike-ai-recovery/athena-recovery.agekey` - öffentliche Empfängerdatei auf Athena: `/etc/mike-ai/recovery.age-recipient` Die Mac-Kopie wurde erfolgreich entschlüsselt. Sämtliche inneren SHA256- Prüfsummen, der aufgezeichnete Git-Commit und der konsistente `openwebui-data.tar.gz`-Datenbankeintrag wurden geprüft. Der produktive OpenWebUI-Datenträger wurde dabei nicht verändert. Die ältere Datei mit dem Namensbestandteil `pre-online-backup` ist kein freigegebener Recovery-Punkt. Noch organisatorisch zwingend: Die private age-Identität muss eine zweite, vom Mac unabhängige Kopie in einem Passwortmanager oder auf einem Offline- Datenträger erhalten. Ohne diese Identität ist das verschlüsselte Bundle nicht wiederherstellbar.