All checks were successful
Container-Image bauen und veröffentlichen / build-and-push (push) Successful in 1m17s
Weiterleitungen hingen am containerinternen Port 3000: Die Middleware baute sie aus req.nextUrl.origin. Sie wertet jetzt X-Forwarded-Host und -Proto aus, ersatzweise den Host-Header. NEXTAUTH_URL ist damit optional und wird nicht mehr auf localhost:3000 vorbelegt. Der Container legt beim ersten Start selbst einen Admin an. Ohne ADMIN_PASSWORD wird ein Zufallspasswort erzeugt und einmalig ins Log geschrieben; bisher musste seed-admin von Hand nachgeholt werden. Ein mit anderem NEXTAUTH_SECRET verschlüsseltes Cookie erzeugte bei jedem Request einen JWTSessionError samt Stacktrace. Die Middleware löscht das Cookie jetzt beim Umleiten, der Logger meldet den Fall in einer Zeile. Die Prüfung nutzt das type-Feld, da Klassennamen im Produktions-Build minifiziert sind. Getestet auf Port 8080: Weiterleitung nach localhost:8080/auth/signin, Passwort im Erststart-Log, veraltetes Cookie mit Max-Age=0 entfernt, keine Stacktraces mehr. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
34 lines
1.3 KiB
YAML
34 lines
1.3 KiB
YAML
services:
|
||
syncova-policies:
|
||
image: git.jfritzsche.de/jf/syncova-policies:latest
|
||
# Zum lokalen Bauen stattdessen:
|
||
# build: .
|
||
container_name: syncova-policies
|
||
restart: unless-stopped
|
||
ports:
|
||
- "3000:3000"
|
||
environment:
|
||
# Pflicht – erzeugen mit:
|
||
# node -e "console.log(require('crypto').randomBytes(32).toString('base64'))"
|
||
# Wird das Secret nachträglich geändert, sind alle Sitzungen ungültig.
|
||
NEXTAUTH_SECRET: ${NEXTAUTH_SECRET:?NEXTAUTH_SECRET muss gesetzt sein}
|
||
DATABASE_URL: file:/app/data/syncova.db
|
||
|
||
# NEXTAUTH_URL bewusst NICHT vorbelegt: Die Anwendung erkennt Host und
|
||
# Port selbst aus der Anfrage (trustHost). Ein fester Wert würde
|
||
# Weiterleitungen auf genau diesen Port zwingen. Nur setzen, wenn ein
|
||
# Reverse-Proxy keine X-Forwarded-Header schickt:
|
||
# NEXTAUTH_URL: https://datenschutz.example.de
|
||
|
||
# Erster Admin-Zugang, nur beim allerersten Start relevant.
|
||
# ADMIN_PASSWORD leer lassen -> Zufallspasswort, wird einmalig ins
|
||
# Container-Log geschrieben (docker compose logs syncova-policies).
|
||
ADMIN_EMAIL: ${ADMIN_EMAIL:-admin@syncova.de}
|
||
ADMIN_NAME: ${ADMIN_NAME:-Administrator}
|
||
ADMIN_PASSWORD: ${ADMIN_PASSWORD:-}
|
||
volumes:
|
||
- syncova-data:/app/data
|
||
|
||
volumes:
|
||
syncova-data:
|