FEat: Hinterlegt die docker-compose mit config-Dateien

This commit is contained in:
2026-09-02 19:13:44 +02:00
parent 587f76fdf2
commit 0a261e161b
7 changed files with 196 additions and 0 deletions
View File
+2
View File
@@ -12,3 +12,5 @@
# Built Visual Studio Code Extensions
*.vsix
data/
.env
+1
View File
@@ -0,0 +1 @@
{}
+42
View File
@@ -0,0 +1,42 @@
litellm_settings:
drop_params: true # unbekannte Provider-Params stillschweigend verwerfen statt Fehler
set_verbose: false
json_logs: true
request_timeout: 600
num_retries: 3
# Response-Caching über Redis
cache: true
cache_params:
type: redis
host: redis
port: 6379
password: os.environ/REDIS_PASSWORD
ttl: 600
# Logging-Callbacks (Langfuse ist optional, Keys in .env leer lassen falls ungenutzt)
success_callback: ["prometheus", "langfuse"]
failure_callback: ["prometheus"]
general_settings:
master_key: os.environ/LITELLM_MASTER_KEY
database_url: os.environ/DATABASE_URL
store_model_in_db: true
proxy_batch_write_at: 60 # Sekunden zwischen DB-Writes für Spend-Logs
allow_user_auth: true
ui_access_mode: "all" # Admin-UI unter /ui erreichbar
# Alerting (Slack optional, Webhook in .env leer lassen falls ungenutzt)
alerting: ["slack"]
alerting_threshold: 300
router_settings:
routing_strategy: usage-based-routing-v2
redis_host: redis
redis_port: 6379
redis_password: os.environ/REDIS_PASSWORD
num_retries: 3
timeout: 30
allowed_fails: 3
cooldown_time: 60
+108
View File
@@ -0,0 +1,108 @@
version: "3.9"
services:
litellm:
# litellm-database Image enthält Prisma-Migrationen für die DB-gestützte
# Verwaltung von Keys/Teams/Usern über die Admin-UI
image: ghcr.io/berriai/litellm-database:main-latest
container_name: litellm
restart: unless-stopped
ports:
- "4000:4000"
environment:
# --- Grundlegende Auth ---
- LITELLM_MASTER_KEY=${LITELLM_MASTER_KEY}
- LITELLM_SALT_KEY=${LITELLM_SALT_KEY}
# --- Datenbank (für Key-/Team-/Budget-Management, Spend-Tracking) ---
- DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@db:5432/${POSTGRES_DB}
- STORE_MODEL_IN_DB=True
# --- Redis (Caching, Rate-Limiting, Router-State) ---
- REDIS_HOST=redis
- REDIS_PORT=6379
- REDIS_PASSWORD=${REDIS_PASSWORD}
# --- Admin-UI Login (separat vom Master-Key) ---
- UI_USERNAME=${UI_USERNAME}
- UI_PASSWORD=${UI_PASSWORD}
# --- Provider API-Keys (nur füllen, was du wirklich nutzt) ---
- OPENAI_API_KEY=${OPENAI_API_KEY}
- ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY}
- AZURE_API_KEY=${AZURE_API_KEY}
- AZURE_API_BASE=${AZURE_API_BASE}
- GEMINI_API_KEY=${GEMINI_API_KEY}
- GROQ_API_KEY=${GROQ_API_KEY}
- MISTRAL_API_KEY=${MISTRAL_API_KEY}
# --- Optionale Alerts / Logging ---
- SLACK_WEBHOOK_URL=${SLACK_WEBHOOK_URL}
- LANGFUSE_PUBLIC_KEY=${LANGFUSE_PUBLIC_KEY}
- LANGFUSE_SECRET_KEY=${LANGFUSE_SECRET_KEY}
volumes:
- ./config.yaml:/app/config.yaml
command:
- "--config"
- "/app/config.yaml"
- "--port"
- "4000"
- "--num_workers"
- "2"
depends_on:
db:
condition: service_healthy
redis:
condition: service_started
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:4000/health/liveliness"]
interval: 30s
timeout: 10s
retries: 5
start_period: 30s
networks:
- litellm-network
db:
image: postgres:16-alpine
container_name: litellm-db
restart: unless-stopped
environment:
- POSTGRES_USER=${POSTGRES_USER}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
- POSTGRES_DB=${POSTGRES_DB}
volumes:
- ./data/postgres:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"]
interval: 5s
timeout: 5s
retries: 10
networks:
- litellm-network
redis:
image: redis:7-alpine
container_name: litellm-redis
restart: unless-stopped
command: ["redis-server", "--requirepass", "${REDIS_PASSWORD}", "--appendonly", "yes"]
volumes:
- ./data/redis:/data
networks:
- litellm-network
prometheus:
image: prom/prometheus:latest
container_name: litellm-prometheus
restart: unless-stopped
ports:
- "9090:9090"
volumes:
- ./prometheus.yaml:/etc/prometheus/prometheus.yml
- ./data/prometheus:/prometheus
networks:
- litellm-network
volumes:
postgres_data:
redis_data:
prometheus_data:
networks:
litellm-network:
driver: bridge
+35
View File
@@ -0,0 +1,35 @@
# === Kopieren nach ".env" und Werte anpassen ===
# Master-Key für den Zugriff auf die Proxy-API (Bearer Token für alle Requests)
# Erzeugen z.B. mit: openssl rand -hex 32
LITELLM_MASTER_KEY=sk-changeme-set-a-long-random-value
# Salt-Key wird zum Verschlüsseln der in der DB gespeicherten Keys genutzt
# NICHT nachträglich ändern, sonst werden gespeicherte Keys unlesbar
LITELLM_SALT_KEY=changeme-set-a-long-random-value
# Postgres
POSTGRES_USER=litellm
POSTGRES_PASSWORD=changeme-strong-password
POSTGRES_DB=litellm
# Redis
REDIS_PASSWORD=changeme-strong-password
# Admin-UI Login (unter http://<pi-ip>:4000/ui)
UI_USERNAME=admin
UI_PASSWORD=changeme-strong-password
# --- Provider API-Keys: nur ausfüllen, was du tatsächlich nutzt ---
OPENAI_API_KEY=
ANTHROPIC_API_KEY=
AZURE_API_KEY=
AZURE_API_BASE=
GEMINI_API_KEY=
GROQ_API_KEY=
MISTRAL_API_KEY=
# --- Optional ---
SLACK_WEBHOOK_URL=
LANGFUSE_PUBLIC_KEY=
LANGFUSE_SECRET_KEY=
+8
View File
@@ -0,0 +1,8 @@
global:
scrape_interval: 15s
scrape_configs:
- job_name: litellm
static_configs:
- targets: ["litellm:4000"]
metrics_path: /metrics