#!/usr/bin/env bash # Deploy all MetaMask integration changes to explorer.d-bis.org (VMID 5000) # Phases: 1) Backend API, 2) Frontend, 3) Verify, 4) Optional enhancements set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" REPO_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)" # VMID 5000 connection VMID=5000 VMID_IP="192.168.11.140" PROXMOX_HOST="192.168.11.12" # r630-02 PROXMOX_USER="${PROXMOX_USER:-root}" RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' log_info() { echo -e "${BLUE}[INFO]${NC} $1"; } log_ok() { echo -e "${GREEN}[OK]${NC} $1"; } log_warn() { echo -e "${YELLOW}[WARN]${NC} $1"; } log_fail() { echo -e "${RED}[FAIL]${NC} $1"; } # Check SSH access check_access() { log_info "Checking access to VMID $VMID..." if ! ssh -o ConnectTimeout=5 -o BatchMode=yes "$PROXMOX_USER@$PROXMOX_HOST" "pct status $VMID" &>/dev/null; then log_fail "Cannot access VMID $VMID via $PROXMOX_HOST. Check SSH keys and network." exit 1 fi log_ok "Access confirmed" } # Phase 1: Deploy backend API with config routes deploy_backend_api() { log_info "=========================================" log_info "PHASE 1: Deploy backend API (config routes)" log_info "=========================================" # Build Go API log_info "Building Go API..." (cd "$REPO_ROOT/explorer-monorepo/backend" && go build -o bin/api-server ./api/rest/cmd/) log_ok "Go API built: explorer-monorepo/backend/bin/api-server" # Copy to VMID 5000 log_info "Copying API server to VMID $VMID..." scp -o ConnectTimeout=10 "$REPO_ROOT/explorer-monorepo/backend/bin/api-server" \ "$PROXMOX_USER@$PROXMOX_HOST:/tmp/api-server-config" ssh "$PROXMOX_USER@$PROXMOX_HOST" "pct push $VMID /tmp/api-server-config /usr/local/bin/explorer-config-api && \ pct exec $VMID -- chmod +x /usr/local/bin/explorer-config-api" log_ok "API server copied to VMID $VMID:/usr/local/bin/explorer-config-api" # Create systemd service log_info "Creating systemd service for config API..." ssh "$PROXMOX_USER@$PROXMOX_HOST" "pct exec $VMID -- bash -c 'cat > /etc/systemd/system/explorer-config-api.service < .env.production && \ echo "NEXT_PUBLIC_CHAIN_ID=138" >> .env.production && \ pnpm run build) log_ok "Frontend built" # Create deployment tarball log_info "Creating deployment package..." (cd "$REPO_ROOT/explorer-monorepo/frontend" && \ tar czf /tmp/explorer-frontend.tar.gz .next public src package.json next.config.js) # Copy to VMID 5000 log_info "Copying frontend to VMID $VMID..." scp -o ConnectTimeout=10 /tmp/explorer-frontend.tar.gz \ "$PROXMOX_USER@$PROXMOX_HOST:/tmp/explorer-frontend.tar.gz" ssh "$PROXMOX_USER@$PROXMOX_HOST" "pct push $VMID /tmp/explorer-frontend.tar.gz /tmp/explorer-frontend.tar.gz && \ pct exec $VMID -- bash -c ' mkdir -p /opt/explorer-frontend cd /opt/explorer-frontend tar xzf /tmp/explorer-frontend.tar.gz rm /tmp/explorer-frontend.tar.gz # Install deps if needed if ! command -v node &>/dev/null; then curl -fsSL https://deb.nodesource.com/setup_20.x | bash - apt-get install -y nodejs fi # Install pnpm if needed if ! command -v pnpm &>/dev/null; then npm install -g pnpm@10 fi # Install production deps pnpm install --prod '" # Create systemd service for Next.js log_info "Creating Next.js systemd service..." ssh "$PROXMOX_USER@$PROXMOX_HOST" "pct exec $VMID -- bash -c 'cat > /etc/systemd/system/explorer-frontend.service <