← 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"