fix(deploy): Prisma im Worker buendeln, Worker-Benutzer waehlbar (#007)
Im Docker-Stapel startete der Worker nicht: pnpm legt @prisma/client im Standalone-Ordner nicht dort ab, wo die ESM-Aufloesung sucht. Der Client wird jetzt mitgebuendelt. Docker-Secrets ohne Swarm tragen die Rechte der Host-Datei. Wer den Master-Key nicht auf UID 1001 umschreiben kann, setzt stattdessen SSHKV_WORKER_USER auf den Eigentuemer der Datei. Gesamter Stapel geprueft: migrate, web und worker gesund. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -27,6 +27,8 @@ SSHKV_MASTER_KEY_FILE=./geheim/master.key
|
|||||||
# Betrieb: Datei auf dem Docker-Host, die als Secret nur in den Worker kommt.
|
# Betrieb: Datei auf dem Docker-Host, die als Secret nur in den Worker kommt.
|
||||||
# Rechte: chown 1001:1001, chmod 400 (der Worker verweigert lesbare Schluessel).
|
# Rechte: chown 1001:1001, chmod 400 (der Worker verweigert lesbare Schluessel).
|
||||||
SSHKV_MASTER_KEY_HOST_FILE=./geheim/master.key
|
SSHKV_MASTER_KEY_HOST_FILE=./geheim/master.key
|
||||||
|
# Benutzer, unter dem der Worker laeuft (muss die Datei lesen duerfen). Standard 1001:1001.
|
||||||
|
# SSHKV_WORKER_USER=1001:1001
|
||||||
|
|
||||||
# --- OIDC (authentik) ----------------------------------------------------------
|
# --- OIDC (authentik) ----------------------------------------------------------
|
||||||
SSHKV_OIDC_ISSUER=
|
SSHKV_OIDC_ISSUER=
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
# 2. Master-Key erzeugen (nur fuer den Worker lesbar, Container-Benutzer 1001):
|
# 2. Master-Key erzeugen (nur fuer den Worker lesbar, Container-Benutzer 1001):
|
||||||
# mkdir -p geheim && head -c 32 /dev/urandom > geheim/master.key
|
# mkdir -p geheim && head -c 32 /dev/urandom > geheim/master.key
|
||||||
# sudo chown 1001:1001 geheim/master.key && sudo chmod 400 geheim/master.key
|
# sudo chown 1001:1001 geheim/master.key && sudo chmod 400 geheim/master.key
|
||||||
|
# (oder SSHKV_WORKER_USER auf den Eigentuemer der Datei setzen)
|
||||||
# 3. docker compose up -d
|
# 3. docker compose up -d
|
||||||
# Nur im internen Netz/VPN betreiben und einen Reverse Proxy mit TLS davorsetzen (docs/betrieb).
|
# Nur im internen Netz/VPN betreiben und einen Reverse Proxy mit TLS davorsetzen (docs/betrieb).
|
||||||
|
|
||||||
@@ -80,6 +81,9 @@ services:
|
|||||||
container_name: sshkv-worker
|
container_name: sshkv-worker
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
command: ["./start.sh", "worker"]
|
command: ["./start.sh", "worker"]
|
||||||
|
# Muss die Master-Key-Datei lesen duerfen (0400). Standard ist der Benutzer im Abbild;
|
||||||
|
# alternativ den Eigentuemer der Datei eintragen, z. B. SSHKV_WORKER_USER=1000:1000.
|
||||||
|
user: "${SSHKV_WORKER_USER:-1001:1001}"
|
||||||
depends_on:
|
depends_on:
|
||||||
migrate:
|
migrate:
|
||||||
condition: service_completed_successfully
|
condition: service_completed_successfully
|
||||||
|
|||||||
+1
-1
@@ -11,7 +11,7 @@
|
|||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "next dev -p 3400",
|
"dev": "next dev -p 3400",
|
||||||
"build": "next build",
|
"build": "next build",
|
||||||
"build:worker": "esbuild src/worker/index.ts --bundle --platform=node --target=node24 --format=esm --outfile=dist/worker.mjs --banner:js=\"$(cat deploy/worker-banner.js)\" --external:@prisma/client --external:@node-rs/argon2 --external:pg-native --external:cpu-features --external:*.node",
|
"build:worker": "esbuild src/worker/index.ts --bundle --platform=node --target=node24 --format=esm --outfile=dist/worker.mjs --banner:js=\"$(cat deploy/worker-banner.js)\" --external:@node-rs/argon2 --external:pg-native --external:cpu-features --external:*.node",
|
||||||
"start": "next start -p 3400",
|
"start": "next start -p 3400",
|
||||||
"worker": "tsx src/worker/index.ts",
|
"worker": "tsx src/worker/index.ts",
|
||||||
"lint": "eslint",
|
"lint": "eslint",
|
||||||
|
|||||||
Reference in New Issue
Block a user