repoint agency site to agency.agentabrams.com (owned CF zone): email/footer/deploy host + one-shot golive.sh (deploy+nginx conf.d+certbot)
Files touched
M .deploy.confM golive.shD golive2.shM public/index.html
Diff
commit b0ab28aa5c6f483acc748f50050433a1318bd85b
Author: Steve Abrams <steve@designerwallcoverings.com>
Date: Thu Aug 13 12:51:04 2026 -0700
repoint agency site to agency.agentabrams.com (owned CF zone): email/footer/deploy host + one-shot golive.sh (deploy+nginx conf.d+certbot)
---
.deploy.conf | 4 ++--
golive.sh | 54 +++++++++++++++++++-----------------------------------
golive2.sh | 41 -----------------------------------------
public/index.html | 6 +++---
4 files changed, 24 insertions(+), 81 deletions(-)
diff --git a/.deploy.conf b/.deploy.conf
index 907db3d..20c6a84 100644
--- a/.deploy.conf
+++ b/.deploy.conf
@@ -1,4 +1,4 @@
PROJECT_NAME=abramsagency
-DEPLOY_PATH=/var/www/abramsagency.com
-HEALTH_URL=http://127.0.0.1:9788/healthz
+DEPLOY_PATH=/var/www/agency.agentabrams.com
+HEALTH_URL=https://agency.agentabrams.com/healthz
PORT=9788
diff --git a/golive.sh b/golive.sh
index 2743cdc..1003669 100755
--- a/golive.sh
+++ b/golive.sh
@@ -1,60 +1,44 @@
#!/usr/bin/env bash
-# One-shot go-live for abramsagency.com → Kamatera (deploy + pm2 + nginx).
+# One-shot go-live for agency.agentabrams.com → Kamatera (deploy + pm2 + nginx + SSL).
+# DNS is already done (Cloudflare A agency.agentabrams.com → 45.61.58.125).
# Run from Mac2: bash ~/Projects/abramsagency/golive.sh
-# DNS + SSL are a SECOND step (need your GoDaddy login) — printed at the end.
set -euo pipefail
SRV=root@45.61.58.125
APP=abramsagency
-DIR=/var/www/abramsagency.com
+DIR=/var/www/agency.agentabrams.com
PORT=9788
+HOST=agency.agentabrams.com
-echo "==> 1/5 prep remote dir"
+echo "==> 1/6 prep remote dir"
ssh -o StrictHostKeyChecking=accept-new "$SRV" "mkdir -p $DIR"
-echo "==> 2/5 rsync build up"
+echo "==> 2/6 rsync build up"
rsync -az --delete \
--exclude node_modules --exclude .git --exclude '.env*' --exclude 'data/leads.jsonl' \
~/Projects/abramsagency/ "$SRV:$DIR/"
-echo "==> 3/5 install + (re)start pm2 on :$PORT"
+echo "==> 3/6 install + (re)start pm2 on :$PORT"
ssh "$SRV" "cd $DIR && npm install --omit=dev --no-audit --no-fund \
&& (pm2 restart $APP --update-env || PORT=$PORT pm2 start server.js --name $APP) && pm2 save"
-echo "==> 4/5 nginx vhost"
-ssh "$SRV" "cat > /etc/nginx/sites-available/abramsagency.com <<'NGINX'
+echo "==> 4/6 nginx vhost (conf.d — the include dir this box actually loads)"
+ssh "$SRV" "cat > /etc/nginx/conf.d/$HOST.conf <<NG
server {
listen 80;
- server_name abramsagency.com www.abramsagency.com;
+ server_name $HOST;
location / {
proxy_pass http://127.0.0.1:$PORT;
- proxy_set_header Host \$host;
- proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
- proxy_set_header X-Forwarded-Proto \$scheme;
+ proxy_set_header Host \\\$host;
+ proxy_set_header X-Forwarded-For \\\$proxy_add_x_forwarded_for;
+ proxy_set_header X-Forwarded-Proto \\\$scheme;
}
}
-NGINX
-ln -sf /etc/nginx/sites-available/abramsagency.com /etc/nginx/sites-enabled/abramsagency.com
+NG
nginx -t && systemctl reload nginx"
-echo "==> 5/5 smoke test (origin)"
-ssh "$SRV" "curl -s -o /dev/null -w 'origin :$PORT -> %{http_code}\n' http://127.0.0.1:$PORT/healthz"
-
-cat <<DONE
-
-✅ App is live on the server (pm2 '$APP', nginx vhost ready).
+echo "==> 5/6 SSL (Let's Encrypt via certbot --nginx)"
+ssh "$SRV" "certbot --nginx -d $HOST --non-interactive --agree-tos -m steve@designerwallcoverings.com --redirect || echo 'certbot: rerun once DNS has propagated'"
-NEXT — DNS (your GoDaddy login; domain is on GoDaddy nameservers):
- Option A (quick, stay on GoDaddy):
- - A @ -> 45.61.58.125
- - CNAME www -> abramsagency.com
- then SSL on the box:
- ssh $SRV 'certbot --nginx -d abramsagency.com -d www.abramsagency.com --non-interactive --agree-tos -m steve@designerwallcoverings.com'
- Option B (Cloudflare, fleet-consistent): create CF zone, A @ + A www -> 45.61.58.125 (proxied),
- then switch nameservers at GoDaddy to CF's. CF handles SSL.
-
-Verify after DNS propagates:
- curl -sI https://abramsagency.com # expect 200 + valid cert
-
-OPTIONAL — turn on form email notifications (routes to steve@designerwallcoverings.com):
- ssh $SRV 'cd $DIR && LEAD_NOTIFY=1 pm2 restart $APP --update-env'
-DONE
+echo "==> 6/6 verify"
+ssh "$SRV" "curl -s -o /dev/null -w 'origin :$PORT -> %{http_code}\n' http://127.0.0.1:$PORT/healthz"
+echo "Done. Try: https://$HOST"
diff --git a/golive2.sh b/golive2.sh
deleted file mode 100644
index 16e6ce9..0000000
--- a/golive2.sh
+++ /dev/null
@@ -1,41 +0,0 @@
-#!/usr/bin/env bash
-# Fix: place the abramsagency.com vhost where THIS box actually includes configs
-# (fleet uses conf.d, not sites-enabled), then re-verify. Run from Mac2:
-# bash ~/Projects/abramsagency/golive2.sh
-set -euo pipefail
-SRV=root@45.61.58.125
-
-ssh -o StrictHostKeyChecking=accept-new "$SRV" 'bash -s' <<'EOS'
-set -e
-PORT=9788
-echo "== include dirs nginx actually loads =="
-nginx -T 2>/dev/null | grep -Eo 'include [^;]*(sites-enabled|conf\.d)[^;]*' | sort -u || true
-
-echo "== writing vhost to /etc/nginx/conf.d/abramsagency.com.conf =="
-cat > /etc/nginx/conf.d/abramsagency.com.conf <<NG
-server {
- listen 80;
- server_name abramsagency.com www.abramsagency.com;
- location / {
- proxy_pass http://127.0.0.1:$PORT;
- proxy_set_header Host \$host;
- proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
- proxy_set_header X-Forwarded-Proto \$scheme;
- }
-}
-NG
-
-# drop the inert sites-enabled copy so there's no ambiguity
-rm -f /etc/nginx/sites-enabled/abramsagency.com
-
-nginx -t && systemctl reload nginx
-
-echo "== verify: request the vhost locally by Host header (should now be 200, not 301) =="
-curl -s -o /dev/null -w " :80 Host=abramsagency.com -> %{http_code}\n" -H 'Host: abramsagency.com' http://127.0.0.1/
-curl -s -H 'Host: abramsagency.com' http://127.0.0.1/healthz; echo
-EOS
-
-echo
-echo "✅ vhost placed. NEXT:"
-echo " 1) GoDaddy DNS: A @ -> 45.61.58.125 | CNAME www -> abramsagency.com"
-echo " 2) then SSL: ssh $SRV 'certbot --nginx -d abramsagency.com -d www.abramsagency.com --non-interactive --agree-tos -m steve@designerwallcoverings.com'"
diff --git a/public/index.html b/public/index.html
index 5e4f79b..3a0bc49 100644
--- a/public/index.html
+++ b/public/index.html
@@ -432,7 +432,7 @@ footer .logo{justify-content:center;margin-bottom:14px}
<h2>Let's build yours.</h2>
<p>Tell us what you're trying to run better. We'll come back with a concrete plan — what we'd build, what it'd cost, and what it'd save.</p>
<div class="taplinks">
- <a class="tap glass lg" href="mailto:info@abramsagency.com"><span class="ic">✉️</span><div><b>info@abramsagency.com</b><small>Email us — we reply same day</small></div></a>
+ <a class="tap glass lg" href="mailto:info@agentabrams.com"><span class="ic">✉️</span><div><b>info@agentabrams.com</b><small>Email us — we reply same day</small></div></a>
<a class="tap glass lg" href="tel:+13105551234"><span class="ic">📞</span><div><b>Tap to call</b><small>Talk it through in 15 minutes</small></div></a>
</div>
</div>
@@ -460,7 +460,7 @@ footer .logo{justify-content:center;margin-bottom:14px}
<footer class="wrap">
<a class="logo" href="#top"><span class="dot"></span>Abrams<span style="opacity:.6">Agency</span></a>
<div>We build the machine that runs your business.</div>
- <div style="margin-top:8px">© <span id="yr"></span> Abrams Agency · abramsagency.com</div>
+ <div style="margin-top:8px">© <span id="yr"></span> Abrams Agency · agentabrams.com</div>
</footer>
<script>
@@ -580,7 +580,7 @@ form.addEventListener('submit',async(e)=>{
const r=await fetch('/api/contact',{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify(data)});
if(!r.ok)throw 0;
msg.className='form-msg ok';msg.textContent="Got it — we'll be in touch shortly. 🎉";form.reset();
- }catch(_){msg.className='form-msg err';msg.textContent='Something went wrong — email info@abramsagency.com directly.';}
+ }catch(_){msg.className='form-msg err';msg.textContent='Something went wrong — email info@agentabrams.com directly.';}
});
</script>
</body>