EUR
european

EUR

usa

USD

Ex. VAT Ex. VAT 0%

Встановлення n8n AI Starter Kit з Ollama

Self-hosted AI Starter Kit це шаблон Docker Compose від команди n8n для AI-workflows, які повністю працюють на вашому сервері. Запити та документи обробляє локальна мовна модель, у зовнішні AI-сервіси вони не надсилаються.

До кіта входять чотири компоненти:

  • n8n, платформа автоматизації з AI-нодами;
  • Ollama, яка запускає відкриті мовні моделі локально;
  • Qdrant, векторна база даних для зберігання та пошуку ембедингів документів;
  • PostgreSQL, база даних для n8n.

Автори позначають офіційний кіт як призначений для тестування. На момент написання, якщо запустити його за README на сервері з публічною IP-адресою, виникає кілька проблем: n8n, Ollama і Qdrant відкриті в інтернет, в Ollama і Qdrant немає автентифікації, секрети в конфігурації однакові для всіх встановлень, а демо-workflow не імпортується. У цій інструкції кіт встановлюється як є, а все перелічене виправляється окремим файлом override, тож кіт і надалі можна оновлювати з репозиторію.

Інструкцію написано для Ubuntu 24.04 LTS, n8n 2.47.3, Ollama 0.40.16, Qdrant 1.20.0, Docker 29 і Docker Compose v5.

Що знадобиться

  • сервер з Ubuntu 24.04 LTS і root-доступом по SSH;
  • щонайменше 15 ГБ вільного місця на диску: образи Docker займають близько 11 ГБ, модель Llama 3.2 за замовчуванням близько 2 ГБ;
  • домен або піддомен для n8n, наприклад n8n.example.com, із записом A, що вказує на IPv4-адресу сервера.

Info

Без GPU модель працює на процесорі й відповідає повільно. Для постійної роботи обирайте сервер з GPU NVIDIA.

Усі команди нижче виконуються від root. Якщо ви працюєте під звичайним користувачем із правами sudo, додавайте sudo перед кожною командою.

Встановлення Docker

Встановіть Docker Engine і плагін Compose з офіційного репозиторію Docker:

apt update && apt install -y ca-certificates curl git install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc chmod a+r /etc/apt/keyrings/docker.asc

Додайте репозиторій:

echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo $VERSION_CODENAME) stable" > /etc/apt/sources.list.d/docker.list

Встановіть пакети та перевірте версії:

apt update apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker --version docker compose version

Завантаження кіта

Клонуйте репозиторій у /opt і створіть файл конфігурації з прикладу:

cd /opt git clone https://github.com/n8n-io/self-hosted-ai-starter-kit.git cd self-hosted-ai-starter-kit cp .env.example .env

Заміна секретів за замовчуванням

У файлі прикладу стоять фіксовані значення, наприклад password для PostgreSQL і super-secret-key для ключа шифрування n8n. Вони однакові в кожній копії кіта, тому замініть їх випадковими:

sed -i "s/^POSTGRES_PASSWORD=.*/POSTGRES_PASSWORD=$(openssl rand -hex 24)/" .env sed -i "s/^N8N_ENCRYPTION_KEY=.*/N8N_ENCRYPTION_KEY=$(openssl rand -hex 32)/" .env sed -i "s/^N8N_USER_MANAGEMENT_JWT_SECRET=.*/N8N_USER_MANAGEMENT_JWT_SECRET=$(openssl rand -hex 32)/" .env chmod 600 .env

N8N_ENCRYPTION_KEY шифрує облікові дані, які ви зберігаєте в n8n. N8N_USER_MANAGEMENT_JWT_SECRET підписує сесії користувачів.

Warning

Скопіюйте файл .env у надійне місце поза сервером, наприклад у менеджер паролів. Без N8N_ENCRYPTION_KEY збережені в n8n облікові дані не розшифрувати після відновлення.

Закриття портів і HTTPS

У docker-compose.yml кіта n8n (порт 5678), Ollama (11434) і Qdrant (6333) опубліковано на всіх мережевих інтерфейсах. Для опублікованих портів Docker додає власні правила файрвола, і вони обходять UFW. На сервері з публічною IP-адресою це означає, що будь-хто може відкрити редактор n8n по звичайному HTTP і користуватися API Ollama та Qdrant, у яких немає автентифікації.

Замість редагування docker-compose.yml створіть поруч файл docker-compose.override.yml. Docker Compose читає його автоматично і застосовує поверх основного. Власні файли кіта залишаються без змін, тому їхнє оновлення з репозиторію не перезапише ваші налаштування.

Створіть файл /opt/self-hosted-ai-starter-kit/docker-compose.override.yml і замініть n8n.example.com своїм доменом:

