7.3 KiB
Noch benötigte Wiederherstellungsartefakte
Diese Liste definiert, was vor einer Löschung oder grundlegenden Änderung des alten Hosts noch gesichert beziehungsweise präzisiert werden muss.
Statuswerte:
- gesichert: vollständig im Git oder anderweitig reproduzierbar
- offen: muss vor dem Neuaufbau erledigt werden
- lokal geheim: darf nicht unverschlüsselt ins Git
1. Modelle und Prüfsummen – offen, höchste Priorität
Für jedes tatsächlich benötigte Modell werden erfasst:
- exakte Downloadquelle und Repository-ID
- Revision oder Commit
- Dateiname und Splitreihenfolge
- Dateigröße
- SHA256 jeder Datei
- Lizenz
- Zielpfad
- zugehöriger mmproj/MTP-Tensor
- getestete Runtime und Profilzuordnung
Das Ergebnis wird als platform/models/manifest.local.yaml erzeugt. Die Datei
enthält keine Geheimnisse, kann aber wegen möglicher privater Quellen zunächst
lokal bleiben. Eine bereinigte Fassung gehört anschließend ins Git.
Pflichtrollen:
- Qwen Fast IQ4-MIX
- Qwen Medium/Large/Ultra IQ4_XS Pure
- Qwen Uncensored Abliterated Q4_K_M samt passendem F16-Projektor
- BF16 Vision-Projektor
- Whisper large-v3-turbo
- FLUX.2 klein
- XTTS-v2, per Digest gepinntes CUDA-12.1-Image und CPML-Akzeptanz
- XTTS-Stimme
Annmarie Nele, RTX-3060-UUID und persistenter Modellcache - internes TTS-Gateway mit Queue, Sprachsegmentierung und Piper-Fallback
- Piper
piper-tts1.6.0 und Stimmede_DE-thorsten-highals CPU-Fallback
2. Externe Komponenten und Commits – teilweise gesichert
Im Repository gesichert sind inzwischen:
- getrennte MCP-Container und internes Netz
- Web-MCP-Fassade sowie gepinnte TinySearch-/SearXNG-Images
- ARR-MCP 1.0.1 und der aktuell eingesetzte kompakte Sonarr-Patch
- offizieller GitHub-MCP 1.10.1 hinter
mcp-proxy0.12.0; GitHub- und Python-Basisimage per Digest gepinnt - GitHub-Transport stateless und mit OpenWebUIs Python-MCP-Client geprüft
- Home-Assistant-Relay ohne eingebettetes Token
- Startlogik und Health-Checks
Noch extern zu beschaffen und exakt festzuhalten sind:
- Home-Assistant-MCP
- MUA-Plugin auf dem Unraid-HomeServer sowie die root-only gesicherte
/etc/mike-ai/mua-mcp.env - LLama-GUI, falls sie erhalten bleibt
Jede noch externe Komponente bekommt zusätzlich:
- Installationsbefehl
- Systembenutzer
- systemd-/Docker-Datei
- Health-Check
- benötigte Environment-Namen ohne Werte
- Liste read-only und schreibender Werkzeuge
3. Basissystem-Bootstrap – umgesetzt, Praxistest offen
install.sh erstellt inzwischen:
- Paketquellen und benötigte Debian-Pakete
- NVIDIA-Treiber und exakte Version
- CUDA Toolkit und Buildabhängigkeiten
- Docker und Compose
- die benötigten Container-Runtimes und Dienstbenutzer in Images
- Verzeichnisse, Eigentümer und Dateirechte
- Firewallregeln
- Journalgrößenlimit
- automatische Sicherheitsupdates nach bewusstem Freigabemodell
Das Skript darf weder formatieren noch Modelle löschen. Destruktive Speicheroperationen bleiben ein separater, ausdrücklich bestätigter Schritt.
4. Secret-Verfahren – lokal geheim
Benötigt wird ein festes Verfahren für:
- Home-Assistant-Token
- Sonarr-/Radarr-API-Schlüssel
- Unraid-Zugang
- Navidrome-Benutzer und Last.fm API-Key
- optionale GitHub-, Hugging-Face- und Brave-Schlüssel
- SSH-Hostschlüssel und bekannte Hosts
Umgesetzt ist ein age-verschlüsseltes Bundle über
platform/recovery/create-recovery-bundle.sh und der zugehörige
Bare-Metal-Restore. Noch standortspezifisch festzulegen ist ausschließlich das
externe Zielverzeichnis auf Unraid.
Verbindlich bleiben:
- verschlüsseltes Backupformat, beispielsweise age oder ein Passwortmanager
- Besitzer und Rechte je Environment-Datei
- Rotation und Widerruf
- Restore ohne Ausgabe der Werte in Terminal- oder Modellkontext
- Funktionstest mit ausschließlich Statuscode, niemals Tokenanzeige
5. Netzwerk und DNS – Vorlage umgesetzt, Standortwerte offen
Dokumentiert werden müssen:
- endgültiger Hostname
- statische Adresse oder DHCP-Reservierung
- DNS-Name
- erlaubte Client-Netze
- Firewallmatrix pro Port
- TLS/Reverse Proxy, sofern verwendet
- Verhalten bei Neustart und fehlendem Netzwerk
Zielmatrix:
| Port | Zugriff |
|---|---|
| 22 | nur Administration |
| 8080 | ausschließlich WireGuard-Gateway (Open WebUI) |
| 8081 | ausschließlich WireGuard-Gateway (Router) |
| 8084 | localhost |
| 8085 | localhost |
| 8000 | localhost |
| 5240 | optional nur Administration |
Open WebUI und Router selbst besitzen keine Host-Portfreigaben. Zusätzlich zum
Repository muss die verschlüsselt gesicherte Fritzbox-Clientdatei als
/etc/mike-ai/wireguard/fritz-athena.conf (0600) wiederhergestellt werden.
6. Speicherlayout – offen
Vor dem Neuaufbau festlegen:
- System, Modelle, Caches und Ergebnisse auf getrennten Mounts
- Dateisystem des Modelllaufwerks
- Mindestreserve und Warnschwellen
- Docker-Datenpfad
- Hugging-Face- und Python-Cachepfade
- Backupziel
- Aufbewahrungsregeln für Bilder, Audio und Logs
Empfehlung: System unter 85 Prozent, Modelllaufwerk unter 90 Prozent halten.
7. Runtime-Locks – teilweise gesichert
Bereits gesichert:
- llama.cpp-Commit
- zentrale Python-Versionen für FLUX und Piper
- TinySearch-/SearXNG-Image-Digests
Noch offen:
- vollständiges
pip freezeje produktivem Venv - CUDA-kompatible Wheel-Quelle
- FLUX-Revision
- Piper-Paketversion und exakter Stimmenname
- Whisper-Commit und Buildoptionen
- Docker-Engine-/Compose-Version
8. Betriebsdaten und Aufbewahrung – offen
Festlegen, welche Daten persistent sein sollen:
- generierte Bilder: standardmäßig zeitlich begrenzt
- Audiodateien: standardmäßig nicht dauerhaft
- Vision-Cache: flüchtig
- Chatverläufe: nicht Bestandteil dieser Plattform
- Benchmarkresultate: eigenes Repository
- Logs: ohne Prompt- und Tool-Antwortinhalte
9. Ende-zu-Ende-Installer – weitgehend implementiert, Praxistest offen
Der Ablauf ist jetzt in install.sh zusammengeführt:
bootstrap-host
install-runtime
verify-model-manifest
install-platform
restore-secrets
enable-selected-mcp-profiles
run-acceptance-tests
platform/mcp/install-tools.sh installiert den Webbereich automatisch und
aktiviert HA, ARR, Navidrome und Unraid nur bei vorhandenen
Secret-/Programmdateien.
platform/migration/restore-reference-backup.sh importiert eine bestehende
OpenWebUI-Datenbank und ausschließlich die freigegebenen Tool-Secrets, ohne
experimentelle Altcontainer zurückzubringen. Der Leerhost-Probelauf wird auf
Athena praktisch protokolliert und seine Korrekturen fließen direkt in den
Installer zurück.
Ein Container-Backup gilt nur dann als vollständig, wenn nach docker save
nicht bloß das Archiv und seine Prüfsumme existieren: Ein isolierter
Probeimport muss außerdem jede erwartete Image-ID beziehungsweise den
unveränderlichen Registry-Digest und die OCI-Build-Revision bestätigen. Die
OpenWebUI-Datenbank wird immer zusammen mit genau diesem geprüften Image
gesichert und wiederhergestellt.
Jeder Schritt muss wiederholbar, einzeln prüfbar und bei Fehlern abbrechbar sein. Ein fehlgeschlagener Schritt darf keinen halb aktivierten Dienst hinterlassen.
10. Dokumentations-Abnahmekriterium
Der alte Host darf erst verworfen werden, wenn eine fachkundige Person mit:
- diesem Repository,
- den dokumentierten Modellquellen,
- dem verschlüsselten Secret-Backup
einen leeren Host ohne Wissen aus früheren Chats vollständig in Betrieb nehmen kann.