feat: implement TTS, Document processing, and Memory Service /facts API
- TTS: xtts-v2 integration with voice cloning support
- Document: docling integration for PDF/DOCX/PPTX processing
- Memory Service: added /facts/upsert, /facts/{key}, /facts endpoints
- Added required dependencies (TTS, docling)
This commit is contained in:
250
DEPLOYMENT-NODE1-INSTRUCTIONS.md
Normal file
250
DEPLOYMENT-NODE1-INSTRUCTIONS.md
Normal file
@@ -0,0 +1,250 @@
|
||||
# 🚀 Інструкції для Deployment DAGI Router та Swapper Service на НОДА1
|
||||
|
||||
**Дата:** 2026-01-11
|
||||
**Нода:** NODE1 (Hetzner GEX44 - 144.76.224.179)
|
||||
**Статус:** Готово до deployment
|
||||
|
||||
---
|
||||
|
||||
## 📋 Передумови
|
||||
|
||||
1. ✅ SSH доступ до НОДА1 (`ssh root@144.76.224.179`)
|
||||
2. ✅ Docker та Docker Compose встановлені
|
||||
3. ✅ Проєкт знаходиться в `/opt/microdao-daarion`
|
||||
4. ✅ Docker network `dagi-network` існує
|
||||
|
||||
---
|
||||
|
||||
## 🔧 Крок 1: Підключення до НОДА1
|
||||
|
||||
```bash
|
||||
ssh root@144.76.224.179
|
||||
cd /opt/microdao-daarion
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔧 Крок 2: Оновлення коду з репозиторію
|
||||
|
||||
```bash
|
||||
# Перевірити поточну гілку
|
||||
git status
|
||||
|
||||
# Оновити з GitHub
|
||||
git pull origin main
|
||||
|
||||
# Або з Gitea/GitLab
|
||||
git pull gitea main
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔧 Крок 3: Перевірка поточного стану
|
||||
|
||||
```bash
|
||||
# Перевірити запущені контейнери
|
||||
docker ps
|
||||
|
||||
# Перевірити docker-compose
|
||||
docker compose ps
|
||||
|
||||
# Перевірити чи існує dagi-network
|
||||
docker network ls | grep dagi-network
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔧 Крок 4: Додати Router та Swapper до docker-compose.yml
|
||||
|
||||
На НОДА1 вже має бути `docker-compose.yml`. Потрібно додати або оновити секції для:
|
||||
|
||||
1. **DAGI Router** (порт 9102)
|
||||
2. **Swapper Service** (порт 8890)
|
||||
|
||||
### Конфігурація DAGI Router для НОДА1:
|
||||
|
||||
```yaml
|
||||
dagi-router:
|
||||
build:
|
||||
context: ./services/router
|
||||
dockerfile: Dockerfile
|
||||
container_name: dagi-router
|
||||
ports:
|
||||
- "9102:9102"
|
||||
environment:
|
||||
- NATS_URL=nats://nats:4222
|
||||
- ROUTER_CONFIG_PATH=/app/router_config.yaml
|
||||
- LOG_LEVEL=info
|
||||
volumes:
|
||||
- ./services/router/router_config.yaml:/app/router_config.yaml:ro
|
||||
networks:
|
||||
- dagi-network
|
||||
restart: unless-stopped
|
||||
healthcheck:
|
||||
test: ["CMD", "curl", "-f", "http://localhost:9102/health"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
```
|
||||
|
||||
### Конфігурація Swapper Service для НОДА1:
|
||||
|
||||
```yaml
|
||||
swapper-service:
|
||||
build:
|
||||
context: ./services/swapper-service
|
||||
dockerfile: Dockerfile
|
||||
container_name: swapper-service
|
||||
ports:
|
||||
- "8890:8890"
|
||||
- "8891:8891" # Metrics
|
||||
environment:
|
||||
- OLLAMA_BASE_URL=http://ollama:11434
|
||||
- SWAPPER_CONFIG_PATH=/app/config/swapper_config.yaml
|
||||
- SWAPPER_MODE=single-active
|
||||
- MAX_CONCURRENT_MODELS=1
|
||||
- MODEL_SWAP_TIMEOUT=300
|
||||
volumes:
|
||||
- ./services/swapper-service/config/swapper_config_node1.yaml:/app/config/swapper_config.yaml:ro
|
||||
- ./logs:/app/logs
|
||||
networks:
|
||||
- dagi-network
|
||||
restart: unless-stopped
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "wget -qO- http://localhost:8890/health || exit 1"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
start_period: 10s
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔧 Крок 5: Перевірка залежностей
|
||||
|
||||
Переконайтеся, що наступні сервіси запущені:
|
||||
|
||||
```bash
|
||||
# NATS (для Router)
|
||||
docker ps | grep nats
|
||||
|
||||
# Ollama (для Swapper)
|
||||
docker ps | grep ollama
|
||||
|
||||
# Якщо немає - запустити
|
||||
docker compose up -d nats ollama
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔧 Крок 6: Запуск Router та Swapper
|
||||
|
||||
```bash
|
||||
# Запустити обидва сервіси
|
||||
docker compose up -d dagi-router swapper-service
|
||||
|
||||
# Або якщо вони вже є в docker-compose.yml
|
||||
docker compose up -d
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔧 Крок 7: Перевірка статусу
|
||||
|
||||
```bash
|
||||
# Перевірити статус контейнерів
|
||||
docker compose ps dagi-router swapper-service
|
||||
|
||||
# Перевірити логи Router
|
||||
docker compose logs dagi-router --tail 50
|
||||
|
||||
# Перевірити логи Swapper
|
||||
docker compose logs swapper-service --tail 50
|
||||
|
||||
# Health checks
|
||||
curl http://localhost:9102/health # Router
|
||||
curl http://localhost:8890/health # Swapper
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔧 Крок 8: Перевірка інтеграції
|
||||
|
||||
```bash
|
||||
# Перевірити Router providers
|
||||
curl http://localhost:9102/providers
|
||||
|
||||
# Перевірити Swapper models
|
||||
curl http://localhost:8890/models
|
||||
|
||||
# Спробувати завантажити модель
|
||||
curl -X POST http://localhost:8890/models/qwen3-8b/load
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🐛 Troubleshooting
|
||||
|
||||
### Router не запускається
|
||||
|
||||
```bash
|
||||
# Перевірити логи
|
||||
docker compose logs dagi-router
|
||||
|
||||
# Перевірити чи NATS доступний
|
||||
docker compose exec dagi-router ping -c 1 nats
|
||||
|
||||
# Перевірити конфігурацію
|
||||
docker compose exec dagi-router cat /app/router_config.yaml
|
||||
```
|
||||
|
||||
### Swapper не підключається до Ollama
|
||||
|
||||
```bash
|
||||
# Перевірити логи
|
||||
docker compose logs swapper-service
|
||||
|
||||
# Перевірити чи Ollama доступний
|
||||
docker compose exec swapper-service curl http://ollama:11434/api/tags
|
||||
|
||||
# Перевірити конфігурацію
|
||||
docker compose exec swapper-service cat /app/config/swapper_config.yaml
|
||||
```
|
||||
|
||||
### Порти зайняті
|
||||
|
||||
```bash
|
||||
# Перевірити які процеси використовують порти
|
||||
netstat -tulpn | grep 9102
|
||||
netstat -tulpn | grep 8890
|
||||
|
||||
# Зупинити конфліктуючі сервіси
|
||||
docker compose stop <service-name>
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## ✅ Очікуваний результат
|
||||
|
||||
Після успішного deployment:
|
||||
|
||||
- ✅ `dagi-router` контейнер працює на порту 9102
|
||||
- ✅ `swapper-service` контейнер працює на порту 8890
|
||||
- ✅ Health checks повертають `{"status": "healthy"}`
|
||||
- ✅ Router має доступ до NATS
|
||||
- ✅ Swapper має доступ до Ollama
|
||||
- ✅ Моделі можуть завантажуватися через Swapper
|
||||
|
||||
---
|
||||
|
||||
## 📝 Нотатки
|
||||
|
||||
- Router використовує NATS для маршрутизації повідомлень
|
||||
- Swapper використовує Ollama для завантаження моделей
|
||||
- Обидва сервіси мають health checks та автоматичний restart
|
||||
- Логи зберігаються в `./logs/`
|
||||
|
||||
---
|
||||
|
||||
**Створено:** 2026-01-11
|
||||
**Версія:** 1.0.0
|
||||
Reference in New Issue
Block a user