Files
explorer-monorepo/scripts/deploy-snap-site-to-vmid5000.sh
2026-03-02 12:14:13 -08:00

77 lines
3.6 KiB
Bash

#!/usr/bin/env bash
# Deploy Chain 138 Snap companion site to VMID 5000 at /var/www/html/snap/
# Build first (from repo root): cd metamask-integration/chain138-snap && bash scripts/build-snap-site-for-explorer.sh
# Or set BUILD_FIRST=1 to build from this script (requires pnpm in metamask-integration/chain138-snap).
set -euo pipefail
VMID="${EXPLORER_VMID:-5000}"
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
# Repo root (parent of explorer-monorepo)
REPO_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
SNAP_ROOT="${SNAP_ROOT:-$REPO_ROOT/metamask-integration/chain138-snap}"
SNAP_PUBLIC="${SNAP_PUBLIC:-$SNAP_ROOT/packages/site/public}"
[ -f "$REPO_ROOT/.env" ] && source "$REPO_ROOT/.env" 2>/dev/null || true
[ -f "$REPO_ROOT/config/ip-addresses.conf" ] && source "$REPO_ROOT/config/ip-addresses.conf" 2>/dev/null || true
PROXMOX_R630_02="${EXPLORER_VM_HOST:-root@${PROXMOX_R630_02:-${PROXMOX_HOST_R630_02:-192.168.11.12}}}"
if [[ "$PROXMOX_R630_02" != *"@"* ]]; then PROXMOX_R630_02="root@$PROXMOX_R630_02"; fi
echo "=========================================="
echo "Deploy Snap site to VMID $VMID (/var/www/html/snap/)"
echo "=========================================="
# Optional: build first
if [ "${BUILD_FIRST:-0}" = "1" ]; then
if [ -d "$SNAP_ROOT" ]; then
echo "Building Snap site..."
(cd "$SNAP_ROOT" && bash scripts/build-snap-site-for-explorer.sh)
else
echo "❌ SNAP_ROOT not found: $SNAP_ROOT (set BUILD_FIRST=0 and build manually)"
exit 1
fi
fi
if [ ! -d "$SNAP_PUBLIC" ] || [ -z "$(ls -A "$SNAP_PUBLIC" 2>/dev/null)" ]; then
echo "❌ Snap site build not found at $SNAP_PUBLIC"
echo " Build first: cd $SNAP_ROOT && bash scripts/build-snap-site-for-explorer.sh"
echo " Or run with BUILD_FIRST=1"
exit 1
fi
# Detect execution context (run from Proxmox host or remote; not from inside VM)
if [ -f "/proc/1/cgroup" ] && grep -q "lxc" /proc/1/cgroup 2>/dev/null; then
echo "❌ Run this script from the Proxmox host or from your dev machine with EXPLORER_VM_HOST=root@<node-ip>"
exit 1
fi
if command -v pct &>/dev/null && pct list 2>/dev/null | grep -q "^$VMID "; then
DEPLOY_METHOD="pct"
run_in_vm() { pct exec $VMID -- "$@"; }
else
DEPLOY_METHOD="remote"
run_in_vm() { ssh -o ConnectTimeout=10 -o StrictHostKeyChecking=no "$PROXMOX_R630_02" "pct exec $VMID -- $*"; }
fi
echo "Deploy method: $DEPLOY_METHOD"
run_in_vm "mkdir -p /var/www/html/snap"
run_in_vm "chown -R www-data:www-data /var/www/html/snap" 2>/dev/null || true
TMP_TAR="/tmp/snap-site-$$.tar"
cleanup() { rm -f "$TMP_TAR"; }
trap cleanup EXIT
( cd "$SNAP_PUBLIC" && tar cf "$TMP_TAR" . )
if [ "$DEPLOY_METHOD" = "remote" ]; then
scp -o ConnectTimeout=10 -o StrictHostKeyChecking=no "$TMP_TAR" "$PROXMOX_R630_02:/tmp/snap-site.tar"
ssh -o ConnectTimeout=10 -o StrictHostKeyChecking=no "$PROXMOX_R630_02" "pct push $VMID /tmp/snap-site.tar /tmp/snap-site.tar --perms 0644 && pct exec $VMID -- bash -c 'cd /var/www/html/snap && tar xf /tmp/snap-site.tar && rm /tmp/snap-site.tar && chown -R www-data:www-data /var/www/html/snap'"
ssh -o ConnectTimeout=10 -o StrictHostKeyChecking=no "$PROXMOX_R630_02" "rm -f /tmp/snap-site.tar"
echo "✅ Snap site deployed via $PROXMOX_R630_02"
else
pct push $VMID "$TMP_TAR" /tmp/snap-site.tar
run_in_vm "bash -c 'cd /var/www/html/snap && tar xf /tmp/snap-site.tar && rm /tmp/snap-site.tar && chown -R www-data:www-data /var/www/html/snap'"
echo "✅ Snap site deployed"
fi
echo ""
echo "Snap site should be at: https://explorer.d-bis.org/snap/"
echo "Ensure nginx serves /snap/ from /var/www/html/snap/ (see fix-nginx-serve-custom-frontend.sh)."