#!/bin/bash # Скрипт для deployment DAGI Router та Swapper Service на НОДА3 # Використання: ./scripts/deploy-router-swapper-node3.sh set -e NODE3_IP="80.77.35.151" NODE3_USER="zevs" NODE3_PORT="33147" PROJECT_ROOT="~/microdao-daarion" GIT_REPO_SSH="git@github.com:IvanTytar/microdao-daarion.git" GIT_REPO_HTTPS="https://github.com/IvanTytar/microdao-daarion.git" echo "🚀 Deployment DAGI Router та Swapper Service на НОДА3" echo "==================================================" echo "" # Перевірка SSH доступу echo "📡 Перевірка SSH доступу до НОДА3..." if ! ssh -o ConnectTimeout=5 -p ${NODE3_PORT} ${NODE3_USER}@${NODE3_IP} "echo 'SSH OK'" 2>/dev/null; then echo "❌ Помилка: Неможливо підключитися до НОДА3" echo " Перевірте SSH ключі або пароль" exit 1 fi echo "✅ SSH доступ працює" echo "" # Перевірка Docker Compose echo "🐳 Перевірка Docker Compose на НОДА3..." ssh -p ${NODE3_PORT} ${NODE3_USER}@${NODE3_IP} "docker --version && docker compose version" || { echo "❌ Помилка: Docker Compose не встановлено на НОДА3" exit 1 } echo "✅ Docker Compose встановлено" echo "" # Перевірка/створення директорії проєкту echo "📁 Перевірка проєкту на НОДА3..." if ssh -p ${NODE3_PORT} ${NODE3_USER}@${NODE3_IP} "test -d ${PROJECT_ROOT}" 2>/dev/null; then echo "✅ Проєкт знайдено, оновлюємо..." ssh -p ${NODE3_PORT} ${NODE3_USER}@${NODE3_IP} "cd ${PROJECT_ROOT} && git pull origin main || echo '⚠️ Git pull не вдався'" else echo "📥 Клонуємо проєкт..." ssh -p ${NODE3_PORT} ${NODE3_USER}@${NODE3_IP} "cd ~ && \ (git clone ${GIT_REPO_SSH} microdao-daarion 2>/dev/null || \ git clone ${GIT_REPO_HTTPS} microdao-daarion) || \ echo '⚠️ Git clone не вдався'" fi echo "" # Перевірка docker-compose.node3.yml echo "📋 Перевірка docker-compose.node3.yml..." ssh -p ${NODE3_PORT} ${NODE3_USER}@${NODE3_IP} "cd ${PROJECT_ROOT} && test -f docker-compose.node3.yml" || { echo "❌ Помилка: docker-compose.node3.yml не знайдено" echo " Переконайтеся, що проєкт клоновано правильно" exit 1 } echo "✅ docker-compose.node3.yml знайдено" echo "" # Перевірка конфігурацій echo "⚙️ Перевірка конфігурацій..." ssh -p ${NODE3_PORT} ${NODE3_USER}@${NODE3_IP} "cd ${PROJECT_ROOT} && \ test -f services/router/router_config.yaml && \ test -f services/swapper-service/config/swapper_config_node3.yaml" || { echo "❌ Помилка: Конфігураційні файли не знайдено" exit 1 } echo "✅ Конфігурації знайдено" echo "" # Перевірка/створення Docker network echo "🔗 Перевірка Docker network..." ssh -p ${NODE3_PORT} ${NODE3_USER}@${NODE3_IP} "docker network inspect dagi-network >/dev/null 2>&1 || docker network create dagi-network" echo "✅ Docker network готово" echo "" # Перевірка Ollama echo "🤖 Перевірка Ollama..." ssh -p ${NODE3_PORT} ${NODE3_USER}@${NODE3_IP} "docker ps | grep -q ollama || echo '⚠️ Ollama не запущений (можливо потрібно запустити окремо)'" echo "" # Запуск Router та Swapper через Docker Compose echo "🚀 Запуск DAGI Router та Swapper Service через Docker Compose..." ssh -p ${NODE3_PORT} ${NODE3_USER}@${NODE3_IP} "cd ${PROJECT_ROOT} && \ docker compose -f docker-compose.node3.yml up -d --build 2>&1" || { echo "⚠️ Попередження: Можливо є помилки при запуску" echo " Перевірте логи: docker compose -f docker-compose.node3.yml logs" } echo "" # Очікування запуску echo "⏳ Очікування запуску сервісів (15 секунд)..." sleep 15 # Перевірка статусу echo "📊 Перевірка статусу сервісів..." ssh -p ${NODE3_PORT} ${NODE3_USER}@${NODE3_IP} "cd ${PROJECT_ROOT} && \ docker compose -f docker-compose.node3.yml ps" echo "" # Health checks echo "🏥 Health checks..." echo "Router:" ssh -p ${NODE3_PORT} ${NODE3_USER}@${NODE3_IP} "curl -s http://localhost:9102/health || echo '❌ Router недоступний'" echo "" echo "Swapper:" ssh -p ${NODE3_PORT} ${NODE3_USER}@${NODE3_IP} "curl -s http://localhost:8890/health || echo '❌ Swapper недоступний'" echo "" echo "✅ Deployment завершено!" echo "" echo "📝 Наступні кроки:" echo " 1. Перевірте логи: docker compose -f docker-compose.node3.yml logs" echo " 2. Перевірте інтеграцію: curl http://localhost:9102/providers" echo " 3. Перевірте моделі: curl http://localhost:8890/models"