LiteLLM¶
Einleitung und Rolle¶
LiteLLM ist das zentrale KI-Gateway der Infrastruktur. Es bündelt Modellanbieter hinter einer einheitlichen API, stellt eine Web-UI bereit und dient als stabiler Endpunkt für Clients wie Open WebUI oder Agenten. Zusätzlich ist LiteLLM mit Langfuse verbunden, sodass erfolgreiche und fehlgeschlagene Requests dort als Traces und Observability-Daten erfasst werden können.
Die öffentliche Route lautet litellm.marcosudau.com. LiteLLM nutzt eigene Authentifizierung beziehungsweise API-Keys.
Persistente Daten und Backup-Relevanz¶
| Pfad | Bedeutung | Backup-Relevanz |
|---|---|---|
/opt/selfhost/stacks/litellm/config.yaml |
Modell- und Callback-Konfiguration | hoch |
/opt/selfhost/secrets/litellm.env |
Secrets und Betriebsvariablen | hoch, Werte nicht dokumentieren |
/opt/selfhost/data/litellm/postgresql |
PostgreSQL-Datenbank | hoch |
/opt/selfhost/data/litellm/oauth-tokens |
persistente OAuth-Tokens für Provider wie ChatGPT/GitHub Copilot | sehr hoch, nicht verändern |
OAuth-Tokens dürfen nicht versehentlich gelöscht, migriert oder überschrieben werden.
Stack, Container und Docker Compose¶
| Eigenschaft | Wert |
|---|---|
| Stack-Verzeichnis | /opt/selfhost/stacks/litellm/ |
| Compose-Projekt | litellm |
| App-Container | litellm |
| DB-Container | litellm-postgresql |
| App-Image | docker.litellm.ai/berriai/litellm-database:main-stable |
| DB-Image | postgres:16-alpine |
| Portbindung | 127.0.0.1:4000:4000 |
| Config-Mount | /opt/selfhost/stacks/litellm/config.yaml:/app/config.yaml:ro |
| OAuth-Mount | /opt/selfhost/data/litellm/oauth-tokens:/app/oauth-tokens |
Der App-Container startet mit --config /app/config.yaml --port 4000.
Route und Caddy¶
| Registry-ID | Hostname | Typ | Upstream |
|---|---|---|---|
litellm |
litellm.marcosudau.com |
reverse_proxy |
http://127.0.0.1:4000 |
Hostname-Änderungen sind kritisch, weil Clients, UI-Konfigurationen, API-Base-URLs und Integrationen diesen Hostnamen verwenden können.
Zugehörige Dienste und Abhängigkeiten¶
| Dienst | Rolle |
|---|---|
| PostgreSQL | LiteLLM-Datenbank |
| Langfuse | Observability/Tracing über Callback-Konfiguration |
| Open WebUI | möglicher Client |
| Hermes/OpenClaw | mögliche Agenten-Clients |
| Caddy | HTTPS-Reverse-Proxy |
Secrets und Umgebungsvariablen¶
Die Secret-Datei liegt unter /opt/selfhost/secrets/litellm.env. Werte werden nicht dokumentiert.
| Key | Zweck |
|---|---|
LITELLM_MASTER_KEY |
API-/Admin-Schlüssel |
LITELLM_DATABASE_URL |
Datenbankverbindung |
LITELLM_SALT_KEY |
interne Kryptografie/Hashing |
LITELLM_UI_USERNAME, LITELLM_UI_PASSWORD |
UI-Zugang |
LANGFUSE_SECRET_KEY, LANGFUSE_PUBLIC_KEY, LANGFUSE_HOST |
Langfuse-Callback |
CHATGPT_TOKEN_DIR, GITHUB_COPILOT_TOKEN_DIR |
persistente OAuth-Token-Verzeichnisse |
| Provider-Keys | Modellanbieter/API-Zugänge |
Wichtig: Für Langfuse wird LANGFUSE_HOST verwendet, nicht LANGFUSE_BASE_URL.
Betrieb und Prüfung¶
sudo docker compose -f /opt/selfhost/stacks/litellm/docker-compose.yml ps
curl -I http://127.0.0.1:4000/health/liveliness
curl -I https://litellm.marcosudau.com
Typische Stolperfallen: Tab-Zeichen in YAML, doppelte Env-Keys, interaktive OAuth-Device-Flows und versehentlich entfernte OAuth-Tokens.