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

8.0 KiB

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:

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.

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:
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:

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.

Selbsttragender Recovery-Koffer auf der Data-SSD

Für den speziellen Ausfall nur der System-SSD kann zusätzlich ein vollständiger Recovery-Koffer unter /data/mike-ai-recovery-kit liegen. Er enthält das verschlüsselte Bundle, den dafür benötigten Schlüssel, die gesamte Git-Historie und ein eigenständiges Startskript. Auf einem frischen Debian:

mount <DATA-PARTITION> /data
sudo /data/mike-ai-recovery-kit/reinstall-athena.sh

Nach dem einmaligen Start läuft der Wiederaufbau selbständig. Falls NVIDIA- Treiber oder der stabile Interface-Name einen Neustart erfordern, hinterlegt das Skript einen systemd-Fortsetzer, bindet /data über die vorhandene UUID dauerhaft ein und setzt den Ablauf nach dem Reboot fort. Nach drei erfolglosen Versuchen bricht es gegen eine Bootschleife ab.

Diese Bequemlichkeit besitzt bewusst eine andere Sicherheitsgrenze: Weil der Entschlüsselungsschlüssel auf derselben Data-SSD liegt, kann eine Person mit Lesezugriff auf diese SSD auch die enthaltenen Secrets entschlüsseln. Das separate Off-Host-Bundle mit getrennt verwahrtem Schlüssel bleibt daher die maßgebliche Sicherung gegen Diebstahl oder Verlust des gesamten Hosts.

Der erste selbsttragende Koffer wurde am 23. August 2026 unter /data/mike-ai-recovery-kit-20260823-c226af7 erzeugt. Der stabile Einstieg /data/mike-ai-recovery-kit zeigt auf dieses Release. Sämtliche sechs Kit-Dateien wurden erfolgreich per SHA256 geprüft, das Git-Bundle enthält den benötigten Recovery-Commit und das Reinstall-Skript bestand die Syntaxprüfung. Der Abnahmemarker lautet DATA_KIT_ACCEPTANCE_OK.