Files
AI-Profile-Router/README.md
T

100 lines
4.3 KiB
Markdown

# Lokale KI-Plattform
Reproduzierbarer Docker-Stack für einen privaten Qwen-/llama.cpp-Host mit
Open WebUI, Profilumschaltung, integrierter Vision, lokaler Websuche und
WireGuard-Isolation.
## Zielbild
- Debian 13 als schlanker GPU-Host
- llama.cpp selbst gebaut und auf einen geprüften Commit festgelegt
- vier schaltbare Profilcontainer plus ein isolierter Experimentalcontainer;
davon ist immer exakt ein Inferenzcontainer aktiv
- `/fast`, `/medium`, `/long` und `/ultra` über den Profile Router
- `/ultra`: getestetes text-only 256K-Profil (IQ4_XS Pure, beide GPUs,
80:20); etwa 68 Token/s und erfolgreicher 220K-Prompt-Fülltest
- Open WebUI als einzige normale Oberfläche
- SearXNG/Web-MCP ohne externen API-Schlüssel
- zentrale MCP-Werkzeugebene: getrennte Container für Web, HA, ARR, Unraid
und Sandbox, gemeinsam nutzbar durch Open WebUI und andere Clients
- KI-Dienste ausschließlich über die WireGuard-Adresse erreichbar
- KI-Ausgangsverkehr über das Heimnetz, bei Tunnelausfall fail-closed
- keine Secrets, Chats, Logs oder Modelldateien im Repository
## Schnellstart
Auf einem frisch installierten Debian 12/13 amd64:
```bash
cp config/install.env.example config/install.env
chmod 600 config/install.env
editor config/install.env
sudo ./install.sh --config config/install.env
```
Installiert werden Docker CE, NVIDIA Container Toolkit, WireGuard, der
gepinnt gebaute llama.cpp-Server, die Modelle und der komplette Compose-Stack.
Bei einer erstmaligen NVIDIA-Treiberinstallation fordert das Skript einen
Neustart an; danach wird derselbe Befehl erneut ausgeführt.
## Dienste
| Dienst | Erreichbarkeit | Zweck |
|---|---|---|
| Open WebUI | `<WG-IP>:8080` | Chat und Administration |
| Profile Router | `<WG-IP>:8081` | OpenAI-kompatible API, Profilwahl |
| llama.cpp | nur Docker-intern | Inferenz und integrierte Vision |
| Profile Controller | nur Docker-intern | eng begrenzter Containerwechsel |
| Piper | nur Docker-intern | lokale deutsche Sprachausgabe |
| MCP-Tool-Stack | nur Docker-intern | Web, Home Assistant, ARR und Unraid |
Piper-TTS ist ein reproduzierbarer Kerndienst; STT und Bildgenerierung bleiben
optionale Dienste. Web-, Home-Assistant-,
ARR- und Unraid-Werkzeuge besitzen dagegen bereits getrennte Container unter
`platform/mcp/`. Open WebUI erreicht sie ausschließlich über das interne
`mike-ai-tools`-Netz; llama.cpp erhält keine MCP-Konfiguration und keine
Infrastruktur-Secrets. Die Bildanalyse ist Bestandteil des multimodalen
Qwen-Modells.
Open WebUI erhält über die vorgesehenen statischen Anpassungspunkte ein globales
Dark-Theme namens **Midnight Aurora**. CSS und Start-Loader liegen unter
`platform/openwebui/theme/` und werden schreibgeschützt in den Container
eingebunden. Der Hintergrund bewegt sich bewusst langsam; Browser mit aktivierter
Option „Bewegung reduzieren“ erhalten automatisch eine unbewegte Variante.
## Dokumentation
- [Roadmap für den neuen Host](docs/NEW_HOST_ROADMAP.md)
- [Zielarchitektur und Sicherheitsgrenzen](docs/ARCHITECTURE.md)
- [Installation und Abnahme](docs/INSTALLATION.md)
- [WireGuard-Heimseite](docs/WIREGUARD_HOME_PEER.md)
- [Betrieb und Profilwechsel](docs/OPERATIONS.md)
- [Sicherheitsmodell](docs/SECURITY.md)
- [Disaster Recovery](docs/DISASTER_RECOVERY.md)
- [Protokoll des Athena-Leerhostaufbaus](docs/ATHENA_REBUILD_LOG.md)
- [Komponenten](docs/COMPONENTS.md)
## Wichtige Dateien
```text
install.sh kompletter Bootstrap
config/install.env.example öffentliche Konfigurationsvorlage
compose.yaml produktiver Stack
platform/docker/llama-cpp/Dockerfile CUDA-llama.cpp-Build
platform/docker/profile-controller/ sichere Profilsteuerung
router/ OpenAI-kompatibler Profile Router
```
## Sicherheitsregeln
- `config/install.env` ist lokal, Modus 0600, und wird ignoriert.
- API-, Controller-, WebUI- und WireGuard-Schlüssel entstehen erst am Host.
- Nur der kleine Profile Controller sieht den Docker-Socket.
- llama.cpp veröffentlicht weder Port noch WebUI.
- Ein Blackhole-Fallback verhindert Traffic-Leaks bei WireGuard-Ausfall.
- Das Uni-Netz und das Heimnetz dürfen diesen Host nicht als Transit benutzen.
Die Profilwerte sind Ausgangswerte. Nach dem Neuaufbau werden RTX 5080 und
RTX 3060 mit der bestehenden Standard-Testserie neu vermessen, bevor die zweite
GPU in ein Produktionsprofil einfließt.