95e7ca667b
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
41 lines
2.4 KiB
Markdown
41 lines
2.4 KiB
Markdown
---
|
||
tags: [деплой, truenas, portainer]
|
||
created: 2026-07-14
|
||
---
|
||
|
||
# Деплой на TrueNAS
|
||
|
||
Хост: TrueNAS Scale **192.168.0.199**.
|
||
|
||
## План
|
||
|
||
1. **Датасет:** `homeLab/portainer/apps/ai_memory_network` (dataset preset = **Apps**, snake_case за конвенцією сусідніх датасетів) — ✅ створено 2026-07-14 через midclt.
|
||
2. **Portainer stack** `ai-memory-network` (два сервіси):
|
||
- контейнер `ai-memory-server` (Node.js 22, образ збирається з репозиторію);
|
||
порт: HTTP MCP endpoint (напр. `8767`, щоб не конфліктувати з project-agent на `8766`);
|
||
env: `DATABASE_URL`, `API_KEYS`, `PORT`, пізніше `OLLAMA_URL`;
|
||
- контейнер `ai-memory-db` — **PostgreSQL 18 як сервіс проекту** (образ `pgvector/pgvector:pg18`, pgvector у комплекті);
|
||
volume на датасеті проекту; порт назовні не публікуємо (доступ лише всередині stack-мережі).
|
||
3. **БД:** база `ai_memory`, користувач `ai_memory`; `CREATE EXTENSION vector;` — одразу при ініціалізації (embeddings увімкнуться у фазі 2 без змін схеми).
|
||
|
||
## Деплой стека (Portainer UI)
|
||
|
||
Рішення: **build прямо в Portainer з git-репозиторію**.
|
||
|
||
- Portainer: `https://192.168.0.199:31015` → Stacks → Add stack → **Repository**
|
||
- Name: `ai-memory-network`
|
||
- Repository URL: `http://192.168.0.199:30008/sages/ai-memory-network-mcp-server`
|
||
- Authentication: увімкнути; username `sages`, password = Gitea API-токен
|
||
- Compose path: `compose.yml`, reference `refs/heads/main`
|
||
- Environment variables: `POSTGRES_PASSWORD`, `API_KEYS` (значення — в Portainer, НЕ в репозиторії)
|
||
- Порти після деплою: MCP endpoint `http://192.168.0.199:8767/mcp`, healthcheck `/healthz`
|
||
- Redeploy при оновленні коду: кнопка **Pull and redeploy** у стеку
|
||
|
||
## e2e перевірка після деплою
|
||
|
||
- [ ] `GET /healthz` → `{"status":"ok"}`
|
||
- [ ] MCP `initialize` + `tools/list` через `/mcp` з Bearer-ключем
|
||
- [ ] `project_create` → `memory_save` → `memory_query` → `project_save_state` → `project_get_state`
|
||
|
||
Пов'язане: [[Огляд архітектури]], [[Roadmap]]
|