Files
solace-bg-dubai/scripts/proxmox-finish-deploy.sh
defiQUG a03417be98
All checks were successful
CI / lint-and-test (push) Successful in 9m52s
chore: consolidate local WIP (repo cleanup 20260707)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-07 09:41:38 -07:00

74 lines
4.0 KiB
Bash
Executable File

#!/usr/bin/env bash
# Push env files, migrate, seed, and start Solace services on Proxmox CTs.
set -euo pipefail
PROXMOX_HOST="${PROXMOX_HOST:-192.168.11.11}"
PROXMOX_USER="${PROXMOX_USER:-root}"
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
DEPLOY="$ROOT/deployment/proxmox"
VMID_FRONTEND="${VMID_FRONTEND:-3000}"
VMID_BACKEND="${VMID_BACKEND:-3001}"
VMID_INDEXER="${VMID_INDEXER:-3003}"
echo "=== Solace Proxmox finish deploy ==="
"$ROOT/scripts/proxmox-prepare-env.sh"
echo "Pushing env and unit files..."
scp "$ROOT/frontend/.env.production" "$PROXMOX_USER@$PROXMOX_HOST:/tmp/solace-frontend.env.production"
scp "$ROOT/backend/.env" "$PROXMOX_USER@$PROXMOX_HOST:/tmp/solace-backend.env"
scp "$ROOT/backend/.env.indexer" "$PROXMOX_USER@$PROXMOX_HOST:/tmp/solace-indexer.env.indexer"
scp "$DEPLOY/templates/nginx.conf" "$PROXMOX_USER@$PROXMOX_HOST:/tmp/solace-nginx.conf"
scp "$DEPLOY/templates/solace-treasury-locations.conf" "$PROXMOX_USER@$PROXMOX_HOST:/tmp/solace-nginx-locations.conf"
scp "$DEPLOY/templates/solace-frontend.service" "$PROXMOX_USER@$PROXMOX_HOST:/tmp/solace-frontend.service"
scp "$DEPLOY/templates/solace-backend.service" "$PROXMOX_USER@$PROXMOX_HOST:/tmp/solace-backend.service"
scp "$DEPLOY/templates/solace-indexer.service" "$PROXMOX_USER@$PROXMOX_HOST:/tmp/solace-indexer.service"
ssh "$PROXMOX_USER@$PROXMOX_HOST" bash -s \
"$VMID_FRONTEND" "$VMID_BACKEND" "$VMID_INDEXER" <<'REMOTE'
set -euo pipefail
VMID_FRONTEND=$1
VMID_BACKEND=$2
VMID_INDEXER=$3
pct push "$VMID_FRONTEND" /tmp/solace-frontend.env.production /opt/solace-frontend/.env.production
pct push "$VMID_FRONTEND" /tmp/solace-frontend.service /etc/systemd/system/solace-frontend.service
pct push "$VMID_BACKEND" /tmp/solace-backend.env /opt/solace-backend/.env
pct push "$VMID_INDEXER" /tmp/solace-indexer.env.indexer /opt/solace-indexer/.env.indexer
pct push "$VMID_BACKEND" /tmp/solace-backend.service /etc/systemd/system/solace-backend.service
pct push "$VMID_INDEXER" /tmp/solace-indexer.service /etc/systemd/system/solace-indexer.service
pct push "$VMID_FRONTEND" /tmp/solace-nginx.conf /etc/nginx/sites-available/solace-treasury
pct push "$VMID_FRONTEND" /tmp/solace-nginx-locations.conf /etc/nginx/snippets/solace-treasury-locations.conf
pct exec "$VMID_BACKEND" -- systemctl daemon-reload
pct exec "$VMID_INDEXER" -- systemctl daemon-reload
pct exec "$VMID_FRONTEND" -- bash -c 'mkdir -p /etc/nginx/snippets /etc/nginx/ssl; ln -sf /etc/nginx/sites-available/solace-treasury /etc/nginx/sites-enabled/solace-treasury; rm -f /etc/nginx/sites-enabled/default; test -f /etc/nginx/ssl/cert.pem || openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/ssl/key.pem -out /etc/nginx/ssl/cert.pem -subj /CN=solace-treasury.local; nginx -t; systemctl enable nginx solace-frontend'
echo "Running migrations..."
pct exec "$VMID_BACKEND" -- bash -c 'cd /opt/solace-backend && pnpm run db:migrate'
pct exec "$VMID_BACKEND" -- bash -c 'cd /opt/solace-backend && pnpm run db:seed || true'
echo "Starting services..."
pct exec "$VMID_BACKEND" -- systemctl enable solace-backend
pct exec "$VMID_INDEXER" -- systemctl enable solace-indexer
pct exec "$VMID_BACKEND" -- systemctl restart solace-backend
pct exec "$VMID_INDEXER" -- systemctl restart solace-indexer
pct exec "$VMID_FRONTEND" -- systemctl restart solace-frontend
pct exec "$VMID_FRONTEND" -- systemctl restart nginx
sleep 4
echo "=== Service status ==="
pct exec "$VMID_FRONTEND" -- systemctl is-active solace-frontend nginx || true
pct exec "$VMID_BACKEND" -- systemctl is-active solace-backend || true
pct exec "$VMID_INDEXER" -- systemctl is-active solace-indexer || true
REMOTE
echo "Smoke checks..."
curl -sf "http://192.168.11.61:3001/health" && echo " backend OK" || echo " backend FAIL"
curl -sf "http://192.168.11.60/api/config" | grep -q chainId && echo " nginx /api OK" || echo " nginx /api FAIL"
curl -sf -o /dev/null -w "frontend HTTP %{http_code}\n" "http://192.168.11.60/" || true
curl -sfk -o /dev/null -w "frontend HTTPS %{http_code}\n" "https://192.168.11.60/" || true
echo "Done."