syncova-policies/docker-entrypoint.sh
Weapie c357057b69
All checks were successful
Container-Image bauen und veröffentlichen / build-and-push (push) Successful in 1m17s
Container-Betrieb: Port-Erkennung, Erst-Admin und Sitzungs-Cookies
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>
2026-09-07 17:01:22 +02:00

26 lines
1.0 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/sh
set -e
if [ -z "$NEXTAUTH_SECRET" ]; then
echo "FEHLER: NEXTAUTH_SECRET ist nicht gesetzt." >&2
echo "Erzeugen mit: node -e \"console.log(require('crypto').randomBytes(32).toString('base64'))\"" >&2
echo "Achtung: Wird das Secret später geändert, sind alle bestehenden" >&2
echo "Sitzungen ungültig und Benutzer müssen sich neu anmelden." >&2
exit 1
fi
echo "Wende ausstehende Datenbank-Migrationen an (${DATABASE_URL})…"
node ./prisma-cli/node_modules/prisma/build/index.js migrate deploy --schema ./prisma/schema.prisma
# Beim allerersten Start einen Admin-Zugang anlegen. Das Skript bricht von
# selbst ab, sobald Benutzer existieren – bei jedem weiteren Start passiert
# also nichts. Ohne ADMIN_PASSWORD wird ein Zufallspasswort erzeugt und hier
# einmalig ausgegeben.
if ! node scripts/seed-admin.js; then
echo "WARNUNG: Admin-Zugang konnte nicht angelegt werden." >&2
echo "Manuell nachholen mit: docker exec -it <container> node scripts/seed-admin.js" >&2
fi
echo "Starte Syncova Policies…"
exec "$@"