Власна інфраструктура для AI-сервісів і OSINT-автоматизації: від локальної розробки до безперервного розгортання на сервері
Система складається з двох вузлів з чітко розділеними ролями. devNVS — локальна Windows-станція, на якій відбувається вся розробка, планування і управління. VPS (Linux KVM) — віддалений сервер для безперервних сервісів і виконання задач.
| Вузол | Роль | Стек |
|---|---|---|
| devNVS (local) | Planning · coding · git · SSH access · sessions | Windows 10, i5-6500, 16 GB RAM |
| VPS (remote) | 24/7 services · APIs · PostgreSQL · workers · Docker runtime | Ubuntu 24.04, 2 vCPU, 8 GB RAM, 96 GB SSD |
Всі сервіси запущені в Docker Compose. Traefik — єдина точка входу із захистом TLS. Сервіси згруповані в ізольовані мережі; явні міжмережеві зв'язки — тільки між пов'язаними шарами.
| Шар | Сервіс | Роль |
|---|---|---|
| Entrypoint | Traefik | Reverse proxy, wildcard TLS, routing |
| Project nets | n8n + OSINT API | Workflow adapter + OSINT data API |
| Project nets | TCK Bot | Signal→PDF→AI→Decision pipeline |
| Project nets | Hermes Agent | AI orchestration layer |
| Shared tools | Crawl4AI | Web scraping / document collection |
| Shared tools | Ollama | Local LLM (resource-sensitive; cloud-first) |
| Data layer | PostgreSQL 16 + pgvector 0.8.2 | Structured truth, vector search |
| Data layer | Redis | Cache / queue / event broker |
osint-base — стійке ядро OSINT-даних: схема, API, скрипти. На VPS синхронізується через git і доступний через PostgreSQL / OSINT API. Проєкти-виробники записують дані через узгоджений API, а не напряму в схему.
| Шар | Сховище | Правило |
|---|---|---|
| Структурована база | PostgreSQL + pgvector | FACT / SOURCE / GAP / DISC / ENTITY через API |
| Необроблені матеріали | External (GDrive) | Не дублюються в БД; зберігаються як посилання |
| Secrets | Local .env (не в image) | Не комітяться; не в logs; не в image |
osint-base не залежить від конкретного проєкту-виробника. Сьогодні один пайплайн — завтра інший; база даних і API-контракт залишаються.
| Проєкт | Опис | Стан |
|---|---|---|
| TCK Bot (HARON) | Signal-запит → WhatsApp → PDF → AI-аналіз → висновок. Мобілізаційний відбір. SLA-ескалації, реєстр кандидатів, шифрування артефактів. | Active |
| OSINT API + n8n | OSINT pipeline API (FastAPI + PostgreSQL); n8n як адаптер автоматизації збору й обробки. Не центральна шина — окремий адаптер для проєкту. | Active |
| Hermes Agent | Рівень оркестрування AI: Claude Code як основний агент, Hermes — розгорнутий контейнер для автономних задач. | Active |
| Crawl4AI + Ollama | Спільні інструменти: збір даних із вебу і локальна LLM для швидкого виведення. Ollama — для задач де затримка важливіша за якість відповіді. | Active |
Claude Code / Hermes = оркестратор. Потужні моделі — тільки для аналізу, синтезу і прийняття рішень. Маршрутизація і класифікація — дешеві моделі або правила. Чому: дорога модель на простій задачі — марна трата бюджету без виграшу в якості.
Кожен проєкт — окрема Docker-мережа. Явні міжмережеві зв'язки — тільки через shared/data шари. Неявні зв'язки між проєктами заборонені. Чому: без ізоляції компрометація одного контейнера поширюється на весь стек; явні зв'язки читаються в compose-файлі, неявні — ні.
Gemini Flash / Claude — основні моделі. Ollama — тільки там, де затримка важливіша за якість. Чому: наявна відеокарта (GTS 450, 969 МБ VRAM) не підходить для жодної сучасної мовної моделі; купувати GPU під dev-стек не виправдано.
Граф зберігається в PostgreSQL + pgvector (не Neo4j). Gephi / NetworkX — для аналізу; PostgreSQL — для постійного сховища. Чому: PostgreSQL вже є в стеку. Neo4j — це ще один тип БД для обслуговування. pgvector дає векторний пошук без додаткового сервісу.
n8n — не центральна шина, а адаптер для конкретного проєкту. Логіка — в Python/FastAPI; n8n лише як клей для автоматизацій. Чому: шина, на якій тримається все — єдина точка відмови. Якщо n8n падає, бізнес-логіка в FastAPI продовжує працювати.
osint-base незалежний від проєктів-виробників. Запис даних — тільки через API-контракт. Зміни схеми — тільки через план міграції і план відкату. Чому: проєкти закінчуються — курс, підрядник, ітерація. Дані не мають залежати від того, хто їх створив.
| Статус | Milestone |
|---|---|
| ✓ | SSH + Traefik + TLS — базова інфраструктура |
| ✓ | PostgreSQL 16 + pgvector 0.8.2 — шар даних |
| ✓ | TCK Bot — перший розгорнутий сервіс |
| ✓ | infra_net / shared_net / data_net / мережі проєктів — ізоляція |
| ✓ | osint-base → стійке ядро даних (схема + API + скрипти) |
| ✓ | n8n + OSINT API на data_net |
| ✓ | Хмарний файрвол + захист Redis + 4 ГБ swap |
| ✓ | Hermes agent — рівень оркестрування |
| ✓ | STORAGE_BACKEND=postgres (подвійний запис перевірено) |