/
lex87
/
p08-echo-platform
Обзор
Документация
Войти
/
lex87
/
p08-echo-platform
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
deploy.sh
62 строки
2 KB
Axentra
feat(deploy): VPS deploy infrastructure for GitVerse + YC VM (P-06 pattern)
29 июн 2026, 21:24
29 июн 2026, 21:24
dc5c135
Код
Авторство
О чём код?
#!/usr/bin/env bash # P-08 «Эхо» — deploy to VPS (SSH + PM2 pattern, same as P-06) # Usage: ./deploy.sh [user@host] # Default host: same YC VM as P-06 (89.169.141.105) set -euo pipefail REMOTE="${1:-deploy@89.169.141.105}" APP_DIR="/opt/p08-echo" PM2_NAME="p08-web" BUNDLE_DIR="deploy-bundle" echo "=== P-08 Эхо → deploy to $REMOTE ===" # 1. Build echo "▶ [1/4] Building @p08/db..." pnpm --filter @p08/db build echo "▶ [2/4] Building @p08/web (standalone)..." pnpm --filter @p08/web build # 2. Assemble standalone bundle echo "▶ [3/4] Assembling standalone bundle..." rm -rf "$BUNDLE_DIR" mkdir -p "$BUNDLE_DIR" # standalone already contains node_modules + server.js cp -r apps/web/.next/standalone/. "$BUNDLE_DIR/" # static assets must be copied separately (Next.js convention) mkdir -p "$BUNDLE_DIR/apps/web/.next" cp -r apps/web/.next/static "$BUNDLE_DIR/apps/web/.next/static" cp -r apps/web/public "$BUNDLE_DIR/apps/web/public" # 3. Upload echo "▶ [4/4] Uploading to $REMOTE:$APP_DIR..." ssh "$REMOTE" "mkdir -p $APP_DIR" rsync -az --delete "$BUNDLE_DIR/" "$REMOTE:$APP_DIR/app/" rsync -az ecosystem.config.cjs "$REMOTE:$APP_DIR/" # Upload .env.production (не в git — создать вручную из .env.production.example) if [ -f .env.production ]; then echo " Uploading .env.production..." rsync -az .env.production "$REMOTE:$APP_DIR/.env" else echo " ⚠ .env.production не найден — создай из .env.production.example и перезапусти" fi # 4. Restart PM2 on server echo "▶ Restarting PM2 ($PM2_NAME)..." ssh "$REMOTE" "cd $APP_DIR && (pm2 describe $PM2_NAME > /dev/null 2>&1 && pm2 restart $PM2_NAME || pm2 start ecosystem.config.cjs --only $PM2_NAME) && pm2 save" echo "" echo "✅ P-08 Эхо задеплоен!" echo " Host: $REMOTE" echo " Dir: $APP_DIR" echo " Port: 3003 (проксируется nginx)" echo "" echo " Следующий шаг (если первый деплой):" echo " 1. Создай nginx vhost: sudo cp nginx/p08.conf /etc/nginx/sites-available/p08-echo" echo " 2. sudo ln -s /etc/nginx/sites-available/p08-echo /etc/nginx/sites-enabled/" echo " 3. sudo certbot --nginx -d <домен>" echo " 4. sudo nginx -t && sudo systemctl reload nginx"