Установка 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.