All checks were successful
CI / lint-and-test (push) Successful in 9m52s
Co-authored-by: Cursor <cursoragent@cursor.com>
74 lines
4.0 KiB
Bash
Executable File
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."
|