Caddy-Stack (docker/) auf Stand gebracht statt entfernt
Der Stack bleibt bewusst erhalten: Er richtet sich an Betreiber OHNE eigenen Reverse-Proxy, weil Caddy das Zertifikat selbst holt und erneuert. Er war allerdings seit Februar stehengeblieben und reichte zehn Variablen nicht an den Container durch - teils sicherheitsrelevant. Behoben: - HTTPS_ENABLED ergaenzt (Default true, Caddy terminiert TLS). Fehlte bisher komplett, dadurch waere der Refresh-Cookie OHNE Secure-Attribut gesetzt worden und trust proxy falsch gewesen. - JWT_EXPIRES_IN Default von 7d auf 15m korrigiert - der Wert galt dem ACCESS-Token und stammte aus der Zeit vor dem Access-/Refresh-Pattern. Ein Access-Token mit einer Woche Lebensdauer im Browser-Speicher macht das XSS-Fenster unnoetig gross. - JWT_REFRESH_EXPIRES_IN, CORS_ORIGINS, LISTEN_ADDR, SSRF_BLOCK_PRIVATE_IPS ergaenzt. JWT_REFRESH_EXPIRES_IN stand bereits in docker/.env.example, wurde aber nie durchgereicht - dieselbe Fehlerklasse wie beim Audit-Siegel. - Caddyfile: gzip fuer /api/* deaktiviert (BREACH, CVE-2013-3587). Die Konfiguration komprimierte bisher alles, obwohl die README das fuer die API ausdruecklich ausschliesst. Statische Assets bleiben komprimiert. Mit `caddy validate` geprueft. - docker/.env.example um die neuen Variablen erweitert, dazu ein Hinweis auf Sonderzeichen im DB-Passwort (dieser Stack setzt die DATABASE_URL direkt zusammen, anders als der Entrypoint im Projektstamm). - README benennt jetzt, wann welcher Stack der richtige ist. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -839,15 +839,24 @@ docker-compose logs -f app
|
||||
- **App**: Backend + Frontend in einem Container
|
||||
- **Caddy**: Reverse-Proxy mit automatischem SSL
|
||||
|
||||
**Umgebungsvariablen (`docker/.env`):**
|
||||
> **Wann dieser Stack?** Wenn du **keinen** eigenen Reverse-Proxy betreibst –
|
||||
> Caddy holt und erneuert das SSL-Zertifikat hier selbst. Hast du bereits einen
|
||||
> Proxy davor (nginx, Nginx Proxy Manager, Traefik), nimm den Stack im
|
||||
> Projektstamm; er bringt bewusst keinen eigenen Proxy mit.
|
||||
|
||||
**Umgebungsvariablen (`docker/.env`):** – vollständige Vorlage mit Erklärungen
|
||||
in `docker/.env.example`
|
||||
|
||||
```env
|
||||
MYSQL_ROOT_PASSWORD=sicheres-root-passwort
|
||||
MYSQL_DATABASE=opencrm
|
||||
MYSQL_USER=opencrm
|
||||
MYSQL_PASSWORD=sicheres-passwort
|
||||
DB_ROOT_PASSWORD=sicheres-root-passwort
|
||||
DB_NAME=opencrm
|
||||
DB_USER=opencrm
|
||||
DB_PASSWORD=sicheres-passwort
|
||||
JWT_SECRET=sehr-langer-zufaelliger-string
|
||||
ENCRYPTION_KEY=64-zeichen-hex-string
|
||||
DOMAIN=crm.example.com
|
||||
HTTPS_ENABLED=true # Caddy terminiert TLS → Secure-Cookies an
|
||||
AUDIT_HMAC_KEY= # Siegel fürs Audit-Log, siehe oben
|
||||
RUN_SEED=true # Nur beim ersten Start
|
||||
```
|
||||
|
||||
|
||||
Reference in New Issue
Block a user