[object Object]

← back to Designerwallcoverings

deploy: pm2 port 9925 + nginx :80 vhost, gemini env loader

f29cf2736c8f5da841e571b10e9c28a49caf20fd · 2026-05-10 03:19:48 -0700 · Steve Abrams

Files touched

Diff

commit f29cf2736c8f5da841e571b10e9c28a49caf20fd
Author: Steve Abrams <steve@designerwallcoverings.com>
Date:   Sun May 10 03:19:48 2026 -0700

    deploy: pm2 port 9925 + nginx :80 vhost, gemini env loader
---
 ecosystem.config.js | 20 ++++++++++++++++++++
 server.js           | 15 +++++++++++++++
 2 files changed, 35 insertions(+)

diff --git a/ecosystem.config.js b/ecosystem.config.js
new file mode 100644
index 0000000..ed16cbd
--- /dev/null
+++ b/ecosystem.config.js
@@ -0,0 +1,20 @@
+module.exports = {
+  apps: [{
+    name: 'designerwallcoverings.ai',
+    script: 'server.js',
+    cwd: '/root/Projects/designerwallcoverings',
+    instances: 1,
+    exec_mode: 'fork',
+    env: {
+      NODE_ENV: 'production',
+      PORT: 9925,
+      BIND: '127.0.0.1',
+    },
+    env_file: '/root/Projects/designerwallcoverings/.env',
+    autorestart: true,
+    max_memory_restart: '256M',
+    out_file: '/root/.pm2/logs/designerwallcoverings.ai-out.log',
+    error_file: '/root/.pm2/logs/designerwallcoverings.ai-err.log',
+    merge_logs: true,
+  }],
+};
diff --git a/server.js b/server.js
index 3992eea..2461598 100644
--- a/server.js
+++ b/server.js
@@ -17,6 +17,21 @@ const multer = require('multer');
 const path = require('path');
 const fs = require('fs');
 
+try {
+  const envPath = path.join(__dirname, '.env');
+  if (fs.existsSync(envPath)) {
+    for (const line of fs.readFileSync(envPath, 'utf8').split(/\r?\n/)) {
+      const m = /^\s*([A-Z_][A-Z0-9_]*)\s*=\s*(.*)$/.exec(line);
+      if (!m) continue;
+      const [, k, raw] = m;
+      if (process.env[k]) continue;
+      let v = raw.trim();
+      if ((v.startsWith('"') && v.endsWith('"')) || (v.startsWith("'") && v.endsWith("'"))) v = v.slice(1, -1);
+      process.env[k] = v;
+    }
+  }
+} catch (_) {}
+
 const PORT = parseInt(process.env.PORT || '9925', 10);
 const BIND = process.env.BIND || '127.0.0.1';
 const GA_ID = 'G-69X70WPXJ1';

← 469fcec initial scaffold + GA gtag — designerwallcoverings.ai room-m  ·  back to Designerwallcoverings  ·  dw site: log Gemini image-classify usage to cost-tracker 579e226 →