#!/usr/bin/env bash set -euo pipefail # Deploy Greasy Sprocket website to VPS # Usage: VPS_IP=1.2.3.4 bash deploy/deploy.sh VPS_IP="${VPS_IP:?Set VPS_IP env var}" SSH_KEY="${SSH_KEY:-$HOME/.hermes/id_rsa_gs}" SSH_USER="${SSH_USER:-root}" echo "=== Building Astro ===" cd astro pnpm install --frozen-lockfile 2>/dev/null || pnpm install pnpm run build cd .. echo "=== Building Go feedback service ===" cd feedback-svc make build cd .. echo "=== Uploading to VPS ===" # Upload static files rsync -avz --delete astro/dist/ "${SSH_USER}@${VPS_IP}:/var/www/greasysprocket.com/" # Upload Go binary scp -i "$SSH_KEY" feedback-svc/bin/gs-feedback "${SSH_USER}@${VPS_IP}:/usr/local/bin/gs-feedback" # Upload systemd service (if changed) scp -i "$SSH_KEY" deploy/gs-feedback.service "${SSH_USER}@${VPS_IP}:/etc/systemd/system/gs-feedback.service" echo "=== Restarting services ===" ssh -i "$SSH_KEY" "${SSH_USER}@${VPS_IP}" ' chmod +x /usr/local/bin/gs-feedback && mkdir -p /var/lib/gs-feedback && chown www-data:www-data /var/lib/gs-feedback && systemctl daemon-reload && systemctl restart gs-feedback && systemctl reload nginx && echo "✅ Deploy complete" '