← back to Adsense Command Post

remote-deploy.sh

41 lines

#!/usr/bin/env bash
# Runs ON Kamatera. Brings up the AdSense Command Post at adsense.agentabrams.com.
set -uo pipefail
REMOTE=/root/public-projects/adsense-command-post
PORT=11190
DOMAIN=adsense.agentabrams.com
cd "$REMOTE" || exit 1
echo "--- pm2 start ---"
pm2 delete adsense-command-post >/dev/null 2>&1
PORT=$PORT pm2 start server.mjs --name adsense-command-post --time >/dev/null 2>&1 && echo "pm2 up on :$PORT"
pm2 save >/dev/null 2>&1
echo "--- nginx vhost ---"
CONF=/etc/nginx/sites-available/$DOMAIN.conf
if [ ! -e "$CONF" ]; then
cat > "$CONF" <<NGINX
server {
    listen 80; listen [::]:80;
    server_name $DOMAIN;
    location / {
        proxy_pass http://127.0.0.1:$PORT;
        proxy_http_version 1.1;
        proxy_set_header Host \$host;
        proxy_set_header X-Real-IP \$remote_addr;
        proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto \$scheme;
    }
}
NGINX
  ln -sf "$CONF" /etc/nginx/sites-enabled/$DOMAIN.conf
  echo "installed vhost"
else echo "vhost exists — leaving as-is"; fi
nginx -t 2>&1 | tail -1 && systemctl reload nginx && echo "nginx reloaded"
echo "--- SSL ---"
if [ ! -e /etc/letsencrypt/live/$DOMAIN/fullchain.pem ]; then
  certbot --nginx --non-interactive --agree-tos -m steve@designerwallcoverings.com --redirect -d $DOMAIN 2>&1 | grep -iE "Congratulations|Successfully|error|fail" | head -2
else echo "cert exists"; fi
nginx -t 2>&1 | tail -1 && systemctl reload nginx
echo "--- health ---"
curl -s -u admin:DW2024! -o /dev/null -w "internal :$PORT -> %{http_code}\n" http://127.0.0.1:$PORT/
echo DONE