Docker-Deployment

Noirdoc mit Docker Compose bereitstellen.

Voraussetzungen

Stellen Sie vor Beginn sicher, dass Sie Folgendes haben:

  • Docker Engine 24 oder neuer
  • Docker Compose V2 (in Docker Desktop enthalten oder über das Paket docker-compose-plugin installierbar)
  • Einen API-Key von mindestens einem unterstützten LLM-Provider (OpenAI, Anthropic, Azure OpenAI oder OpenRouter)

Encryption-Key generieren

Noirdoc verschluesselt alle Provider-API-Keys und sensible Konfigurationsdaten im Ruhezustand mit einem symmetrischen Fernet-Key. Generieren Sie einen, bevor Sie starten:

python -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())"

Speichern Sie die Ausgabe sicher ab — Sie benoetigen sie in Ihrer docker-compose.yml. Wenn Sie diesen Key verlieren, koennen verschluesselte Provider-Keys nicht wiederhergestellt werden.

Standalone-Deployment

Der schnellste Weg, um loszulegen, ist der Standalone-Modus. Erstellen Sie eine docker-compose.yml mit folgendem Inhalt:

services:
  proxy:
    build: .
    ports:
      - "8000:8000"
    environment:
      - MODE=standalone
      - DATABASE_URL=postgresql+asyncpg://noirdoc:secret@postgres:5432/noirdoc
      - REDIS_URL=redis://redis:6379/0
      - ENCRYPTION_KEY=your-fernet-key
      - STANDALONE_BEARER_TOKEN=your-secret-token
      - STANDALONE_PROVIDER=openai
      - STANDALONE_PROVIDER_KEY=sk-your-openai-key
    depends_on:
      - postgres
      - redis

  postgres:
    image: postgres:16-alpine
    environment:
      POSTGRES_USER: noirdoc
      POSTGRES_PASSWORD: secret
      POSTGRES_DB: noirdoc
    volumes:
      - pgdata:/var/lib/postgresql/data

  redis:
    image: redis:7-alpine
    volumes:
      - redisdata:/data

volumes:
  pgdata:
  redisdata:

Ersetzen Sie your-fernet-key, your-secret-token und sk-your-openai-key durch Ihre tatsaechlichen Werte.

Stack starten

docker compose up -d

Deployment überpruefen

curl http://localhost:8000/health

Die erwartete Antwort:

{
  "status": "ok",
  "version": "1.0.0",
  "mode": "standalone"
}

Ersten Request senden

curl http://localhost:8000/v1/chat/completions \
  -H "Authorization: Bearer your-secret-token" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-5.4-mini",
    "messages": [
      {"role": "user", "content": "Fasse den Fall von Max Mustermann, geboren am 15.03.1985, zusammen."}
    ]
  }'

Noirdoc pseudonymisiert den Namen und das Datum, bevor die Anfrage an OpenAI weitergeleitet wird, und stellt die Originalwerte in der Antwort wieder her.

Fuer die Multi-Tenant-Cloud-Modus-Konfiguration siehe die Konfigurationsreferenz.

Caddy für HTTPS hinzufuegen

Fuer Produktions-Deployments, die über das Internet erreichbar sind, fuegen Sie Caddy als Reverse-Proxy mit automatischem TLS hinzu:

  caddy:
    image: caddy:2-alpine
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile
      - caddy_data:/data
    depends_on:
      - proxy

Erstellen Sie eine Caddyfile im selben Verzeichnis:

api.ihredomain.de {
    reverse_proxy proxy:8000
}

Caddy beschafft und erneuert automatisch ein Let’s-Encrypt-Zertifikat für Ihre Domain.

Aktualisierung

Um auf eine neue Noirdoc-Version zu aktualisieren, laden Sie die neuesten Aenderungen und bauen Sie das Image neu:

docker compose down
docker compose build --no-cache
docker compose up -d

Datenbankmigrationen werden beim Start automatisch ausgefuehrt. Erstellen Sie vor einem Upgrade immer ein Backup Ihres PostgreSQL-Volumes.

Nächste Schritte