Установка n8n
Пошаговый гайд по развертыванию open-source платформы n8n. Разбираем способы установки через Docker и npm, настройку домена и HTTPS через Certbot, работу с n8n CLI и подключение LLM-моделей.
Введение
n8n — это open source-инструмент для автоматизации рабочих процессов без написания большого количества кода. Что-то вроде цифрового помощника, с помощью которого можно связывать между собой различные приложения и автоматизировать синхронизацию данных, отправку оповещений и многоэтапные бизнес-процессы. В последние несколько лет n8n стал обретать особенную популярность благодаря интеграциям с ИИ-сервисами.
Построение всех рабочих процессов в n8n происходит в визуальном редакторе с помощью различных объектов: узлов (node), единиц данных (item) и последовательностей узлов (workflows). Чтобы полностью контролировать данные и бизнес-логику, вы можете установить n8n на собственный сервер. В этой инструкции подробно описана настройка и запуск платформы в локальном окружении.
Подготовка к установке
Перед тем как развернуть локальный n8n, необходимо подобрать конфигурацию сервера под планируемую нагрузку.
Требования к серверу
Для тестовых запусков и базовых сценариев достаточно двух ядер процессора, 2-4 ГБ оперативной памяти и от 20 ГБ на диске. Для стабильной работы в компании рекомендуется использовать сервер с четырьмя ядрами процессора, от 4 до 12 ГБ оперативной памяти (n8n работает на Node.js и очень любит кушать память при обработке больших объемов данных) и диском до 80 ГБ.
Домен
Другое обязательное требование для успешной установки n8n — наличие домена, чтобы подключить HTTPS для настройки запросов. Данные от внешних сервисов (CRM, мессенджеры, сайты) должны отправляться на стабильный постоянный адрес по защищенному каналу. Без домена и статического IP-адреса настроить интеграции будет просто невозможно. Реальный домен нужен также и для того, чтобы выпустить на него SSL-сертификат.
Зависимости в Linux, Windows и MacOS
Требования к операционной системе у n8n довольно мягкие. А вот версия среды выполнения (Node.js для npm, Docker для контейнера) в данном случае будет куда важнее. Рассмотрим требования к Linux, Windows и MacOS для развертывания n8n при использовании npm и Docker.
Требования для установки через npm
Запуск n8n осуществляется напрямую в среде Node.js, поэтому для работы подходит любая операционная система, поддерживающая необходимую версию платформы — Linux, macOS или Windows. При этом для Windows в документации предусмотрен отдельный раздел по устранению неполадок, поскольку в этом окружении чаще возникают специфические сложности. Главное техническое требование — заранее установленный Node.js (вместе с npm) версии от 20.19 до 24.x включительно.
Требования для установки через Docker
Поскольку n8n запускается внутри изолированного контейнера, требования к хостовой операционной системе сводятся к правильной поддержке самого Docker. n8n не выдвигает ограничений по минимальным версиям конкретных ОС, поэтому на систему можно установить либо Docker Desktop (доступный для Mac, Windows и Linux), либо связку Docker Engine и Docker Compose. Единственное существенное условие касается Windows: здесь обязательно требуется включенная аппаратная виртуализация в BIOS/UEFI и активированный компонент WSL 2 (Windows Subsystem for Linux).
Установка n8n
Из маркетплейса приложений Selectel
Можно воспользоваться AI-маркетплейсом и арендовать сервер, на котором n8n уже установлен и запущен на отдельной виртуальной машине, полностью отвечающей всем требованиям. После этого достаточно открыть GUI по ссылке и сразу приступить к работе.
Основными преимуществами данного способа являются получение готовой среды за пару минут: образ уже собран, версии совместимы, нет ручной установки Docker, настройки reverse-proxy, БД и переменных окружения. Легко масштабировать ресурсы в несколько кликов и управлять всем из единой панели вместе с другими сервисами Selectel. Инфраструктура размещена в РФ и соответствует требованиям 152-ФЗ, ISO 27001, ГОСТ Р 57580 — это важно для работы с персональными данными.
Из минусов можно выделить меньший контроль и гибкость, чем при полностью самостоятельном развертывании: конфигурация образа предопределена, а кастомизация может быть ограничена. За внешний трафик, публичный IP и дополнительные ресурсы платить придется отдельно.
Такой вариант хорош для тех, кто хочет быстро начать пользоваться n8n, а не заниматься администрированием: аналитикам, маркетологам, небольшим командам и стартапам без выделенного DevOps. Он удобен для быстрого прототипирования и проверки гипотез, когда важна скорость запуска.
В панели управления Selectel необходимо перейти в AI-маркетплейс (Продукты → AI платформа → AI-маркетплейс) и нажать Создать сервер:

