Встановлення 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-адресу сервера.
Без 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 підписує сесії користувачів.
Скопіюйте файл .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 їх не змінює.
Рядок 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 у списку бути не повинно.
Кіт використовує 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.