README: die Geheimnisse in PowerShell erzeugen
Der bisherige Befehl war Bash und lief in Windows PowerShell 5.1 nicht — dort gibt es weder printf noch openssl. Die PowerShell-Fassung steht jetzt zuerst, Bash daneben. Zwei Fallen sind darin vermerkt, beide bereits hineingetreten: RandomNumberGenerator::Fill gibt es erst ab .NET 6; Windows PowerShell 5.1 laeuft auf .NET Framework und kennt nur ::Create().GetBytes(). Set-Content -Encoding utf8 schreibt in 5.1 ein BOM voran. Dann heisst die erste Variable nicht DB_PASSWORD, und der Stack startet mit einer fehlenden Angabe, deren Grund man nicht sieht. Der Inhalt ist ohnehin ASCII. Dazu der Hinweis, dass Get-Random hier nicht taugt: es ist nicht kryptografisch sicher, und erzeugt wird ein Token-Signaturgeheimnis. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -78,11 +78,35 @@ Die Ports sind an `127.0.0.1` gebunden, also vom Internet aus zu. Ob
|
||||
|
||||
## Die vier Geheimnisse
|
||||
|
||||
Sie werden **erzeugt**, nicht irgendwo abgeholt. Das Token für die Resourcen
|
||||
kommt später und woanders her: aus der laufenden Lite-Oberfläche.
|
||||
|
||||
**PowerShell** — schreibt die fertige `.env`:
|
||||
|
||||
```powershell
|
||||
function New-Secret([int]$n){ $b = New-Object byte[] $n; [System.Security.Cryptography.RandomNumberGenerator]::Create().GetBytes($b); ($b | ForEach-Object { $_.ToString('x2') }) -join '' }
|
||||
@("DB_PASSWORD=$(New-Secret 16)","MINIO_ROOT_PASSWORD=$(New-Secret 16)","API_TOKEN_HMAC_SECRET=$(New-Secret 32)","ADMIN_PASSWORD=$(New-Secret 12)","PUBLIC_URL=https://fivecdn.d4rkst3r.de","PROXY_NETWORK=proxy") | Set-Content -Encoding ascii .env
|
||||
```
|
||||
|
||||
Zwei Fallen stecken darin, beide schon hineingetreten:
|
||||
|
||||
- `RandomNumberGenerator::Create()` und **nicht** `::Fill` — letzteres gibt es
|
||||
erst ab .NET 6, Windows PowerShell 5.1 kennt es nicht.
|
||||
- `-Encoding ascii` und **nicht** `utf8` — PowerShell 5.1 schreibt sonst ein
|
||||
BOM voran, und dann heißt die erste Variable `DB_PASSWORD`.
|
||||
- `Get-Random` wäre die naheliegende Wahl und die falsche: es ist nicht
|
||||
kryptografisch sicher, und hier wird ein Token-Signaturgeheimnis erzeugt.
|
||||
|
||||
**Bash / Linux:**
|
||||
|
||||
```bash
|
||||
openssl rand -hex 16 # DB_PASSWORD
|
||||
openssl rand -hex 16 # MINIO_ROOT_PASSWORD
|
||||
openssl rand -hex 32 # API_TOKEN_HMAC_SECRET (muss 32 Byte sein)
|
||||
openssl rand -hex 12 # ADMIN_PASSWORD
|
||||
printf 'DB_PASSWORD=%s
|
||||
MINIO_ROOT_PASSWORD=%s
|
||||
API_TOKEN_HMAC_SECRET=%s
|
||||
ADMIN_PASSWORD=%s
|
||||
PUBLIC_URL=https://fivecdn.d4rkst3r.de
|
||||
PROXY_NETWORK=proxy
|
||||
' "$(openssl rand -hex 16)" "$(openssl rand -hex 16)" "$(openssl rand -hex 32)" "$(openssl rand -hex 12)" > .env
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
Reference in New Issue
Block a user