Заполняем настройки сервера (можно следовать минимальным необходимым условиям: 2 vCPU, 4 ГБ RAM, 25 ГБ дискового пространства, сеть с доступом в интернет — приватная подсеть без доступа из интернета не подойдет). В качестве образа нужно выбрать n8n VM (Ubuntu 24.04 LTS 64-bit). Все остальные настройки опциональны. В результате получаем сервер с предустановленным и запущенным n8n следующей конфигурации:

После запуска в карточке созданного сервера в том же разделе панели Selectel (Продукты → AI платформа → AI-маркетплейс) переходим в интерфейс (нажимаем Перейти в GUI) и получаем стартовую страницу n8n, в которой нужно создать пользователя-администратора.

Далее с этими же учетными данными можно подключаться и использовать n8n.
Установка вручную
Здесь рассмотрим self-hosted запуск n8n через npm и в Docker. Такой способ может иметь место в случае, когда данные не должны покидать вашу инфраструктуру или когда n8n должен ходить во внутренние сервисы, а также при важности полной свободы в конфигурации и версиях (вы сами выбираете точную версию n8n и момент обновления, задаете любые переменные окружения и так далее).
Первый self-hosted способ — установка вручную через пакетный менеджер npm. Обратите внимание, что данный способ считается устаревшим, начиная с n8n версии 3.0.
Я буду проводить установку на облачном сервере Selectel, на Ubuntu 24.04. Перейдите в панель управления → Продукты → Облачные серверы → Создать сервер. Задайте минимальную конфигурацию, описанную ранее.

Базовая установка выглядит следующим образом:
# Устанавливаем NodeJS:
sudo apt update
sudo apt install nodejs
node -v
# Загружаем диспетчер пакетов и проверяем успешность установки:
sudo apt install npm
npm -v
# Последний шаг в процессе установки n8n — собственно сама установка через npm:
npm install n8n -g
Данный способ установки выглядит очень простым и быстрым, однако не просто так в официальной документации указано, что он является устаревшим: при такой установке возникает проблема с зависимостями, и на GitHub в заведенных issues разработчики n8n в первую очередь рекомендуют использовать установку через Docker. Однако, если очень нужно все-таки сделать это без контейнеризации, необходимо использовать версию Node.js как минимум начиная с 22.16 (в данный момент она поддерживается, однако при установке вылезает множество предупреждений о скором прекращении поддержки зависимостей).
# Сначала устанавливаем nvm — инструмент для управления версиями node jscurl -o- https://githubusercontent.com | bash
# Обновляем терминал, чтобы иметь доступ к nvm
source ~/.bashrc
# Устанавливаем нужную нам версию
nvm install 22.16
nvm use 22.16
После этого запускаем n8n, дожидаемся установки и заходим в него через браузер:
# Запускаем n8n
n8n
Видим в результате запуска следующую картину:

n8n поднят на сервере, но для дальнейшей работы требует настройки TLS/HTTPS — это будет показано в следующих шагах.
Установка через Docker
Третий и наиболее рекомендуемый разработчиками способ — установка через Docker. Запуск платформы в изолированном контейнере исключает проблемы с системными зависимостями и упрощает дальнейшее обслуживание.
Для краткой демонстрации данного способа буду использовать все тот же облачный сервер на Ubuntu 24.04. Для начала установим Docker и Docker Compose:
curl -fsSL https://docker.com -o get-docker.sh && sh get-docker.sh
После создадим volume в Docker, чтобы данные n8n переживали перезапуск сервера:
docker volume create n8n_data
Скачиваем образ и сразу его запускаем:
docker run -d --name n8n -p 5678:5678 -v n8n_data:/home/node/.n8n docker.n8n.io/n8nio/n8n
В результате получаем ту же страницу, что и в предыдущем способе при успешном запуске:

