Знакът на КАГАМИ КАГАМИ
kagami.bg/academy · lesson · machine-readable viewTESTED · VERIFIED 2026-09-30
IDENTITY
module
KW I22 · Two-node pattern: worker + brain
series
KAGAMI Way · Track I — Infrastructure
level
Intermediate
duration
~12 min
trust_label
TESTED (two live internal pairs, no public date) · VERIFIED 2026-09-30 (/api/version endpoint, OLLAMA_HOST binding, Docker host network against official docs)
language
human view: bg · english edition: /en/academy/moduli/KW_I22_Two_Node_Pattern.html
prev
KW_I21_Model_Sync.html
next
../moduli_index.html (all lessons)
PURPOSE

A reusable two-node pattern for local AI: one node runs the OCR/worker container (Docker + Tesseract), a second node runs the model server with the GPU. They talk over a private mesh network. Any site becomes a working "reader" without duplicating the GPU node.

KEY CONCEPTS
COMMANDS / PATHS
CHECKLIST
NEXT MODULE

../moduli_index.html (all lessons) · offer: Quick experiment (kagami.bg/stalbata/)

SOURCES
TAGS
two-nodedockerollamaprivate-meshocrlocal-llmreusable
ТЕСТВАНО ПРОВЕРЕНО · 30.09.2026

Двоен възел: работник + мозък

Преизползваем шаблон: единият възел върти работника (OCR в Docker), другият върти модела; говорят си през частна мрежа. Така всяка площадка става работещ „четец“, без да дублираш скъпия възел с GPU.

⏱ ~12 мин Средно Локален AI частна мрежа · Docker · два възела
Docker + Tesseract🔒 локално Модел-сървър (Ollama)🔒 локално

01Какво ще научиш

02Преди да започнеш

03Стъпки

  1. Идеята: раздели работника от мозъка

    GPU-то е скъпо и рядко. Но четенето на документ не иска GPU — OCR-ът и оркестрацията вървят на евтин възел с обикновен процесор. Само мисленето (моделът) иска GPU. Затова разделяме: работникът (Docker + OCR) стои там, където са документите; мозъкът (модел-сървърът) стои на машината с GPU. Един мозък обслужва много работници.

    схема
    [ работник: Docker + OCR ]  --частна мрежа-->  [ мозък: модел-сървър :11434 + GPU ]
      евтин възел, следена папка                     машина с GPU, текстов модел
  2. Двете роли

    РоляКакво въртиИзисква
    РаботникOCR контейнер, следена папкаDocker
    Мозъкмодел-сървър, текстов моделGPU + модела
    🔗
    Една форма, различни машини
    При нас шаблонът работи на две различни двойки машини. Работният възел дори не иска платформа за синхронизация на файлове — стига следена папка и контейнер.
  3. Свързването през частната мрежа

    Работникът стига мозъка по частния адрес на мозъка в mesh мрежата — нищо не се излага публично. Контейнерът тръгва с --network host, за да ползва мрежата на машината и да стигне порта на модела. Мозъкът трябва да слуша на достижим адрес, не само на localhost — това се задава с OLLAMA_HOST в настройката на услугата.

    bash · на мозъка: слушай на адреса в частната мрежа
    sudo systemctl edit ollama
    # в отворения файл:
    # [Service]
    # Environment="OLLAMA_HOST=<mesh-адрес-на-мозъка>:11434"
    sudo systemctl restart ollama
    bash · на работника: провери и пусни
    # проверка, че мозъкът се вижда
    curl -s http://<mesh-адрес-на-мозъка>:11434/api/version
    # пусни контейнера, сочейки модела на другия възел
    docker run --rm --network host \
      -e OLLAMA_URL=http://<mesh-адрес-на-мозъка>:11434 -e MODEL=<текстов-модел> \
      -v /път/вход:/data doc-ocr /data
    ⛔
    Не отваряй модела към всички
    Локалният API на модела не иска вход — отговаря на всеки, който го стигне по мрежата. Задай адреса в частната мрежа, а не „всички интерфейси“, и не пренасочвай порта към интернет.
    ⚠️
    Само работникът иска Docker
    Мозъкът не иска Docker — само модел-сървърът да слуша. Не усложнявай: ако площадката няма синхронизация на файлове, стига следена папка и контейнер.
  4. Защо е шаблон, а не еднократна настройка

    Веднъж описан, шаблонът пътува: смениш адреса на мозъка и папката — и имаш нов „четец“ на ново място. Един възел с GPU обслужва много работници, без нови видеокарти.

    ✅
    Собственост ≠ акаунт
    Може да ползваш хардуер, който е твой, но е в чужда mesh мрежа (например на партньор). Тогава ползваш възела, но не пипаш акаунта на мрежата. Разграничението „моето желязо ≠ моят акаунт“ пази отношенията чисти.

04Проверка

1. Кой възел иска GPU?

2. Как работникът стига мозъка?

3. Кой възел задължително иска Docker?

4. Защо това е шаблон, а не еднократна настройка?

05Какво следва

06Източници

  1. Ollama API — GET /api/version за проверка, че сървърът се вижда.
  2. Ollama FAQ — OLLAMA_HOST и настройка на услугата в systemd.
  3. Docker: host network — какво прави --network host.
  4. Tailscale — един пример за частна mesh мрежа.
  5. Собствен опит на КАГАМИ: шаблонът работи на две двойки машини.