Установка n8n: настройка и запуск локально на сервере, инструкция по разворачиванию self-hosted n8n

Установка 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-маркетплейс) и нажать Создать сервер:

Интерфейс AI-маркетплейса в панели управления Selectel с кнопкой создания сервера.

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

Карточка конфигурации созданного виртуального сервера n8n в панели Selectel.

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

Форма первоначальной настройки и регистрации учетной записи администратора n8n.

Далее с этими же учетными данными можно подключаться и использовать n8n.

Установка вручную

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

Я буду проводить установку на облачном сервере Selectel, на Ubuntu 24.04. Перейдите  в панель управления → Продукты → Облачные серверы → Создать сервер. Задайте минимальную конфигурацию, описанную ранее.

Страница параметров и ресурсов облачного сервера Ubuntu в панели Selectel.

Базовая установка выглядит следующим образом:


      # Устанавливаем 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

Видим в результате запуска следующую картину:

Предупреждение в браузере о необходимости настройки TLS/HTTPS для 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

В результате получаем ту же страницу, что и в предыдущем способе при успешном запуске: 

Страница ошибки защиты n8n о необходимости настройки незащищенного подключения HTTPS.

Также проверить состояние запущенного контейнера можно через команду 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, но в блоге также есть подробная статья на эту тему.

В верхнем меню выбираем Продукты → Домены, затем нажимаем Зарегистрировать домен и выбираем свободное имя. В итоге должно получится что-то похожее: 

Раздел зарегистрированных доменов в панели управления Selectel.

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

Настройка DNS-записи типа A для домена в панели Selectel.

Чтобы иметь возможность обращаться к серверу по 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 после подключения по HTTPS.

Для корректной работы нужно перезапустить n8n, предварительно задав следующие переменные окружения:


      N8N_HOST=<тут доменное имя>
N8N_PROTOCOL=https 
WEBHOOK_URL=https://<тут доменное имя>

После перезапуска службы откройте страницу в браузере, зарегистрируйте аккаунт администратора и сгенерируйте API-ключ в настройках профиля —  он понадобится при установке CLI для работы с n8n из командной строки. 

Для получения ключа в интерфейсе в левом нижнем углу находим Settings → n8n API и нажимаем Create an API key. Ключ нужно сохранить для дальнейшего использования, больше мы его посмотреть не сможем.

Раздел настроек API в веб-интерфейсе n8n для создания ключа.

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