diff --git a/DEPLOYMENT_ADMIN.md b/DEPLOYMENT_ADMIN.md index c0567cf..e9f3392 100644 --- a/DEPLOYMENT_ADMIN.md +++ b/DEPLOYMENT_ADMIN.md @@ -145,37 +145,54 @@ Jetzt mit dem gerade gebauten Image statt einem Wegwerf-Container – robuster a Ad-hoc-`npm install` (das kann mit dem bekannten npm-Fehler „Tracker 'idealTree' already exists" fehlschlagen): ```bash -docker compose run --rm admin node admin/hash-password.js "dein-neues-passwort" +docker compose run --rm admin node admin/hash-password.js "dein-neues-passwort" | sed 's/\$/$$/g' ``` -Gibt einen bcrypt-Hash aus (beginnt mit `$2a$` oder `$2b$`) – merken/kopieren. -Zufälliges Session-Secret erzeugen: +Gibt einen bcrypt-Hash aus, bei dem jedes `$` bereits verdoppelt ist (`$$2a$$12$$...`) – +**genau so, mit den doppelten `$`, in B7 einfügen.** Docker Compose interpretiert einzelne +`$` in `env_file`-Werten nämlich selbst als Variablen (siehe Warnung weiter unten, falls +das schiefgeht) – `$$` ist Compose' eigene Escape-Regel dafür, kein Tippfehler. + +Zufälliges Session-Secret erzeugen (rein hexadezimal, kein `$` enthalten, keine +Verdopplung nötig): ```bash docker compose run --rm admin node -e "console.log(require('crypto').randomBytes(32).toString('hex'))" ``` Auch kopieren. **Optional – zweiten Benutzer anlegen** (z. B. für Lara): denselben Hash-Befehl nochmal -mit ihrem Passwort ausführen und den Hash ebenfalls kopieren. Ein Session-Secret reicht -für alle Benutzer, das muss nicht nochmal erzeugt werden. +mit ihrem Passwort ausführen und den (verdoppelten) Hash ebenfalls kopieren. Ein +Session-Secret reicht für alle Benutzer, das muss nicht nochmal erzeugt werden. ```bash -docker compose run --rm admin node admin/hash-password.js "ihr-neues-passwort" +docker compose run --rm admin node admin/hash-password.js "ihr-neues-passwort" | sed 's/\$/$$/g' ``` ### B7. `~/stack/admin.env` mit echten Werten befüllen +Am einfachsten mit `nano` (kein Heredoc nötig): ```bash -cat > ~/stack/admin.env <<'EOF' +nano ~/stack/admin.env +``` +Inhalt (Beispiel – deine Werte aus B6 einsetzen, die Hashes **mit den doppelten `$`** +genau so wie von `sed` ausgegeben, nicht die ursprüngliche, unverdoppelte Variante): +``` NODE_ENV=production ADMIN_USERNAME=pascal -ADMIN_PASSWORD_HASH= -SESSION_SECRET= -EOF -chmod 600 ~/stack/admin.env +ADMIN_PASSWORD_HASH=$$2a$$12$$dein.eigentlicher.hash.hier +SESSION_SECRET=dein-hex-string-hier ``` -**Nur falls du einen zweiten Benutzer angelegt hast:** vor dem `EOF` noch zwei weitere -Zeilen einfügen (Muster lässt sich mit `_3`, `_4`, ... beliebig fortsetzen): +**Nur falls du einen zweiten Benutzer angelegt hast**, zwei weitere Zeilen ergänzen +(Muster lässt sich mit `_3`, `_4`, ... beliebig fortsetzen): ``` ADMIN_USERNAME_2=lara -ADMIN_PASSWORD_HASH_2= +ADMIN_PASSWORD_HASH_2=$$2a$$12$$laras.hash.hier +``` +Speichern: `Strg+O`, `Enter`, `Strg+X`. Danach: +```bash +chmod 600 ~/stack/admin.env +``` +**Kontrolle** (jeder Hash muss inklusive der verdoppelten `$` **63 Zeichen** lang sein – +60 für den eigentlichen bcrypt-Hash + 3 zusätzliche `$`): +```bash +grep HASH ~/stack/admin.env | awk -F= '{print $1": "length($2)" Zeichen"}' ``` ### B8. DNS bei IONOS