#!/bin/bash set -euo pipefail REMOTE="root@82.165.222.127" REMOTE_DIR="/opt/tokenvault" LOCAL_DIR="$(cd "$(dirname "$0")" && pwd)" echo "=== TokenVault Deploy ===" # 1. Build locally echo "[1/5] Building..." cd "$LOCAL_DIR" pnpm build # 2. Sync to Erik echo "[2/5] Syncing to Erik..." rsync -avz --delete \ --exclude='node_modules' \ --exclude='.env' \ --exclude='.git' \ --exclude='coverage' \ "$LOCAL_DIR/" "$REMOTE:$REMOTE_DIR/" # 3. Install dependencies on Erik echo "[3/5] Installing dependencies..." ssh "$REMOTE" "cd $REMOTE_DIR && pnpm install --prod --frozen-lockfile 2>/dev/null || npm install --omit=dev" # 4. Create DB if needed echo "[4/5] Setting up database..." ssh "$REMOTE" "sudo -u postgres psql -tc \"SELECT 1 FROM pg_roles WHERE rolname='tokenvault'\" | grep -q 1 || sudo -u postgres createuser tokenvault" ssh "$REMOTE" "sudo -u postgres psql -tc \"SELECT 1 FROM pg_database WHERE datname='tokenvault'\" | grep -q 1 || sudo -u postgres createdb -O tokenvault tokenvault" ssh "$REMOTE" "mkdir -p $REMOTE_DIR/logs" # 5. Start/restart PM2 echo "[5/5] Starting PM2 processes..." ssh "$REMOTE" "cd $REMOTE_DIR && pm2 startOrRestart ecosystem.config.cjs && pm2 save" echo "" echo "=== Deploy complete ===" echo "Core: http://localhost:3300/health" echo "Dashboard: http://localhost:3301"