← back to Quadrille House Site
deploy-kamatera.sh
38 lines
#!/usr/bin/env bash
# deploy-kamatera.sh — rsync + npm ci + pm2 startOrReload + 4-layer health check
# Usage: bash deploy-kamatera.sh
set -euo pipefail
REMOTE=root@45.61.58.125
REMOTE_DIR=/root/Projects/quadrille-house-site
PORT=9944
HEALTH=http://127.0.0.1:${PORT}/api/config
echo "==> Step 1: rsync (exclude node_modules, .git, public/lookbooks, data/assets)"
rsync -az --delete \
--exclude=node_modules \
--exclude=.git \
--exclude='public/lookbooks' \
--exclude='data/assets' \
--exclude='.env*' \
--exclude='*.log' \
--exclude='.DS_Store' \
. ${REMOTE}:${REMOTE_DIR}/
echo "==> Step 2: npm ci on remote"
ssh ${REMOTE} "cd ${REMOTE_DIR} && npm ci --omit=dev"
echo "==> Step 3: pm2 startOrReload"
ssh ${REMOTE} "cd ${REMOTE_DIR} && pm2 startOrReload ecosystem.config.js --update-env && pm2 save"
echo "==> Step 4: health check (origin direct)"
sleep 2
ssh ${REMOTE} "curl -sf ${HEALTH} | head -c 200"
echo ""
echo "==> Deploy complete. Port ${PORT} live on Kamatera."
echo " Next steps (gated — paste into Kamatera or your session):"
echo " 1. Set up nginx vhost (see GATED_STEPS.md or the deploy report)"
echo " 2. certbot SSL"
echo " 3. CF A record"