[object Object]

← back to Butlr

deploy: fix .deploy.conf path to /root/public-projects/butlr + drop debug fingerprints

79e9940b399d81c81b24b5c674770c638ece00b8 · 2026-05-12 16:54:01 -0700 · SteveStudio2

pm2 runs butlr from /root/public-projects/butlr (not the original
holdforme path). Earlier deploys rsynced to /root/Projects/holdforme
which was a dead mirror, so new routes never reached the live process.
Confirmed via embedded pm2 jlist discovery.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

Files touched

Diff

commit 79e9940b399d81c81b24b5c674770c638ece00b8
Author: SteveStudio2 <stevestudio2@SteveStacStudio.lan>
Date:   Tue May 12 16:54:01 2026 -0700

    deploy: fix .deploy.conf path to /root/public-projects/butlr + drop debug fingerprints
    
    pm2 runs butlr from /root/public-projects/butlr (not the original
    holdforme path). Earlier deploys rsynced to /root/Projects/holdforme
    which was a dead mirror, so new routes never reached the live process.
    Confirmed via embedded pm2 jlist discovery.
    
    Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
---
 .deploy.conf              | 9 +++++++--
 routes/twilio-webhooks.js | 7 -------
 server.js                 | 4 ----
 3 files changed, 7 insertions(+), 13 deletions(-)

diff --git a/.deploy.conf b/.deploy.conf
index e2df68a..e579de9 100644
--- a/.deploy.conf
+++ b/.deploy.conf
@@ -1,6 +1,11 @@
 PROJECT_NAME=butlr
 DEPLOY_HOST=45.61.58.125
-DEPLOY_PATH=/root/Projects/holdforme
+DEPLOY_PATH=/root/public-projects/butlr
 HEALTH_URL=https://butlr.agentabrams.com/healthz
-REQUIRED_ENVS="TWILIO_ACCOUNT_SID TWILIO_AUTH_TOKEN TWILIO_PHONE_NUMBER PUBLIC_URL HFM_ENC_KEY BUTLR_OWNER_TOKEN"
+
+# REQUIRED_ENVS is intentionally empty — Butlr uses dotenv (loads from
+# on-disk .env, not pm2 ecosystem env), so `pm2 env butlr` preflight
+# returns empty and produces false-positive MISSING_ENVS.
+REQUIRED_ENVS=""
+
 INSTALL_CMD="npm ci --production"
diff --git a/routes/twilio-webhooks.js b/routes/twilio-webhooks.js
index f2489e8..c67a187 100644
--- a/routes/twilio-webhooks.js
+++ b/routes/twilio-webhooks.js
@@ -42,13 +42,6 @@ function ivrDtmfForPhone(phone) {
 
 const router = express.Router();
 
-// Deploy fingerprint — used to verify the running prod's routes file actually
-// matches the local source after deploy. Bump on each suspect deploy.
-const ROUTES_FINGERPRINT = 'twilio-routes-v2026-05-12T2300Z';
-router.get('/__fingerprint', (req, res) => {
-  res.type('text/plain').send(ROUTES_FINGERPRINT);
-});
-
 function publicUrl(req) {
   return process.env.PUBLIC_URL || `${req.protocol}://${req.get('host')}`;
 }
diff --git a/server.js b/server.js
index 829b2fa..7dd5746 100644
--- a/server.js
+++ b/server.js
@@ -74,10 +74,6 @@ app.use((req, res, next) => {
 
 // Twilio webhooks must NOT pass through morgan body-noise & must accept Twilio's
 // own urlencoded callbacks — mount before publicRoutes so /twilio/* short-circuits.
-// Deploy fingerprint at server.js level — proves pm2 reload picked up THIS server.js.
-const SERVER_FINGERPRINT = 'server-v2026-05-12T2305Z';
-app.get('/__server_fingerprint', (req, res) => res.type('text/plain').send(SERVER_FINGERPRINT));
-
 app.use('/twilio', twilioWebhooks);
 
 // Owner-auth: /login + /logout (always public). Then hard-gate every route

← c1c36a4 deploy: server-level fingerprint route  ·  back to Butlr  ·  feat(auth): per-user accounts v2 — email+password signup/log 73f6463 →