fix(ops): Add network aliases and stabilize DNS for NODA1
- docker-compose.node1.yml: Add network aliases (router, gateway,
memory-service, qdrant, nats, neo4j) to eliminate manual
`docker network connect --alias` commands
- docker-compose.node1.yml: ROUTER_URL now uses env variable with
fallback: ${ROUTER_URL:-http://router:8000}
- docker-compose.node1.yml: Increase router healthcheck start_period
to 30s and retries to 5
- .gitignore: Add noda1-credentials.local.mdc (local-only SSH creds)
- scripts/node1/verify_agents.sh: Improved output with agent list
- docs: Add NODA1-AGENT-VERIFICATION.md, NODA1-AGENT-ARCHITECTURE.md,
NODA1-VERIFICATION-REPORT-2026-02-03.md
- config/README.md: How to add new agents
- .cursor/rules/, .cursor/skills/: NODA1 operations skill for Cursor
Root cause fixed: Gateway could not resolve 'router' DNS name when
Router container was named 'dagi-staging-router' without alias.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
59
.cursor/rules/noda1-operations.mdc
Normal file
59
.cursor/rules/noda1-operations.mdc
Normal file
@@ -0,0 +1,59 @@
|
||||
---
|
||||
description: NODA1 (node1-daarion) — контекст, порти, перевірка агентів, типові виправлення
|
||||
globs: "**/docs/NODA1*.md,**/scripts/node1/**/*.sh,gateway-bot/**/*.py,infra/**/*.yml,NODA1*.md,PROJECT-MASTER-INDEX.md,config/README.md"
|
||||
alwaysApply: false
|
||||
---
|
||||
|
||||
# NODA1 — Операції та контекст
|
||||
|
||||
## Сервер
|
||||
|
||||
| Параметр | Значення |
|
||||
|----------|----------|
|
||||
| **Hostname** | node1-daarion |
|
||||
| **IPv4** | 144.76.224.179 |
|
||||
| **IPv6** | 2a01:4f8:201:2a6::2 |
|
||||
| **SSH** | `ssh root@144.76.224.179` (IPv4) або `ssh root@'[2a01:4f8:201:2a6::2]'` (IPv6) |
|
||||
| **Корінь проекту** | `/opt/microdao-daarion/` |
|
||||
|
||||
**Credentials (SSH):** у файлі `.cursor/noda1-credentials.local.mdc` (username root, password, host keys). Файл у .gitignore. Для автоматизації: `sshpass -p '<з файлу>' ssh -o StrictHostKeyChecking=accept-new root@144.76.224.179 "..."`.
|
||||
|
||||
## Ключові сервіси (порти на сервері, localhost)
|
||||
|
||||
| Сервіс | Порт | Health |
|
||||
|--------|------|--------|
|
||||
| Router | 9102 | `/health` |
|
||||
| Gateway | 9300 | `/health` (містить список агентів) |
|
||||
| Memory | 8000 | `/health` |
|
||||
| Qdrant | 6333 | `/healthz` |
|
||||
| RAG | 9500 | `/health` |
|
||||
| Swapper | 8890 | `/health` |
|
||||
|
||||
Контейнери: `dagi-gateway-node1`, `dagi-staging-router` (або `dagi-*-router`), `dagi-memory-service-node1`, `dagi-qdrant-node1`.
|
||||
|
||||
## Перевірка агентів
|
||||
|
||||
- На сервері: `cd /opt/microdao-daarion && ./scripts/node1/verify_agents.sh`
|
||||
- Gateway health (список агентів): `curl -s http://localhost:9300/health | jq '.agents'`
|
||||
- E2E: `curl -s -X POST http://localhost:9300/debug/agent_ping -H "Content-Type: application/json" -d '{}'`
|
||||
|
||||
Детально: `docs/NODA1-AGENT-VERIFICATION.md`.
|
||||
|
||||
## Типові виправлення
|
||||
|
||||
1. **Router unhealthy** — перезапуск: `docker restart dagi-staging-router` (або актуальна назва контейнера router).
|
||||
2. **Gateway не відповідає** — `docker logs dagi-gateway-node1 --tail 100`; при потребі `docker restart dagi-gateway-node1`.
|
||||
3. **Агент без prompt/token** — перевірити `gateway-bot/http_api.py` (AGENT_REGISTRY) і наявність `*_prompt.txt` та env з токенами на сервері.
|
||||
4. **Зміни в коді** — задеплоїти на NODA1 (git pull, rebuild, restart відповідних контейнерів згідно з проектом).
|
||||
|
||||
## Документація (для агента НОДА1)
|
||||
|
||||
Читати при потребі контексту:
|
||||
|
||||
| Документ | Шлях | Призначення |
|
||||
|----------|------|-------------|
|
||||
| **Master Index** | `PROJECT-MASTER-INDEX.md` | Єдина точка входу до всієї документації, порти, сервіси, швидкі команди |
|
||||
| **Статус НОДА1** | `NODA1-CURRENT-STATUS-2026-01-26.md` | Поточний статус сервера, health, бекапи, Qdrant collections |
|
||||
| **Перевірка агентів** | `docs/NODA1-AGENT-VERIFICATION.md` | Як перевіряти агентів на NODA1, health, E2E, webhook |
|
||||
| **Архітектура агентів** | `docs/NODA1-AGENT-ARCHITECTURE.md` | Повна схема підключення агентів (якщо файл існує) |
|
||||
| **Як додавати агентів** | `config/README.md` | Інструкція додавання нових агентів (якщо файл існує) |
|
||||
72
.cursor/skills/noda1-operations/SKILL.md
Normal file
72
.cursor/skills/noda1-operations/SKILL.md
Normal file
@@ -0,0 +1,72 @@
|
||||
---
|
||||
name: noda1-operations
|
||||
description: Operates and troubleshoots NODA1 (node1-daarion) production server — health checks, agent verification, container restarts, deployment. Use when the user asks about NODA1, node1-daarion, verifying agents on the server, fixing gateway/router, or deploying to NODA1.
|
||||
---
|
||||
|
||||
# NODA1 Operations
|
||||
|
||||
Опікування сервером NODA1: перевірка агентів, health-сервісів, типові виправлення. SSH-credentials зберігаються в **.cursor/noda1-credentials.local.mdc** (файл у .gitignore, не комітити).
|
||||
|
||||
## Контекст
|
||||
|
||||
- **Сервер:** 144.76.224.179 (node1-daarion), IPv6: 2a01:4f8:201:2a6::2, проект на сервері: `/opt/microdao-daarion/`
|
||||
- **Credentials:** читати з `.cursor/noda1-credentials.local.mdc` (username, password, host keys) для виконання SSH-команд.
|
||||
- **Документація для агента НОДА1 (читати при потребі):**
|
||||
- `PROJECT-MASTER-INDEX.md` — єдина точка входу, порти, сервіси, швидкі команди
|
||||
- `NODA1-CURRENT-STATUS-2026-01-26.md` — поточний статус НОДА1, health, бекапи, Qdrant
|
||||
- `docs/NODA1-AGENT-VERIFICATION.md` — перевірка агентів, health, E2E
|
||||
- `docs/NODA1-AGENT-ARCHITECTURE.md` — повна архітектура агентів (якщо є)
|
||||
- `config/README.md` — як додавати агентів (якщо є)
|
||||
- **Cursor Rule:** `.cursor/rules/noda1-operations.mdc` — порти, контейнери, швидкі команди
|
||||
|
||||
## 1. Перевірка агентів на NODA1
|
||||
|
||||
Credentials: **.cursor/noda1-credentials.local.mdc** (root, password, host keys). Для виконання SSH з терміналу використовувати `sshpass` і пароль з цього файлу.
|
||||
|
||||
Виконувати **на сервері** (після SSH):
|
||||
|
||||
```bash
|
||||
ssh root@144.76.224.179
|
||||
cd /opt/microdao-daarion
|
||||
./scripts/node1/verify_agents.sh
|
||||
```
|
||||
|
||||
Або однією командою (з sshpass, пароль з noda1-credentials.local.mdc):
|
||||
|
||||
```bash
|
||||
sshpass -p '<password з файлу>' ssh -o StrictHostKeyChecking=accept-new root@144.76.224.179 "cd /opt/microdao-daarion && ./scripts/node1/verify_agents.sh"
|
||||
```
|
||||
|
||||
По IPv6 (лапки обов'язкові в zsh): `ssh root@'[2a01:4f8:201:2a6::2]'`
|
||||
|
||||
Скрипт перевіряє: prober metrics, Prometheus, Gateway /health (список агентів), /debug/agent_ping (E2E), webhook Helion.
|
||||
|
||||
## 2. Health сервісів (на сервері)
|
||||
|
||||
Після SSH виконати на NODA1:
|
||||
|
||||
```bash
|
||||
curl -s http://localhost:9300/health | jq '.status, .agents_count, .agents'
|
||||
curl -s http://localhost:9102/health
|
||||
curl -s http://localhost:8000/health
|
||||
curl -s http://localhost:6333/healthz
|
||||
docker ps --format 'table {{.Names}}\t{{.Status}}' | grep -E 'gateway|router|memory|qdrant'
|
||||
```
|
||||
|
||||
## 3. Типові виправлення
|
||||
|
||||
| Проблема | Дія (на сервері) |
|
||||
|----------|-------------------|
|
||||
| Router unhealthy | `docker restart dagi-staging-router` (або поточне ім’я контейнера router) |
|
||||
| Gateway не відповідає | `docker logs dagi-gateway-node1 --tail 100`; при потребі `docker restart dagi-gateway-node1` |
|
||||
| Memory 500 | Перевірити env `MEMORY_QDRANT_HOST` та доступність Qdrant |
|
||||
| Агент без prompt/token | Перевірити `gateway-bot/http_api.py` (AGENT_REGISTRY) і на сервері: `*_prompt.txt`, env з `*_TELEGRAM_BOT_TOKEN` |
|
||||
|
||||
## 4. Виправлення помилок
|
||||
|
||||
- **У репо (код, конфіги, скрипти):** зміни робити локально в репозиторії, коміт, при потребі — деплой на NODA1.
|
||||
- **На сервері:** для виконання команд через SSH читати пароль з `.cursor/noda1-credentials.local.mdc` і виконувати: `sshpass -p '<пароль з файлу>' ssh -o StrictHostKeyChecking=accept-new root@144.76.224.179 "команда"`.
|
||||
|
||||
## 5. Деплой на NODA1
|
||||
|
||||
Згідно з проектом: зазвичай `git pull` у `/opt/microdao-daarion`, потім rebuild/restart відповідних сервісів (docker-compose або окремі `docker restart`). Точний процес дивитися в `PROJECT-MASTER-INDEX.md` та deployment-документації репо.
|
||||
Reference in New Issue
Block a user