diff --git a/README.md b/README.md index b3588ad..6114575 100644 --- a/README.md +++ b/README.md @@ -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 ``` ---