Make admin seed idempotent-upsert so a corrupted password can be fixed by restart
Grund: $ in SEED_ADMIN_PASSWORD wird von Docker-Compose/Portainer als Variablen-Referenz interpretiert und kann dadurch verstümmelt beim Container ankommen. Seed synct das Passwort jetzt bei jedem Start neu, solange die Variable gesetzt ist, statt nur einmalig anzulegen. README um Warnhinweis ergänzt. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
11a3753d76
commit
ca5d240cf6
@@ -102,14 +102,21 @@ Benutzername anmelden". Damit das funktioniert, muss im Portainer-Stack `JWT_SEC
|
||||
gesetzt sein (Schritt 4).
|
||||
|
||||
Ein erstes Konto legt der Server **automatisch beim Start** an, wenn
|
||||
`SEED_ADMIN_USERNAME` und `SEED_ADMIN_PASSWORD` als Stack-Env gesetzt sind (idempotent –
|
||||
läuft bei jedem Neustart mit, legt aber nur an, was noch nicht existiert). Das
|
||||
Klartext-Passwort steht dabei nur in der Portainer-Stack-Konfiguration, nie im Git-Repo –
|
||||
der Server speichert ausschließlich einen bcrypt-Hash in der Datenbank.
|
||||
`SEED_ADMIN_USERNAME` und `SEED_ADMIN_PASSWORD` als Stack-Env gesetzt sind (Upsert –
|
||||
läuft bei jedem Neustart mit und synchronisiert das Passwort neu, solange die Variable
|
||||
gesetzt ist – ein falsch übernommenes Passwort lässt sich also einfach per Neustart
|
||||
korrigieren). Das Klartext-Passwort steht dabei nur in der Portainer-Stack-Konfiguration,
|
||||
nie im Git-Repo – der Server speichert ausschließlich einen bcrypt-Hash in der Datenbank.
|
||||
|
||||
**Vorsicht bei `$` im Passwort:** Docker-Compose/Portainer interpretieren `$` in
|
||||
Env-Werten als Beginn einer Variablen-Referenz (`$xyz` wird als `${xyz}` gelesen und bei
|
||||
fehlender Definition oft still zu leer aufgelöst) – ein Passwort mit `$` kann dadurch
|
||||
unbemerkt anders ankommen, als eingetippt. Entweder jedes `$` im Passwortwert als `$$`
|
||||
escapen, oder – einfacher – ein Passwort ohne `$` verwenden.
|
||||
|
||||
Optional danach `SEED_ADMIN_PASSWORD` aus dem Stack wieder entfernen (Härtung), sobald
|
||||
das Konto einmal erfolgreich angelegt wurde – `SEED_ADMIN_USERNAME` kann stehen bleiben,
|
||||
ohne Passwort passiert dann nichts mehr. Weitere lokale Konten aktuell nur direkt in der
|
||||
das Konto wie gewünscht funktioniert – `SEED_ADMIN_USERNAME` kann stehen bleiben, ohne
|
||||
Passwort-Variable wird nichts mehr verändert. Weitere lokale Konten aktuell nur direkt in der
|
||||
Datenbank anlegbar (`INSERT INTO users …` mit einem bcrypt-Hash) – ein Verwaltungs-UI
|
||||
dafür gibt es noch nicht.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user