Также проверить состояние запущенного контейнера можно через команду docker ps:
root@n8n:~# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b6cc81400ed2 docker.n8n.io/n8nio/n8n "tini -- /docker-ent…" 30 seconds ago Up 27 seconds 0.0.0.0:5679->5678/tcp, [::]:5679->5678/tcp n8n
Подробное руководство по развертыванию контейнера c n8n можно найти в инструкции в Академии Selectel.
Какой метод установки выбрать
Наряду с подбором железа, ключевую роль играет среда выполнения и способ развертывания: запуск на «чистом» Node.js или в Docker. От этого решения будет зависеть все — от скорости первого запуска до того, насколько болезненным станет обновление системы через полгода.
Как упоминалось выше, n8n требует Node.js версии 22.16 или новее. Вся разница в том, где именно крутится процесс: напрямую в хостовой ОС или внутри Docker-контейнера, внутри которого уже упакованы все нужные зависимости.
Прямая установка Node.js позволяет быстрее приступить к работе, так как не придется разбираться с контейнеризацией и писать docker-compose.yml. Однако со временем обслуживание может стать головной болью: каждую соседнюю службу (PostgreSQL, Redis, Nginx) придется ставить и администрировать отдельно, вручную следя за конфигурационными файлами, совместимостью версий и обновлениями.
Вас также могут заинтересовать эти материалы
Проверка корректности установки
Для проверки корректности установки достаточно обратить внимание на вывод служебных сообщений в консоли. При успешном старте система фиксирует текущую версию платформы, строит индекс зависимостей рабочих процессов и выводит текстовое сообщение:
Recorded version change: (none) -> 2.22.6
Version: 2.22.6
Building workflow dependency index...
Finished building workflow dependency index. Processed 0 draft workflows, 0 published workflows.
Editor is now accessible via:
http://localhost:5678
Press "o" to open in Browser.
В логах нам дается адрес, по которому мы можем обратиться и попасть в n8n из браузера, как это было показано выше.
Настройка n8n
Настройка доступа по HTTPS и доменному имени
Для того, чтобы n8n-сервер открывался по доменному имени, нам необходимо само доменное имя и созданная A-запись. Здесь я кратко покажу пример создания домена и записи в панели управления Selectel, но в блоге также есть подробная статья на эту тему.
В верхнем меню выбираем Продукты → Домены, затем нажимаем Зарегистрировать домен и выбираем свободное имя. В итоге должно получится что-то похожее:

Далее, находясь в этом же разделе, переходим в раздел Доменные зоны в боковом меню слева, нажимаем Добавить зону и указываем наше имя. После этого проваливаемся в созданную нами зону, нажимаем Добавить и создаем запись с типом А с указанием IP-адреса хоста, на котором развернут n8n.

Чтобы иметь возможность обращаться к серверу по HTTPS, нам нужно установить и настроить Nginx, а также SSL-сертификат. В данном примере будем выпускать сертификат через Certbot — утилиту с открытым исходным кодом для получения и обновления SSL/TLS-сертификатов от центра сертификации Let’s Encrypt.
Для начала просто устанавливаем Nginx:
sudo apt install -y nginx
Далее создаем конфигурационный файл под наш сервер:
sudo nano /etc/nginx/sites-available/n8n.conf
И наполняем его содержимым (в server_name пишем имя, по которому можно обратиться к запущенному n8n):
server {
listen 80;
server_name <тут имя>;
client_max_body_size 100m;
location / {
proxy_pass http://127.0.0.1:5678;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $host;
proxy_read_timeout 3600s;
proxy_send_timeout 3600s;
proxy_buffering off;
}
}
После этого запускаем Nginx, предварительно применив созданную выше конфигурацию:
# Ссылаемся на созданный ранее файл конфигурации в качестве доступного в nginx
sudo ln -s /etc/nginx/sites-available/n8n.conf /etc/nginx/sites-enabled/
# Удаляем дефолтную конфигурацию сервера nginx
sudo rm -f /etc/nginx/sites-enabled/default
# Проверяем корректность конфигурационного файла
sudo nginx -t
# Перезапускаем nginx
sudo systemctl reload nginx
Далее устанавливаем вышеупомянутую утилиту для выпуска сертификата:
sudo apt install -y certbot python3-certbot-nginx
И выпускаем сертификат, указывая имя нашего n8n сервера:
sudo certbot --nginx -d <тут имя>
В процессе выпуска у вас спросят электронную почту и попросят согласиться с условиями использования, после этого утилита сама добавит SSL-сертификат в ранее написанную нами конфигурацию сервера. После перезапуска Nginx пробуем подключиться к n8n через HTTPS и получаем стартовую страницу:

