Files
microdao-daarion/docs/DEPLOY_NODE1_MVP_PHASES.md
Apple 3de3c8cb36 feat: Add presence heartbeat for Matrix online status
- matrix-gateway: POST /internal/matrix/presence/online endpoint
- usePresenceHeartbeat hook with activity tracking
- Auto away after 5 min inactivity
- Offline on page close/visibility change
- Integrated in MatrixChatRoom component
2025-11-27 00:19:40 -08:00

434 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 🚀 Deployment Phase 1-3 на НОДА1 (Hetzner GEX44)
**НОДА1 IP:** 144.76.224.179
**SSH:** `root@144.76.224.179`
**Project Root:** `/opt/microdao-daarion`
**Domain:** `gateway.daarion.city`
**Існує:** DAGI Stack (17+ сервісів)
---
## 🎯 Стратегія Deployment
### Варіант A: **Інтеграція в існуючий stack** (Рекомендовано)
**Підхід:** Додати Phase 1-3 сервіси до існуючого `docker-compose.all.yml`
**Переваги:**
- ✅ Використовує існуючу БД (PostgreSQL)
- ✅ Використовує існуючий Redis
- ✅ Використовує існуючий Nginx/SSL
- ✅ Мінімальні зміни інфраструктури
- ✅ Спільний моніторинг (Grafana/Prometheus)
**Недоліки:**
- ⚠️ Потрібно перевірити конфлікти портів
- ⚠️ Потрібно оновити Nginx config
---
### Варіант B: **Окремий stack**
**Підхід:** Створити окремий `docker-compose.mvp.yml`
**Переваги:**
- ✅ Повна ізоляція
- ✅ Легко rollback
- ✅ Незалежне тестування
**Недоліки:**
- ❌ Дублювання БД/Redis
- ❌ Додаткове навантаження
- ❌ Складніше управління
---
## ✅ Рекомендація: Варіант A (Інтеграція)
Додаємо Phase 1-3 сервіси до існуючого stack.
---
## 📊 Перевірка існуючої інфраструктури
### 1. Перевірка запущених сервісів
```bash
ssh root@144.76.224.179
# Перевірити що працює
docker ps
# Перевірити порти
sudo netstat -tulpn | grep LISTEN
# Перевірити compose файли
ls -la /opt/microdao-daarion/docker-compose*.yml
```
**Очікувані порти (вже зайняті):**
- 9102 — Router
- 9300 — Bot Gateway
- 8008 — DevTools
- 8890 — Swapper
- 8899 — Frontend
- 5432 — PostgreSQL
- 6379 — Redis
- 9090 — Prometheus
- 3000 — Grafana
---
## 🆕 Нові сервіси Phase 1-3
### Phase 2: Agents Core
- **Порт:** 7002 (не конфліктує!)
- **Контейнер:** `daarion-agents-service`
### Phase 3: City Service
- **Порт:** 7001 (не конфліктує!)
- **Контейнер:** `daarion-city-service`
### Phase 3: Second Me Service
- **Порт:** 7003 (не конфліктує!)
- **Контейнер:** `daarion-secondme-service`
### Phase 3: MicroDAO Service (Phase 7)
- **Порт:** 7004 (не конфліктує!)
- **Контейнер:** `daarion-microdao-service`
**✅ Немає конфліктів портів!**
---
## 🔧 Deployment Steps
### Крок 1: Підготовка (локально)
```bash
# На NODE2 (MacBook)
cd /Users/apple/github-projects/microdao-daarion
# Commit останні зміни
git add .
git commit -m "Phase 1-3 ready for NODE1 deployment"
git push origin main
```
---
### Крок 2: Підключення до НОДА1
```bash
# SSH до НОДА1
ssh root@144.76.224.179
# Перейти в проект
cd /opt/microdao-daarion
# Pull останніх змін
git pull origin main
```
---
### Крок 3: Перевірка ENV
```bash
# Перевірити .env файл
cat .env | grep -E "DATABASE_URL|REDIS_URL|JWT_SECRET"
# Якщо потрібно додати нові змінні:
vim .env
```
**Додати до .env:**
```bash
# Phase 1-3 Services
AGENTS_SERVICE_URL=http://agents-service:7002
CITY_SERVICE_URL=http://city-service:7001
SECONDME_SERVICE_URL=http://secondme-service:7003
MICRODAO_SERVICE_URL=http://microdao-service:7004
# City Config
CITY_DEFAULT_ROOMS=general,welcome,builders,science,energy
SECONDME_AGENT_ID=ag_secondme_global
# WebSocket
WS_BASE_URL=wss://gateway.daarion.city/ws
```
---
### Крок 4: Оновити docker-compose.all.yml
**Опція 1: Я створю оновлений файл (рекомендовано)**
- Я можу створити повний `docker-compose.all.yml` з новими сервісами
- Ти просто скопіюєш на НОДА1
**Опція 2: Ти вручну додаси через термінал**
- Я дам тобі exact commands
- Ти виконаєш їх через SSH
---
### Крок 5: Міграції БД
```bash
# На НОДА1
cd /opt/microdao-daarion
# Застосувати Phase 1-3 міграції
for i in {001..010}; do
echo "Applying migration ${i}..."
docker compose -f docker-compose.all.yml exec -T dagi-postgres \
psql -U postgres -d daarion_memory -f /migrations/${i}_*.sql
done
```
**Важливо:** Перевірити що міграції є в `/opt/microdao-daarion/migrations/`
---
### Крок 6: Білд і старт нових сервісів
```bash
# Білд нових сервісів
docker compose -f docker-compose.all.yml build agents-service city-service secondme-service microdao-service
# Старт нових сервісів (без перезапуску існуючих!)
docker compose -f docker-compose.all.yml up -d agents-service city-service secondme-service microdao-service
# Перевірка
docker ps | grep -E "agents-service|city-service|secondme-service"
```
---
### Крок 7: Оновити Nginx Config
**Додати до Nginx config (`/etc/nginx/sites-available/daarion`):**
```nginx
# Phase 1-3 API endpoints
location /api/city/ {
proxy_pass http://127.0.0.1:7001/city/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
location /api/agents/ {
proxy_pass http://127.0.0.1:7002/agents/;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
location /api/secondme/ {
proxy_pass http://127.0.0.1:7003/secondme/;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
location /api/microdao/ {
proxy_pass http://127.0.0.1:7004/microdao/;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
# WebSocket для City Rooms
location /ws/city/ {
proxy_pass http://127.0.0.1:7001/ws/city/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_read_timeout 86400;
}
```
**Застосувати:**
```bash
# Перевірити синтаксис
sudo nginx -t
# Reload Nginx
sudo systemctl reload nginx
```
---
### Крок 8: Перевірка Health
```bash
# Перевірити здоров'я нових сервісів
curl http://localhost:7001/health # City Service
curl http://localhost:7002/health # Agents Service
curl http://localhost:7003/health # Second Me
curl http://localhost:7004/health # MicroDAO
# Через публічний домен
curl https://gateway.daarion.city/api/city/health
curl https://gateway.daarion.city/api/agents/health
curl https://gateway.daarion.city/api/secondme/health
```
---
### Крок 9: Smoke Tests
```bash
# City Rooms API
curl https://gateway.daarion.city/api/city/rooms | jq
# Очікуємо: 5 default rooms
```
---
## 📋 Checklist Deployment
### Pre-deployment:
- [ ] Git push з NODE2 виконано
- [ ] Backup БД на НОДА1 створено
- [ ] .env файл перевірено
- [ ] Міграції є в `/opt/microdao-daarion/migrations/`
### Deployment:
- [ ] Git pull на НОДА1 виконано
- [ ] docker-compose.all.yml оновлено
- [ ] Нові сервіси зібрані (`docker compose build`)
- [ ] Нові сервіси запущені (`docker compose up -d`)
- [ ] Nginx config оновлено
- [ ] Nginx reload виконано
### Post-deployment:
- [ ] Health checks пройдені (4/4 сервіси)
- [ ] City Rooms API повертає 5 кімнат
- [ ] WebSocket connection працює
- [ ] Логи не містять критичних помилок
- [ ] Frontend інтегровано (якщо потрібно)
---
## 🚨 Rollback Plan
Якщо щось пішло не так:
```bash
# Зупинити нові сервіси
docker compose -f docker-compose.all.yml stop agents-service city-service secondme-service microdao-service
# Видалити контейнери
docker compose -f docker-compose.all.yml rm -f agents-service city-service secondme-service microdao-service
# Відкатити Nginx config
sudo cp /etc/nginx/sites-available/daarion.backup /etc/nginx/sites-available/daarion
sudo systemctl reload nginx
# Відкатити БД (якщо потрібно)
docker compose -f docker-compose.all.yml exec -T dagi-postgres \
psql -U postgres -d daarion_memory < backup.sql
```
---
## 🤖 Автоматизація vs Manual
### Варіант 1: Я створю deployment script
```bash
# Скрипт який зробить все автоматично
./scripts/deploy-phase1-3-node1.sh
```
**Переваги:**
- ✅ Швидко
- ✅ Менше помилок
- ✅ Repeatable
### Варіант 2: Ти виконаєш вручну
```bash
# Ти виконаєш команди крок за кроком через SSH
ssh root@144.76.224.179
cd /opt/microdao-daarion
# ... etc
```
**Переваги:**
- ✅ Повний контроль
- ✅ Розумієш кожен крок
- ✅ Легше debug
---
## 💡 Рекомендація
**Я рекомендую:**
1. **Я створю:**
- Оновлений `docker-compose.all.yml` (з Phase 1-3 сервісами)
- Deployment script `deploy-phase1-3-node1.sh`
- Nginx config snippet
2. **Ти виконаєш:**
- Git push з NODE2
- SSH на НОДА1
- Git pull
- Запуск deployment script
- Перевірка результатів
**Це найбільш безпечний і швидкий підхід.**
---
## ❓ Питання перед стартом
1. **Чи є backup БД на НОДА1?**
- Якщо ні, створити перед deployment
2. **Чи працює існуючий DAGI Stack стабільно?**
- Перевірити `docker ps` та логи
3. **Чи потрібно інтегрувати Frontend (port 8899)?**
- Існуючий Frontend оновити чи залишити як є?
4. **Який domain використовувати для Phase 1-3?**
- `gateway.daarion.city` (існуючий) ✅
- `app.daarion.city` (новий субдомен)
- Інший?
---
## 🚀 Ready to Deploy?
**Обери підхід:**
**A) Я створю deployment package** (рекомендовано)
- Скажи "створи deployment package"
- Я створю всі необхідні файли та скрипти
- Ти просто запустиш на НОДА1
**B) Manual step-by-step**
- Скажи "покрокова інструкція"
- Я дам детальні команди для кожного кроку
- Ти виконаєш через термінал
**C) Гібридний підхід**
- Я створю docker-compose та scripts
- Ти виконаєш деякі кроки вручну (Nginx, перевірки)
---
**Що обираєш? 🎯**