From 83f3c2893bf53890134963a1cffbd35a529d5a53 Mon Sep 17 00:00:00 2001 From: Florian Wilde Date: Mon, 12 Oct 2026 09:51:56 +0200 Subject: [PATCH] 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 --- .env.example | 2 ++ docker-compose.yml | 4 ++++ package.json | 2 +- 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/.env.example b/.env.example index 363279d..c820c32 100644 --- a/.env.example +++ b/.env.example @@ -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. # Rechte: chown 1001:1001, chmod 400 (der Worker verweigert lesbare Schluessel). 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) ---------------------------------------------------------- SSHKV_OIDC_ISSUER= diff --git a/docker-compose.yml b/docker-compose.yml index a20cb43..dbb905e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -4,6 +4,7 @@ # 2. Master-Key erzeugen (nur fuer den Worker lesbar, Container-Benutzer 1001): # mkdir -p geheim && head -c 32 /dev/urandom > 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 # Nur im internen Netz/VPN betreiben und einen Reverse Proxy mit TLS davorsetzen (docs/betrieb). @@ -80,6 +81,9 @@ services: container_name: sshkv-worker restart: unless-stopped 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: migrate: condition: service_completed_successfully diff --git a/package.json b/package.json index eee5f03..f0ec25b 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,7 @@ "scripts": { "dev": "next dev -p 3400", "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", "worker": "tsx src/worker/index.ts", "lint": "eslint",