899c4e66e1
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
4.0 KiB
4.0 KiB
tags, created
| tags | created | |||
|---|---|---|---|---|
|
2026-07-14 |
Деплой на TrueNAS
Хост: TrueNAS Scale 192.168.0.199.
План
- Датасет:
homeLab/portainer/apps/ai_memory_network(dataset preset = Apps, snake_case за конвенцією сусідніх датасетів) — ✅ створено 2026-07-14 через midclt. - 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-мережі).
- контейнер
- БД: база
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, referencerefs/heads/main - Environment variables:
POSTGRES_PASSWORD,API_KEYS(значення — в Portainer, НЕ в репозиторії) - Environment variables (додати дві):
POSTGRES_PASSWORD = fe7cc9c59c4ce85c6383375d4258f513d0f1872e229e6bb5API_KEYS = amk_477a49815af5b1790e6d35f565f5cc50ccb9a02cf89bf908 - Порти після деплою: MCP endpoint
http://192.168.0.199:8767/mcp, healthcheck/healthz - Redeploy при оновленні коду: кнопка Pull and redeploy у стеку
e2e перевірка після деплою
GET /healthz→{"status":"ok"}✅ 2026-07-14- MCP
initialize+tools/listчерез/mcpз Bearer-ключем (без ключа → 401) ✅ 2026-07-14 project_create→memory_save→memory_query→project_save_state→project_get_state✅ 2026-07-14- UTF-8 roundtrip + FTS українською («їжак» знаходиться) ✅ 2026-07-14
Проблеми деплою та рішення (2026-07-14)
mkdir /.docker: permission deniedпри build у Portainer — Portainer у TrueNAS Apps працює як uid 568 без writable$HOME. Рішення: envDOCKER_CONFIG=/data/.dockerу конфігурації застосунку Portainer (Apps → portainer → Additional Environment Variables).ai-memory-db is unhealthy, у лозіmkdir /var/lib/postgresql/18: Permission denied— образ postgres:18 ініціалізується від uid 999, а bind-mount створюється Docker'ом як root:root. Рішення:midclt call --job filesystem.chown→ uid/gid 999 наdb-data.- Кирилиця псується при тестах через Windows curl —
-dз argv конвертується через ANSI-кодову сторінку → U+FFFD. Це проблема клієнта, не сервера. Тестувати через nodefetchабо--data-binary @file. - Правило sudoers
cli -c "app *"зламане — вимагає літеральних лапок в аргументі; треба виправити наcli -c app\ *(окрема задача).
Пов'язане: Огляд архітектури, Roadmap