Skip to content

Produktionsbetrieb

Produktions-Compose-Datei

Für den Produktionsbetrieb verwende:

bash
docker compose -f deployment/docker-compose.prod.yml up -d

Die Produktionskonfiguration unterscheidet sich von der Entwicklungsumgebung durch:

  • Keine Quell-Volume-Mounts (gebaut aus Images)
  • restart: unless-stopped für alle Dienste
  • Ressourcenlimits (CPU, Speicher)
  • Kein direkter Port-Zugriff auf Datenbank und MinIO

Secrets-Management mit SOPS + age

Für Produktionsumgebungen werden Secrets verschlüsselt mit SOPS gespeichert:

bash
# Secrets entschlüsseln (age-Key muss vorhanden sein)
sops -d deployment/secrets.enc.yaml > .env

# Deploy-Skript führt das automatisch aus
deployment/scripts/deploy.sh

Der age-Public-Key ist in deployment/secrets.enc.yaml.example dokumentiert.

TLS mit Caddy

Caddy übernimmt TLS-Terminierung und Reverse Proxy. Setze die Domain-Variable:

bash
DOMAIN=app.clavis-rallye.com

Caddy bezieht automatisch ein Let's Encrypt-Zertifikat. Die Konfiguration befindet sich in deployment/Caddyfile.production.

Umgebungsvariablen für Produktion

VariableBeschreibung
DOMAINProduktionsdomain (z. B. app.clavis-rallye.com)
JWT_SECRET_KEYJWT-Signaturschlüssel (≥32 Zeichen, zufällig)
HMAC_AUDIT_KEYHMAC-Schlüssel für Audit-Log-Kette
POSTGRES_PASSWORDDatenbankpasswort
MINIO_ACCESS_KEYMinIO-Zugangsdaten
MINIO_SECRET_KEYMinIO-Geheimschlüssel

Alle [SECRET]-markierten Variablen aus deployment/.env.example müssen gesetzt werden.