Files
smom-dbis-138/services/token-aggregation/deploy-to-vmid.sh
defiQUG 2a4753eb2d feat: restore operator WIP — PMM JSON sync entrypoint, dotenv RPC trim + secrets, pool env alignment
- Resolve stash: merge load_deployment_env path with secure-secrets and CR/LF RPC strip
- create-pmm-full-mesh-chain138.sh delegates to sync-chain138-pmm-pools-from-json.sh
- env.additions.example: canonical PMM pool defaults (cUSDT/USDT per crosscheck)
- Include Chain138 scripts, official mirror deploy scaffolding, and prior staged changes

Made-with: Cursor
2026-03-27 19:02:30 -07:00

76 lines
2.1 KiB
Bash
Executable File

#!/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 tsconfig.json)
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
command -v pnpm &>/dev/null || npm install -g pnpm@10
mkdir -p /opt/token-aggregation && cd /opt/token-aggregation
tar xzf /tmp/token-agg.tar.gz
pnpm install --prod
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 <<EOF
[Unit]
Description=Token Aggregation Service
After=network.target postgresql.service
[Service]
Type=simple
User=root
WorkingDirectory=/opt/token-aggregation
Environment=\"NODE_ENV=production\"
ExecStart=/usr/bin/pnpm start
Restart=on-failure
RestartSec=5s
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload && systemctl enable token-aggregation
'"
log_ok "Deployed. Configure /opt/token-aggregation/.env then: systemctl start token-aggregation"