services: n8n: ports: !override - "127.0.0.1:5678:5678" environment: - N8N_HOST=n8n.example.com - N8N_PROTOCOL=https - N8N_PROXY_HOPS=1 - N8N_WEBHOOK_URL=https://n8n.example.com/ ollama-cpu: ports: !reset [] ollama-gpu: ports: !reset [] qdrant: ports: !reset [] caddy: image: caddy:2 restart: unless-stopped networks: ['demo'] ports: - "80:80" - "443:443" volumes: - ./Caddyfile:/etc/caddy/Caddyfile:ro - caddy_data:/data - caddy_config:/config volumes: caddy_data: caddy_config:

Що змінює цей файл:

  • n8n слухає лише 127.0.0.1, користувачі потрапляють у нього через Caddy по HTTPS;
  • Ollama і Qdrant взагалі не публікуються, n8n звертається до них внутрішньою мережею Docker за іменами ollama і qdrant;
  • додається Caddy, зворотний проксі, який отримує та подовжує сертифікат Let's Encrypt, якщо домен вказує на сервер, а порти 80 і 443 відкриті;
  • томи з даними n8n, PostgreSQL, Qdrant і Ollama залишаються такими, як задані в docker-compose.yml кіта, override їх не змінює.

Info

Рядок networks: ['demo'] обов'язковий. Усі сервіси кіта працюють у мережі demo, і без цього рядка Caddy не дістанеться до n8n і поверне помилку 502.

N8N_WEBHOOK_URL задає адресу, яку n8n використовує для вебхуків, зокрема для вікна чату в редакторі. Домен має вказувати на ваш сервер з того комп'ютера, де ви відкриваєте n8n. Інакше чат покаже лише повідомлення "Failed to receive response" і ніяк не вкаже на DNS як причину.

Створіть файл /opt/self-hosted-ai-starter-kit/Caddyfile зі своїм доменом:

n8n.example.com { reverse_proxy n8n:5678 }

Перевірте підсумкову конфігурацію:

docker compose --profile cpu config | grep -A4 "ports:"

У списку мають бути лише n8n на 127.0.0.1:5678 і Caddy на портах 80 і 443.

Налаштування файрвола

Файл override вже прибирає внутрішні сервіси кіта з мережі. UFW блокує весь інший вхідний трафік на сервер, крім SSH, HTTP і HTTPS. Дозвольте їх і увімкніть UFW:

ufw allow OpenSSH ufw allow 80/tcp ufw allow 443/tcp ufw --force enable

Запуск кіта

Запустіть стек у режимі CPU:

docker compose --profile cpu up -d

Під час першого запуску Docker завантажує близько 11 ГБ образів, а окремий контейнер завантажує модель Llama 3.2. Це триватиме певний час, залежно від швидкості каналу. Перевірте, що модель на місці:

docker exec ollama ollama list

У списку має бути llama3.2:latest.

Перевірте, що на сервері відкриті лише потрібні порти:

ss -tlnp

Порти 80 і 443 мають бути відкриті на всіх інтерфейсах, порт 5678 лише на 127.0.0.1. Портів 11434 і 6333 у списку бути не повинно.

Info

Кіт використовує PostgreSQL 16. У лозі n8n може з'явитися попередження, що ця версія поза підтримуваним діапазоном. На роботу n8n це попередження не впливає.

Імпорт демо-workflow

До кіта входять демо-workflow і два демонстраційні облікові записи (credentials). Вони мають імпортуватися під час першого запуску, але на момент написання перевірка імпорту в docker-compose.yml кіта ніколи не спрацьовує, і нічого не імпортується. Виконайте імпорт вручну:

docker compose --profile cpu run --rm n8n-import -c "n8n import:credentials --separate --input=/demo-data/credentials" docker compose --profile cpu run --rm n8n-import -c "n8n import:workflow --separate --input=/demo-data/workflows"

Опція -c обов'язкова: сервіс n8n-import запускає оболонку, і без -c команда падає з помилкою "can't open 'n8n'".

Створення акаунта власника

Відкрийте https://n8n.example.com у браузері та створіть акаунт власника: вкажіть email, ім'я, прізвище та пароль не коротший за 8 символів, щонайменше з однією цифрою та однією великою літерою. Після першого входу n8n може показати коротке опитування і пропозицію безкоштовного ліцензійного ключа на частину функцій Community Edition. І те, і інше необов'язкове.

На головній сторінці з'явиться імпортований Demo workflow.

Виправлення демо-credentials

Демо-credentials зашифровано ключем за замовчуванням з .env.example. Після заміни N8N_ENCRYPTION_KEY n8n не може їх розшифрувати, тому обидва записи треба заповнити заново. Налаштування збережуться зашифрованими вже вашим ключем.

Відкрийте Overview, перейдіть на вкладку Credentials і відкрийте Local Ollama service. Підключення не проходить, а в полі Base URL стоїть http://localhost:11434. Усередині контейнера n8n localhost це сам n8n, а не Ollama.

