Produktionsbetrieb
Produktions-Compose-Datei
Für den Produktionsbetrieb verwende:
bash
docker compose -f deployment/docker-compose.prod.yml up -dDie Produktionskonfiguration unterscheidet sich von der Entwicklungsumgebung durch:
- Keine Quell-Volume-Mounts (gebaut aus Images)
restart: unless-stoppedfü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.shDer 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.comCaddy bezieht automatisch ein Let's Encrypt-Zertifikat. Die Konfiguration befindet sich in deployment/Caddyfile.production.
Umgebungsvariablen für Produktion
| Variable | Beschreibung |
|---|---|
DOMAIN | Produktionsdomain (z. B. app.clavis-rallye.com) |
JWT_SECRET_KEY | JWT-Signaturschlüssel (≥32 Zeichen, zufällig) |
HMAC_AUDIT_KEY | HMAC-Schlüssel für Audit-Log-Kette |
POSTGRES_PASSWORD | Datenbankpasswort |
MINIO_ACCESS_KEY | MinIO-Zugangsdaten |
MINIO_SECRET_KEY | MinIO-Geheimschlüssel |
Alle [SECRET]-markierten Variablen aus deployment/.env.example müssen gesetzt werden.