#!/usr/bin/env bash # Deploy token-aggregation service to a Proxmox VMID set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" VMID="${1:-5000}" PROXMOX_HOST="${2:-192.168.11.12}" PROXMOX_USER="${PROXMOX_USER:-root}" SERVICE_PORT="${SERVICE_PORT:-3001}" RED='\033[0;31m' GREEN='\033[0;32m' BLUE='\033[0;34m' NC='\033[0m' log_info() { echo -e "${BLUE}[INFO]${NC} $1"; } log_ok() { echo -e "${GREEN}[OK]${NC} $1"; } log_info "Deploying token-aggregation to VMID $VMID" # Build log_info "Building..." (cd "$SCRIPT_DIR" && pnpm run build) log_ok "Built" # Package log_info "Creating package..." PACKAGE_ITEMS=(dist src package.json package-lock.json tsconfig.json scripts) for optional in .env.example .env; do [ -e "$SCRIPT_DIR/$optional" ] && PACKAGE_ITEMS+=("$optional") done (cd "$SCRIPT_DIR" && tar czf /tmp/token-agg.tar.gz --exclude=node_modules "${PACKAGE_ITEMS[@]}") # Deploy log_info "Deploying..." scp /tmp/token-agg.tar.gz "$PROXMOX_USER@$PROXMOX_HOST:/tmp/" ssh "$PROXMOX_USER@$PROXMOX_HOST" " pct push $VMID /tmp/token-agg.tar.gz /tmp/token-agg.tar.gz pct exec $VMID -- bash -c ' if ! command -v node &>/dev/null; then curl -fsSL https://deb.nodesource.com/setup_20.x | bash - && apt-get install -y nodejs postgresql-client fi mkdir -p /opt/token-aggregation && cd /opt/token-aggregation tar xzf /tmp/token-agg.tar.gz npm ci --omit=dev npm_config_build_from_source=true npm rebuild bcrypt >/dev/null 2>&1 || true if [ ! -f .env ] && [ -f .env.example ]; then cp .env.example .env fi ' " # Create service ssh "$PROXMOX_USER@$PROXMOX_HOST" "pct exec $VMID -- bash -c 'cat > /etc/systemd/system/token-aggregation.service <