#!/usr/bin/env bash # Build MIM4U frontend and deploy to VMID 7810 /var/www/html. # Run from project root. Requires: npm in miracles_in_motion, ssh to Proxmox node, rsync or scp. # # Usage: ./scripts/mim4u-deploy-to-7810.sh set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)" MIM_ROOT="${PROJECT_ROOT}/miracles_in_motion" [[ -f "$PROJECT_ROOT/config/ip-addresses.conf" ]] && source "$PROJECT_ROOT/config/ip-addresses.conf" 2>/dev/null || true VMID_MIM_WEB="${VMID_MIM_WEB:-7810}" PROXMOX_HOST="${PROXMOX_HOST_R630_02:-192.168.11.12}" MIM_WEB_IP="${IP_MIM_WEB:-192.168.11.37}" DEST="/var/www/html" MIM_API_UPSTREAM="${MIM_API_UPSTREAM:-http://192.168.11.36:3001}" echo "Building MIM4U frontend..." (cd "$MIM_ROOT" && npm run build) echo "Deploying dist to root@$PROXMOX_HOST (pct exec $VMID_MIM_WEB) at $DEST ..." # Copy into container: tar from host, extract in container tar czf - -C "$MIM_ROOT/dist" . | ssh "root@$PROXMOX_HOST" "pct exec $VMID_MIM_WEB -- tar xzf - -C $DEST" echo "Ensuring nginx proxies /api/ to $MIM_API_UPSTREAM ..." ssh "root@$PROXMOX_HOST" "pct exec $VMID_MIM_WEB -- bash -lc 'cat > /etc/nginx/sites-available/mim4u <<\"EOF\" server { listen 80; server_name mim4u.org www.mim4u.org secure.mim4u.org training.mim4u.org; root /var/www/html; index index.html index.htm; location /api/ { proxy_pass ${MIM_API_UPSTREAM}/api/; proxy_http_version 1.1; proxy_set_header Host \$host; proxy_set_header X-Real-IP \$remote_addr; proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto \$scheme; } location / { try_files \$uri \$uri/ /index.html; } location /health { access_log off; return 200 \"healthy\\n\"; add_header Content-Type text/plain; } location ~* \\.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ { expires 1y; add_header Cache-Control \"public, immutable\"; } } EOF nginx -t && systemctl reload nginx'" echo "Done. Verify: curl -I http://${MIM_WEB_IP}:80/"