Для корректной работы нужно перезапустить n8n, предварительно задав следующие переменные окружения:
N8N_HOST=<тут доменное имя>
N8N_PROTOCOL=https
WEBHOOK_URL=https://<тут доменное имя>
После перезапуска службы откройте страницу в браузере, зарегистрируйте аккаунт администратора и сгенерируйте API-ключ в настройках профиля — он понадобится при установке CLI для работы с n8n из командной строки.
Для получения ключа в интерфейсе в левом нижнем углу находим Settings → n8n API и нажимаем Create an API key. Ключ нужно сохранить для дальнейшего использования, больше мы его посмотреть не сможем.

Установка n8n CLI
n8n CLI — это легковесный клиент командной строки, предназначенный для общения с инстансом n8n через API. Его можно использовать как для доступа с хоста, на котором запущен n8n, так и для удаленного доступа через API-ключ.
Использовать CLI для удаленного доступа имеет смысл в том случае, если целью использования является разработка, интеграция или работа агентов. В таком случае аутентификация происходит через API-ключ, при этом есть разграничение прав доступа. Использовать CLI с той же машины, на которой запущен n8n, стоит для управления самим инстансом n8n и бэкапов.
Выполним установку и настройку CLI для удаленного доступа к n8n:
# Устанавливаем утилиту
npm install -g @n8n/cli
# Настраиваем url для доступа к инстансу
n8n-cli config set-url <ваш инстанс>
# Устанавливаем ключ
n8n-cli config set-api-key <ваш ключ>
# Проверяем полученный конфиг
n8n-cli config show
Альтернативно, вместо использования команды config можно задать переменные окружения:
export N8N_URL=<url инстанса>
export N8N_API_KEY=<ваш ключ>
n8n CLI поддерживает небольшой набор команд: они позволяют управлять проектами, создавать и просматривать сценарии автоматизации и отслеживать их выполнение, генерировать учетные данные, а также подключать систему как навык для ИИ-агентов.
Убедиться, что утилита работает корректно, можно с помощью тестового сценария. Для этого сначала понадобится создать файл с его описанием в формате JSON (например, workflow.json):
{
"name": "Demo Workflow",
"nodes": [
{
"parameters": {},
"id": "a1b2c3d4-0001-4000-8000-000000000001",
"name": "Manual Trigger",
"type": "n8n-nodes-base.manualTrigger",
"typeVersion": 1,
"position": [
240,
300
]
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "b1b2c3d4-0002-4000-8000-000000000002",
"name": "message",
"value": "Hello from n8n!",
"type": "string"
}
]
},
"options": {}
},
"id": "a1b2c3d4-0002-4000-8000-000000000002",
"name": "Set Message",
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
460,
300
]
}
],
"connections": {
"Manual Trigger": {
"main": [
[
{
"node": "Set Message",
"type": "main",
"index": 0
}
]
]
}
},
"settings": {
"executionOrder": "v1"
}
}
Затем создаем на основе данного описания воркфлоу через n8n CLI:
cat workflow.json | n8n-cli workflow create --stdin
Далее находим наш воркфлоу в списке существующих (можно также проверить в веб-интерфейсе, там он тоже появится):
n8n-cli workflow list
Обновление
Чтобы установить конкретную версию n8n, можно использовать синтаксис @. Например, для версии 0.126.1 команда будет выглядеть так:
npm install -g n8n@0.126.1
Для обновления до следующей версии можно использовать следующую команду:
npm install -g n8n@next
И также обновление до последней версии:
npm update -g n8n
Аутентификация пользователей
Основным способом аутентификации в n8n является встроенная система User Management, активная по умолчанию: при первом запуске создается владелец (его создание мы видели при первом запросе к серверу), который затем приглашает других пользователей по электронной почте и назначает им роли (owner, admin, member) с разграничением доступа к рабочему процессу и проектам. Вход осуществляется по почте или паролю, поддерживается восстановление пароля через SMTP и двухфакторная аутентификация (2FA) через TOTP.
Для корпоративных сценариев доступен SSO через SAML и LDAP — это enterprise-функции, требующие лицензии и позволяющие подключить внешнего провайдера идентификации и управлять пользователями централизованно.
Отдельно от аутентификации в UI можно защищать входящие вебхуки (Basic Auth, Header Auth, JWT — настраивается на самой ноде Webhook) и использовать API-ключи для программного доступа к REST API n8n (такой ключ мы использовали для доступа через n8n CLI).
Переменные окружения n8n
Мы уже встретили переменные окружения n8n, необходимые для работы сервера (WEBHOOK_URL, N8N_PROTOCOL, N8N_HOST), однако их гораздо больше. Опишу наиболее полезные.
Для настройки работы с сетью или сервером можно изменять следующие переменные окружения:
N8N_HOST— хост, на котором слушает n8n (по умолчанию localhost);N8N_PORT— порт (по умолчанию 5678);N8N_PROTOCOL— http или https;N8N_LISTEN_ADDRESS— адрес для биндинга (по умолчанию 0.0.0.0);N8N_PATH— путь, по которому доступен UI/API (по умолчанию /);WEBHOOK_URL— базовый URL для вебхуков (важно при работе за прокси).
Конфигурация используемой базы данных выполняется с помощью переменных (для рабочей среды вместо дефолтной SQLite рекомендуется выбрать PostgreSQL или MySQL). Главный параметр — DB_TYPE, указывающий тип СУБД: sqlite (по умолчанию), postgresdb или mysqldb. При выборе PostgreSQL параметры подключения (HOST, PORT, DATABASE, USER, PASSWORD, SCHEMA) задаются через группу префиксов DB_POSTGRESDB_*, а для MySQL — аналогично через DB_MYSQLDB_*. В случае же использования SQLite через переменную DB_SQLITE_DATABASE просто указывается путь к файлу базы данных.
Настройки безопасности и аутентификации представлены следующим образом:
N8N_ENCRYPTION_KEY— определяет ключ шифрования учетных данных;N8N_USER_MANAGEMENT_DISABLED— отключает управление пользователями, позволяя работать с инстансом без создания учетной записи владельца, регистрации и входа по логину/паролю;N8N_JWT_AUTH_ACTIVE,N8N_JWT_AUTH_HEADER,N8N_JWT_ISSUER— отвечают за настройку JWT-токенов;N8N_SECURE_COOKIE— позволяет заставить систему передавать cookie-файлы исключительно по защищенному протоколу HTTPS.
Подключения к LLM через API
n8n поддерживает работу с LLM двумя способами: через готовые ноды для конкретных провайдеров и с помощью универсальных HTTP-запросов.
Подключение первого типа настраивается прямо в веб-интерфейсе платформы. Для этого в n8n предусмотрена специальная категория LangChain-нод, предлагающая готовую интеграцию с популярными провайдерами (OpenAI Chat Model, Anthropic Chat Model, Google Gemini Chat Model и другие).
Если нужного провайдера нет среди готовых нод или нужен нестандартный вызов — используется нода HTTP Request напрямую к API провайдера. Пример настройки такой ноды:
URL: https://api.anthropic.com/v1/messages
Method: POST
Headers: x-api-key: {{ $credentials.apiKey }}, anthropic-version: 2023-06-01, content-type: application/json
Body (JSON):
{
"model": "claude-sonnet-5",
"max_tokens": 1024,
"messages": [
{ "role": "user", "content": "{{ $json.userMessage }}" }
]
}