- 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
12 KiB
🚀 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. Перевірка запущених сервісів
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: Підготовка (локально)
# На 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
# SSH до НОДА1
ssh root@144.76.224.179
# Перейти в проект
cd /opt/microdao-daarion
# Pull останніх змін
git pull origin main
Крок 3: Перевірка ENV
# Перевірити .env файл
cat .env | grep -E "DATABASE_URL|REDIS_URL|JWT_SECRET"
# Якщо потрібно додати нові змінні:
vim .env
Додати до .env:
# 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: Міграції БД
# На НОДА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: Білд і старт нових сервісів
# Білд нових сервісів
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):
# 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;
}
Застосувати:
# Перевірити синтаксис
sudo nginx -t
# Reload Nginx
sudo systemctl reload nginx
Крок 8: Перевірка Health
# Перевірити здоров'я нових сервісів
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
# 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
Якщо щось пішло не так:
# Зупинити нові сервіси
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
# Скрипт який зробить все автоматично
./scripts/deploy-phase1-3-node1.sh
Переваги:
- ✅ Швидко
- ✅ Менше помилок
- ✅ Repeatable
Варіант 2: Ти виконаєш вручну
# Ти виконаєш команди крок за кроком через SSH
ssh root@144.76.224.179
cd /opt/microdao-daarion
# ... etc
Переваги:
- ✅ Повний контроль
- ✅ Розумієш кожен крок
- ✅ Легше debug
💡 Рекомендація
Я рекомендую:
-
Я створю:
- Оновлений
docker-compose.all.yml(з Phase 1-3 сервісами) - Deployment script
deploy-phase1-3-node1.sh - Nginx config snippet
- Оновлений
-
Ти виконаєш:
- Git push з NODE2
- SSH на НОДА1
- Git pull
- Запуск deployment script
- Перевірка результатів
Це найбільш безпечний і швидкий підхід.
❓ Питання перед стартом
-
Чи є backup БД на НОДА1?
- Якщо ні, створити перед deployment
-
Чи працює існуючий DAGI Stack стабільно?
- Перевірити
docker psта логи
- Перевірити
-
Чи потрібно інтегрувати Frontend (port 8899)?
- Існуючий Frontend оновити чи залишити як є?
-
Який 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, перевірки)
Що обираєш? 🎯