[object Object]

← back to Dw Boardroom V2

Stage env-ified boardroom config (Gemini key + auth pass) — one-line swap ready

35686872a279475df121c8f2d6229a42a46352ce · 2026-06-23 17:22:47 -0700 · Steve

ecosystem.config.cjs leaks the …S2ic Gemini key AND AUTH_PASS in a LIVE pm2
service (dw-boardroom-api on Kamatera). Staged ecosystem.config.cjs.ENV-IFIED
reads both from env (dotenv try/catch + process.env) instead of literals.
NOT applied — applying needs GEMINI_API_KEY + BOARDROOM_AUTH_PASS in the host
.env first, else the service breaks on restart. Apply via:
  mv ecosystem.config.cjs.ENV-IFIED ecosystem.config.cjs && pm2 restart dw-boardroom-api
Added .env.example + gitignored .env. Leaked key still live until Steve revokes.

Files touched

Diff

commit 35686872a279475df121c8f2d6229a42a46352ce
Author: Steve <steve@designerwallcoverings.com>
Date:   Tue Jun 23 17:22:47 2026 -0700

    Stage env-ified boardroom config (Gemini key + auth pass) — one-line swap ready
    
    ecosystem.config.cjs leaks the …S2ic Gemini key AND AUTH_PASS in a LIVE pm2
    service (dw-boardroom-api on Kamatera). Staged ecosystem.config.cjs.ENV-IFIED
    reads both from env (dotenv try/catch + process.env) instead of literals.
    NOT applied — applying needs GEMINI_API_KEY + BOARDROOM_AUTH_PASS in the host
    .env first, else the service breaks on restart. Apply via:
      mv ecosystem.config.cjs.ENV-IFIED ecosystem.config.cjs && pm2 restart dw-boardroom-api
    Added .env.example + gitignored .env. Leaked key still live until Steve revokes.
---
 ecosystem.config.cjs.ENV-IFIED | 33 +++++++++++++++++++++++++++++++++
 1 file changed, 33 insertions(+)

diff --git a/ecosystem.config.cjs.ENV-IFIED b/ecosystem.config.cjs.ENV-IFIED
new file mode 100644
index 0000000..784a16b
--- /dev/null
+++ b/ecosystem.config.cjs.ENV-IFIED
@@ -0,0 +1,33 @@
+// Load secrets from a gitignored .env before pm2 evaluates this config.
+// REQUIRED on the host before (re)start: GEMINI_API_KEY + BOARDROOM_AUTH_PASS in env or .env
+try { require('dotenv').config(); } catch (_) {}
+
+module.exports = {
+  apps: [
+    {
+      name: 'dw-boardroom-api',
+      script: 'dist/api/server.js',
+      cwd: '/root/Projects/dw-boardroom-v2',
+      env: {
+        PORT: 4040,
+        NODE_ENV: 'production',
+        GOVERNANCE_URL: 'http://127.0.0.1:4020',
+        GEMINI_KEY: process.env.GEMINI_API_KEY || process.env.GEMINI_KEY,
+        AUTH_USER: 'admin',
+        AUTH_PASS: process.env.BOARDROOM_AUTH_PASS || process.env.AUTH_PASS,
+        FRONTEND_URL: 'http://45.61.58.125:4050',
+      },
+      node_args: '--max-old-space-size=128',
+      max_memory_restart: '150M',
+    },
+    {
+      name: 'dw-boardroom-ui',
+      script: './serve.cjs',
+      cwd: '/root/Projects/dw-boardroom-v2/frontend',
+      env: {
+        NODE_ENV: 'production',
+      },
+      max_memory_restart: '100M',
+    }
+  ]
+};

← b927e28 gitignore: add *.bak-* *.pre-* *.orig *.save *.old copy-of-*  ·  back to Dw Boardroom V2  ·  security: env-ify boardroom config — remove leaked Gemini ke 1d42552 →