- 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
597 lines
19 KiB
Markdown
597 lines
19 KiB
Markdown
# 🚀 MVP Deployment на НОДА1 — Комплексний Аналіз
|
||
|
||
**Версія:** 1.0.0
|
||
**Дата:** 25 листопада 2025
|
||
**Статус:** Ready for Execution
|
||
**НОДА1 IP:** 144.76.224.179
|
||
**Domain:** gateway.daarion.city
|
||
|
||
---
|
||
|
||
## 📊 Executive Summary
|
||
|
||
Після аналізу інфраструктури маємо:
|
||
|
||
### ✅ Що готово:
|
||
1. **Phase 1-3 код готовий** (Frontend MVP, Agents Core, City MVP, Second Me)
|
||
2. **Міграції БД готові** (001-010)
|
||
3. **Docker Compose готовий** (`docker-compose.all.yml`)
|
||
4. **Сервіси зібрані** (agents, city, secondme, microdao)
|
||
5. **Nginx/SSL працює** на НОДА1 (`gateway.daarion.city`)
|
||
|
||
### ⚠️ Потенційні ризики:
|
||
1. **Мультимодальна система в процесі** (Router v1.1.0, Telegram Enhanced)
|
||
2. **Щоденні зміни** на обох нодах
|
||
3. **Невідомий стан production БД** на НОДА1
|
||
4. **Можливі конфлікти портів** (хоча перевірка показує що немає)
|
||
|
||
### 🎯 Рекомендована стратегія:
|
||
**Staged Deployment** з isolation + rollback plan
|
||
|
||
---
|
||
|
||
## 🗺️ Інфраструктурна Картина
|
||
|
||
### НОДА1 (Production)
|
||
```
|
||
144.76.224.179 (Hetzner GEX44)
|
||
├── DAGI Stack (17+ сервісів) ✅ ПРАЦЮЄ
|
||
│ ├── Router (9102) — в процесі оновлення до v1.1.0 multimodal
|
||
│ ├── Gateway (9300) — Telegram Gateway Enhanced
|
||
│ ├── DevTools (8008)
|
||
│ ├── Swapper (8890-8891)
|
||
│ ├── Frontend (8899) — існуючий
|
||
│ ├── PostgreSQL (5432) ⚠️ PRODUCTION DB
|
||
│ ├── Redis (6379)
|
||
│ ├── Neo4j (7687, 7474)
|
||
│ ├── Qdrant (6333, 6334)
|
||
│ ├── Grafana (3000)
|
||
│ └── Prometheus (9090)
|
||
│
|
||
├── Nginx (80, 443) ✅ SSL Let's Encrypt
|
||
│ └── gateway.daarion.city → працює
|
||
│
|
||
└── /opt/microdao-daarion (project root)
|
||
```
|
||
|
||
### НОДА2 (Development)
|
||
```
|
||
192.168.1.244 (MacBook Pro M4 Max)
|
||
├── Розробка Phase 1-3 ✅
|
||
├── Мультимодальні сервіси (STT, OCR, Web Search, Vector DB)
|
||
└── /Users/apple/github-projects/microdao-daarion
|
||
```
|
||
|
||
### Phase 1-3 MVP (треба додати до НОДА1)
|
||
```
|
||
Нові сервіси:
|
||
├── agents-service (7002) — Phase 2
|
||
├── city-service (7001) — Phase 3
|
||
├── secondme-service (7003) — Phase 3
|
||
└── microdao-service (7004) — Phase 7
|
||
|
||
Нові API endpoints:
|
||
├── /api/agents/* → 7002
|
||
├── /api/city/* → 7001
|
||
├── /api/secondme/* → 7003
|
||
└── /api/microdao/* → 7004
|
||
|
||
WebSocket:
|
||
└── /ws/city/* → 7001
|
||
```
|
||
|
||
---
|
||
|
||
## 🔍 Аналіз Конфліктів
|
||
|
||
### ✅ Порти (Немає конфліктів!)
|
||
| Існуючі (НОДА1) | Нові (MVP) | Статус |
|
||
|-----------------|------------|--------|
|
||
| 9102 (Router) | 7002 (Agents) | ✅ OK |
|
||
| 9300 (Gateway) | 7001 (City) | ✅ OK |
|
||
| 8008 (DevTools) | 7003 (Second Me) | ✅ OK |
|
||
| 8890 (Swapper) | 7004 (MicroDAO) | ✅ OK |
|
||
| 8899 (Frontend) | - | ⚠️ Може потребувати оновлення |
|
||
|
||
### ⚠️ База Даних (Критично!)
|
||
**Ситуація:**
|
||
- НОДА1 має **production PostgreSQL** (`daarion_memory`)
|
||
- MVP потребує **нові таблиці** (міграції 007-010)
|
||
- Невідомо чи існуючі таблиці не конфліктують
|
||
|
||
**Рішення:**
|
||
1. **Backup перед міграцією** (обов'язково!)
|
||
2. **Перевірити існуючі таблиці** перед застосуванням міграцій
|
||
3. **Rollback план** готовий
|
||
|
||
### ⚠️ Nginx Config (Потребує оновлення)
|
||
**Існуючий config:**
|
||
```
|
||
/etc/nginx/sites-available/daarion
|
||
├── /telegram/webhook → 9300
|
||
└── /helion/telegram/webhook → 9300
|
||
```
|
||
|
||
**Треба додати:**
|
||
```nginx
|
||
location /api/agents/ { proxy_pass http://127.0.0.1:7002/; }
|
||
location /api/city/ { proxy_pass http://127.0.0.1:7001/; }
|
||
location /api/secondme/ { proxy_pass http://127.0.0.1:7003/; }
|
||
location /api/microdao/ { proxy_pass http://127.0.0.1:7004/; }
|
||
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";
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## 🎯 Deployment Strategy: STAGED ROLLOUT
|
||
|
||
### Фаза 0: PRE-FLIGHT (На НОДА2)
|
||
**Мета:** Підготовка коду
|
||
```bash
|
||
cd /Users/apple/github-projects/microdao-daarion
|
||
|
||
# 1. Commit всі зміни
|
||
git add .
|
||
git commit -m "Phase 1-3: Ready for NODE1 deployment"
|
||
git push origin main
|
||
|
||
# 2. Перевірити що всі файли на місці
|
||
ls -la services/{agents,city,secondme,microdao}-service/
|
||
ls -la migrations/00{7,8,9,10}_*.sql
|
||
```
|
||
|
||
**Checklist:**
|
||
- [ ] Git push виконано
|
||
- [ ] Всі сервіси мають Dockerfile
|
||
- [ ] Міграції 007-010 існують
|
||
- [ ] docker-compose.all.yml оновлено (якщо потрібно)
|
||
|
||
---
|
||
|
||
### Фаза 1: BACKUP & ANALYSIS (На НОДА1)
|
||
**Мета:** Захистити production і зібрати інформацію
|
||
|
||
```bash
|
||
# SSH на НОДА1
|
||
ssh root@144.76.224.179
|
||
cd /opt/microdao-daarion
|
||
|
||
# 1. Backup PostgreSQL (КРИТИЧНО!)
|
||
docker exec daarion-postgres pg_dump -U postgres daarion_memory > \
|
||
/root/backups/daarion_memory_$(date +%Y%m%d_%H%M%S).sql
|
||
|
||
# 2. Перевірити існуючі таблиці
|
||
docker exec daarion-postgres psql -U postgres -d daarion_memory -c "\dt"
|
||
|
||
# 3. Перевірити існуючі сервіси
|
||
docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"
|
||
|
||
# 4. Перевірити порти
|
||
sudo netstat -tulpn | grep LISTEN | grep -E "700[1-4]|9102|9300"
|
||
|
||
# 5. Перевірити Nginx config
|
||
cat /etc/nginx/sites-available/daarion
|
||
```
|
||
|
||
**Checklist:**
|
||
- [ ] Backup БД створено (перевірити розмір файлу!)
|
||
- [ ] Список таблиць збережено
|
||
- [ ] Порти 7001-7004 вільні
|
||
- [ ] Nginx config збережено
|
||
|
||
---
|
||
|
||
### Фаза 2: CODE SYNC (На НОДА1)
|
||
**Мета:** Синхронізувати код з GitHub
|
||
|
||
```bash
|
||
cd /opt/microdao-daarion
|
||
|
||
# 1. Перевірити поточний стан
|
||
git status
|
||
git log --oneline -5
|
||
|
||
# 2. Pull нових змін
|
||
git fetch origin
|
||
git pull origin main
|
||
|
||
# 3. Перевірити що файли прибули
|
||
ls -la services/{agents,city,secondme,microdao}-service/Dockerfile
|
||
ls -la migrations/007_*.sql migrations/008_*.sql migrations/009_*.sql migrations/010_*.sql
|
||
```
|
||
|
||
**Checklist:**
|
||
- [ ] Git pull успішний
|
||
- [ ] Нові сервіси присутні
|
||
- [ ] Міграції 007-010 на місці
|
||
|
||
---
|
||
|
||
### Фаза 3: ENVIRONMENT CONFIG (На НОДА1)
|
||
**Мета:** Налаштувати змінні оточення
|
||
|
||
```bash
|
||
cd /opt/microdao-daarion
|
||
|
||
# 1. Backup існуючого .env
|
||
cp .env .env.backup.$(date +%Y%m%d_%H%M%S)
|
||
|
||
# 2. Додати нові змінні
|
||
cat >> .env << 'EOF'
|
||
|
||
# ============================================================================
|
||
# PHASE 1-3 MVP SERVICES
|
||
# ============================================================================
|
||
|
||
# Service URLs
|
||
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 Configuration
|
||
CITY_DEFAULT_ROOMS=general,welcome,builders,science,energy
|
||
SECONDME_AGENT_ID=ag_secondme_global
|
||
|
||
# WebSocket
|
||
WS_BASE_URL=wss://gateway.daarion.city/ws
|
||
|
||
# Frontend (якщо потрібно оновити)
|
||
VITE_API_BASE_URL=https://gateway.daarion.city/api
|
||
VITE_WS_BASE_URL=wss://gateway.daarion.city/ws
|
||
|
||
EOF
|
||
|
||
# 3. Перевірити
|
||
tail -20 .env
|
||
```
|
||
|
||
**Checklist:**
|
||
- [ ] .env backup створено
|
||
- [ ] Нові змінні додано
|
||
- [ ] Синтаксис правильний
|
||
|
||
---
|
||
|
||
### Фаза 4: DATABASE MIGRATIONS (На НОДА1)
|
||
**Мета:** Застосувати міграції 007-010
|
||
|
||
⚠️ **КРИТИЧНА ФАЗА — МОЖЛИВІСТЬ ROLLBACK**
|
||
|
||
```bash
|
||
cd /opt/microdao-daarion
|
||
|
||
# Перевірити які міграції вже застосовані (якщо є tracking)
|
||
# або вручну перевірити чи існують таблиці
|
||
|
||
# Застосувати міграції (ПО ОДНІЙ!)
|
||
echo "Applying 007_create_agents_tables.sql..."
|
||
docker exec -i daarion-postgres psql -U postgres -d daarion_memory < \
|
||
migrations/007_create_agents_tables.sql
|
||
|
||
echo "Applying 008_create_microdao_core.sql..."
|
||
docker exec -i daarion-postgres psql -U postgres -d daarion_memory < \
|
||
migrations/008_create_microdao_core.sql
|
||
|
||
echo "Applying 009_create_dao_core.sql..."
|
||
docker exec -i daarion-postgres psql -U postgres -d daarion_memory < \
|
||
migrations/009_create_dao_core.sql
|
||
|
||
echo "Applying 010_create_city_backend.sql..."
|
||
docker exec -i daarion-postgres psql -U postgres -d daarion_memory < \
|
||
migrations/010_create_city_backend.sql
|
||
|
||
# Перевірити що таблиці створені
|
||
docker exec daarion-postgres psql -U postgres -d daarion_memory -c "\dt" | \
|
||
grep -E "agents|city|secondme|microdao"
|
||
```
|
||
|
||
**Якщо помилка:**
|
||
```bash
|
||
# ROLLBACK: Відновити з backup
|
||
docker exec -i daarion-postgres psql -U postgres -d daarion_memory < \
|
||
/root/backups/daarion_memory_YYYYMMDD_HHMMSS.sql
|
||
```
|
||
|
||
**Checklist:**
|
||
- [ ] Міграція 007 успішна
|
||
- [ ] Міграція 008 успішна
|
||
- [ ] Міграція 009 успішна
|
||
- [ ] Міграція 010 успішна
|
||
- [ ] Нові таблиці підтверджені
|
||
|
||
---
|
||
|
||
### Фаза 5: DOCKER BUILD (На НОДА1)
|
||
**Мета:** Зібрати нові сервіси
|
||
|
||
```bash
|
||
cd /opt/microdao-daarion
|
||
|
||
# Build нових сервісів (один за одним для діагностики)
|
||
docker compose -f docker-compose.all.yml build agents-service
|
||
docker compose -f docker-compose.all.yml build city-service
|
||
docker compose -f docker-compose.all.yml build secondme-service
|
||
docker compose -f docker-compose.all.yml build microdao-service
|
||
|
||
# Перевірити що образи створені
|
||
docker images | grep -E "agents-service|city-service|secondme|microdao"
|
||
```
|
||
|
||
**Checklist:**
|
||
- [ ] agents-service образ створено
|
||
- [ ] city-service образ створено
|
||
- [ ] secondme-service образ створено
|
||
- [ ] microdao-service образ створено
|
||
|
||
---
|
||
|
||
### Фаза 6: SERVICE STARTUP (На НОДА1)
|
||
**Мета:** Запустити нові сервіси (БЕЗ перезапуску існуючих!)
|
||
|
||
```bash
|
||
cd /opt/microdao-daarion
|
||
|
||
# Запустити ТІЛЬКИ нові сервіси
|
||
docker compose -f docker-compose.all.yml up -d agents-service city-service secondme-service microdao-service
|
||
|
||
# Моніторити старт (перші 30 секунд критичні)
|
||
docker compose -f docker-compose.all.yml logs -f agents-service city-service secondme-service microdao-service
|
||
|
||
# В окремому терміналі перевірити health
|
||
watch -n 2 "docker ps | grep -E 'agents-service|city-service|secondme|microdao'"
|
||
```
|
||
|
||
**Що моніторити:**
|
||
- [ ] Контейнери запустилися (не в Restarting стані)
|
||
- [ ] Логи не містять критичних помилок
|
||
- [ ] БД з'єднання успішні
|
||
- [ ] Health endpoints відповідають
|
||
|
||
---
|
||
|
||
### Фаза 7: NGINX UPDATE (На НОДА1)
|
||
**Мета:** Додати нові endpoints до Nginx
|
||
|
||
```bash
|
||
# Backup існуючого config
|
||
sudo cp /etc/nginx/sites-available/daarion \
|
||
/etc/nginx/sites-available/daarion.backup.$(date +%Y%m%d_%H%M%S)
|
||
|
||
# Додати нові location blocks (ПЕРЕД останньою фігурною дужкою сервера)
|
||
sudo vim /etc/nginx/sites-available/daarion
|
||
```
|
||
|
||
**Додати цей блок:**
|
||
```nginx
|
||
# ========================================================================
|
||
# PHASE 1-3 MVP API ENDPOINTS
|
||
# ========================================================================
|
||
|
||
location /api/agents/ {
|
||
proxy_pass http://127.0.0.1:7002/;
|
||
proxy_http_version 1.1;
|
||
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;
|
||
proxy_set_header X-Request-Id $request_id;
|
||
}
|
||
|
||
location /api/city/ {
|
||
proxy_pass http://127.0.0.1:7001/;
|
||
proxy_http_version 1.1;
|
||
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;
|
||
proxy_set_header X-Request-Id $request_id;
|
||
}
|
||
|
||
location /api/secondme/ {
|
||
proxy_pass http://127.0.0.1:7003/;
|
||
proxy_http_version 1.1;
|
||
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;
|
||
proxy_set_header X-Request-Id $request_id;
|
||
}
|
||
|
||
location /api/microdao/ {
|
||
proxy_pass http://127.0.0.1:7004/;
|
||
proxy_http_version 1.1;
|
||
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;
|
||
proxy_set_header X-Request-Id $request_id;
|
||
}
|
||
|
||
# WebSocket для City
|
||
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_set_header X-Real-IP $remote_addr;
|
||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||
proxy_read_timeout 86400;
|
||
}
|
||
```
|
||
|
||
```bash
|
||
# Перевірити синтаксис
|
||
sudo nginx -t
|
||
|
||
# Якщо OK — reload
|
||
sudo systemctl reload nginx
|
||
|
||
# Перевірити статус
|
||
sudo systemctl status nginx
|
||
```
|
||
|
||
**Checklist:**
|
||
- [ ] Backup Nginx config створено
|
||
- [ ] Нові location blocks додано
|
||
- [ ] `nginx -t` успішний
|
||
- [ ] `systemctl reload nginx` успішний
|
||
|
||
---
|
||
|
||
### Фаза 8: SMOKE TESTS (На НОДА1)
|
||
**Мета:** Перевірити що все працює
|
||
|
||
```bash
|
||
# 1. Health checks (локально)
|
||
curl http://localhost:7001/health # City
|
||
curl http://localhost:7002/health # Agents
|
||
curl http://localhost:7003/health # Second Me
|
||
curl http://localhost:7004/health # MicroDAO
|
||
|
||
# 2. Health checks (через Nginx/SSL)
|
||
curl https://gateway.daarion.city/api/city/health
|
||
curl https://gateway.daarion.city/api/agents/health
|
||
curl https://gateway.daarion.city/api/secondme/health
|
||
curl https://gateway.daarion.city/api/microdao/health
|
||
|
||
# 3. City Rooms API
|
||
curl https://gateway.daarion.city/api/city/rooms | jq
|
||
|
||
# 4. WebSocket (через wscat або websocat)
|
||
websocat wss://gateway.daarion.city/ws/city/rooms/general
|
||
```
|
||
|
||
**Expected Results:**
|
||
- [ ] Всі health endpoints → 200 OK
|
||
- [ ] City Rooms API → 5 default rooms
|
||
- [ ] WebSocket → connection established
|
||
|
||
---
|
||
|
||
### Фаза 9: MONITORING (На НОДА1)
|
||
**Мета:** Переконатися що система стабільна
|
||
|
||
```bash
|
||
# 1. Перевірити логи (перші 5 хвилин)
|
||
docker compose -f docker-compose.all.yml logs --tail=100 -f agents-service city-service
|
||
|
||
# 2. Перевірити ресурси
|
||
docker stats --no-stream
|
||
|
||
# 3. Перевірити Prometheus metrics (якщо доступний)
|
||
curl http://localhost:9090/api/v1/query?query=up | jq
|
||
|
||
# 4. Grafana (якщо налаштований)
|
||
# Відкрити http://localhost:3000 і перевірити дашборди
|
||
```
|
||
|
||
**Checklist:**
|
||
- [ ] Немає error логів (перші 5 хвилин)
|
||
- [ ] CPU/RAM в нормі
|
||
- [ ] Prometheus бачить нові таргети
|
||
- [ ] Grafana показує метрики
|
||
|
||
---
|
||
|
||
## 🚨 Rollback Plan
|
||
|
||
### Якщо Фаза 6 (Service Startup) failed:
|
||
|
||
```bash
|
||
# 1. Зупинити нові сервіси
|
||
docker compose -f docker-compose.all.yml stop agents-service city-service secondme-service microdao-service
|
||
|
||
# 2. Видалити контейнери
|
||
docker compose -f docker-compose.all.yml rm -f agents-service city-service secondme-service microdao-service
|
||
|
||
# 3. Відкатити БД
|
||
docker exec -i daarion-postgres psql -U postgres -d daarion_memory < \
|
||
/root/backups/daarion_memory_YYYYMMDD_HHMMSS.sql
|
||
|
||
# 4. Система повернулась до початкового стану
|
||
```
|
||
|
||
### Якщо Фаза 7 (Nginx Update) failed:
|
||
|
||
```bash
|
||
# Відновити Nginx config
|
||
sudo cp /etc/nginx/sites-available/daarion.backup.YYYYMMDD_HHMMSS \
|
||
/etc/nginx/sites-available/daarion
|
||
|
||
# Reload
|
||
sudo systemctl reload nginx
|
||
```
|
||
|
||
---
|
||
|
||
## 📋 Final Checklist
|
||
|
||
### Pre-Deployment:
|
||
- [ ] Git push з НОДА2 виконано
|
||
- [ ] Backup БД на НОДА1 створено (і перевірено!)
|
||
- [ ] .env файл оновлено
|
||
- [ ] Nginx backup створено
|
||
|
||
### Deployment:
|
||
- [ ] Git pull на НОДА1 успішний
|
||
- [ ] Міграції 007-010 застосовані
|
||
- [ ] Нові сервіси зібрані
|
||
- [ ] Нові сервіси запущені
|
||
- [ ] Nginx config оновлено
|
||
- [ ] Nginx reload успішний
|
||
|
||
### Post-Deployment:
|
||
- [ ] Health checks: 4/4 ✅
|
||
- [ ] City Rooms API працює
|
||
- [ ] WebSocket підключення працює
|
||
- [ ] Логи без критичних помилок
|
||
- [ ] Існуючі DAGI сервіси працюють стабільно
|
||
- [ ] Monitoring налаштовано
|
||
|
||
---
|
||
|
||
## 🎯 Success Criteria
|
||
|
||
**MVP вважається успішно задеплоєним якщо:**
|
||
|
||
1. ✅ Всі 4 нові сервіси запущені і healthy
|
||
2. ✅ API endpoints доступні через `https://gateway.daarion.city/api/*`
|
||
3. ✅ WebSocket працює через `wss://gateway.daarion.city/ws/city/*`
|
||
4. ✅ City Rooms API повертає 5 default rooms
|
||
5. ✅ Існуючі DAGI сервіси НЕ постраждали
|
||
6. ✅ Prometheus/Grafana бачать нові сервіси
|
||
7. ✅ Немає критичних помилок в логах (перші 30 хвилин)
|
||
|
||
---
|
||
|
||
## 🔮 Next Steps (Після успішного deployment)
|
||
|
||
1. **Frontend Integration** — Оновити Frontend (port 8899) для роботи з новими API
|
||
2. **Multimodal Integration** — Коли документи готові, інтегрувати STT/OCR/Web Search
|
||
3. **Load Testing** — Перевірити навантаження на нові сервіси
|
||
4. **Documentation Update** — Оновити INFRASTRUCTURE.md з новими сервісами
|
||
5. **Monitoring Dashboards** — Створити Grafana дашборди для Phase 1-3
|
||
|
||
---
|
||
|
||
## 📞 Emergency Contacts
|
||
|
||
**Якщо щось йде не так:**
|
||
- Backup БД: `/root/backups/daarion_memory_*.sql`
|
||
- Rollback command: `docker compose -f docker-compose.all.yml stop ...`
|
||
- Nginx restore: `sudo cp /etc/nginx/sites-available/daarion.backup.* ...`
|
||
|
||
---
|
||
|
||
**Документ створено:** Cursor AI Assistant
|
||
**Для проєкту:** MicroDAO DAARION
|
||
**Останнє оновлення:** 2025-11-25
|
||
|