Вкажіть у Base URL значення http://ollama:11434, поле API Key залиште порожнім і натисніть Save. n8n перевірить підключення і покаже Connection tested successfully.

Відкрийте Local QdrantApi database. Вкажіть у Qdrant URL значення http://qdrant:6333, поле API Key залиште порожнім і натисніть Save.

Перевірка демо-workflow

Відкрийте Demo workflow. У ньому три ноди: Chat Trigger приймає повідомлення, Basic LLM Chain передає його моделі, а Ollama Chat Model надсилає його в Llama 3.2 в Ollama.

Натисніть Open chat внизу полотна і надішліть коротке запитання. Під час виконання ноди стають зеленими, а відповідь моделі з'являється в чаті. Перша відповідь триває довше, бо Ollama завантажує модель у пам'ять.

Якщо чат показує "Failed to receive response", а workflow не запускається, перевірте, що домен з N8N_WEBHOOK_URL вказує на ваш сервер з вашого комп'ютера.

Використання GPU NVIDIA

Якщо на сервері є GPU NVIDIA, кіт може запускати Ollama на ньому. Для цього Docker потрібен NVIDIA Container Toolkit. Якщо ви ще не використовували GPU з Docker на цьому сервері, спершу встановіть його за інструкцією Ollama для Docker.

Потім запускайте кіт із профілем gpu-nvidia замість cpu:

docker compose --profile gpu-nvidia up -d

Файл override вище вже закриває порт Ollama і для цього профілю. Використовуйте той самий профіль в усіх інших командах. Наприклад, імпорт демо з профілем GPU:

docker compose --profile gpu-nvidia run --rm n8n-import -c "n8n import:credentials --separate --input=/demo-data/credentials" docker compose --profile gpu-nvidia run --rm n8n-import -c "n8n import:workflow --separate --input=/demo-data/workflows"

І оновлення:

cd /opt/self-hosted-ai-starter-kit git pull docker compose --profile gpu-nvidia pull docker compose --profile gpu-nvidia up -d

Оновлення кіта

Щоб оновити файли та образи кіта, виконайте команди з вашим профілем:

cd /opt/self-hosted-ai-starter-kit git pull docker compose --profile cpu pull docker compose --profile cpu up -d

Ваші docker-compose.override.yml, Caddyfile і .env не входять до репозиторію, тому git pull їх не змінює.

Що далі

Кіт готовий для ваших AI-workflows. Далі можна:

  • завантажити інші моделі командою docker exec ollama ollama pull з іменем моделі та обрати їх у ноді Ollama Chat Model;
  • використовувати Qdrant для пошуку у власних документах через ноди векторного сховища в n8n;
  • підключити свої сервіси та будувати workflows, які поєднують їх з локальною моделлю.

Про встановлення n8n без AI-компонентів дивіться посібник Встановлення n8n з Docker і PostgreSQL. У ньому ж описано резервне копіювання та відновлення бази n8n.

VAT

  • Other

    Ex. VAT

    0%
  • austria

    Austria

    20%
  • Belgium

    Belgium

    21%
  • Bulgaria

    Bulgaria

    20%
  • Croatia

    Croatia

    25%
  • Cyprus

    Cyprus

    19%
  • Czech Republic

    Czech Republic

    21%
  • Denmark

    Denmark

    25%
  • Estonia

    Estonia

    22%
  • France

    France

    20%
  • Finland

    Finland

    24%
  • Germany

    Germany

    19%
  • Greece

    Greece

    24%
  • Hungary

    Hungary

    27%
  • Ireland

    Ireland

    23%
  • Italy

    Italy

    22%
  • Latvia

    Latvia

    21%
  • Lithuania

    Lithuania

    21%
  • Luxembourg

    Luxembourg

    17%
  • Malta

    Malta

    18%
  • Netherlands

    Netherlands

    21%
  • Poland

    Poland

    23%
  • Portugal

    Portugal

    23%
  • Romania

    Romania

    19%
  • Slovakia

    Slovakia

    20%
  • Slovenia

    Slovenia

    22%
  • Spain

    Spain

    21%
  • Sweden

    Sweden

    25%
  • USA

    USA

    0%
european
states
  • kingdom
  • germany
  • Español
  • French
  • Hrvatska
  • Italiano
  • Poland
  • Slovenski
  • ukraine
  • Türkçe
  • Русский
  • Other
  • Austria
  • Belgium
  • Bulgaria
  • Croatia
  • Cyprus
  • Czech Republic
  • Denmark
  • Estonia
  • Finland
  • France
  • Germany
  • Greece
  • Hungary
  • Ireland
  • Italy
  • Latvia
  • Lithuania
  • Luxembourg
  • Malta
  • Netherlands
  • Poland
  • Portugal
  • Romania
  • Slovakia
  • Slovenia
  • Spain
  • Sweden
  • USA