n8n – open-source платформа для автоматизации рабочих процессов, которая позволяет связывать различные сервисы и приложения без необходимости писать сложный код. Работа платформы организована через отдельные блоки, выполняющие конкретные задачи, например, отправку письма, работу с базой данных или запрос к API. Веб-интерфейс n8n позволяет визуально строить процессы, задавать условия и триггеры, а также запускать их по расписанию или по событиям. Платформа поддерживает интеграцию с сотнями сервисов и может быть установлена как на локальном сервере, так и на VPS.
В статье разберём, как установить n8n на Linux и настроить доступ к веб-интерфейсу платформы с использованием протокола HTTPS.
Как установить n8n на Linux
Установка n8n на Linux доступна с применением Docker. В нашем справочнике есть инструкции по инсталляции Docker как на Ubuntu и Debian, так и на CentOS Stream 9.
Для обеспечения безопасности передачи данных, а также предотвращения перехвата и подмены запросов между клиентами платформы, целесообразно защитить трафик, проходящий через n8n, с помощью протокола HTTPS. Такую защиту способен обеспечить Traefik – обратный прокси, который автоматически обнаруживает новые сервисы и настраивает маршрутизацию без ручного конфигурирования.
Traefik обеспечит доступ к веб-интерфейсу n8n через HTTPS с помощью TLS-сертификата, который он запросит в Let’s Encrypt – бесплатном автоматизированном центре сертификации. Но поскольку TLS-сертификат от Let’s Encrypt может быть установлен только на сайт, доступ к которому осуществляется по доменному имени, ваш VPS должен быть привязан к принадлежащему вам имени домена. Такая привязка может быть произведена при помощи специальной DNS-записи – A-записи. Данная DNS-запись отвечает за связь доменного имени с IP-адресом хоста. Привязка имени домена к виртуальному серверу настраивается на сайте-регистраторе домена, либо во вкладке Домены
личного кабинета RUVDS.

Настройка брандмауэра
Если ваш виртуальный сервер защищён межсетевым экраном, то перед началом работ необходимо открыть в брандмауэре доступ к VPS для служб http
и https
, либо для портов, которые используют эти службы – 80 и 443. Разрешение доступа для протокола HTTPS нужно для того, чтобы была возможность подключаться к веб-интерфейсу n8n. Доступ по HTTP необходим для того, чтобы Let’s Encrypt смог осуществить проверку домена перед выпуском сертификата, так как она выполняется именно через порт 80.
В Ubuntu и Debian добавьте в брандмауэр UFW разрешающие правила для служб http
и https
:
$ sudo ufw allow http https
В CentOS для добавления соответствующих разрешающих правил выполните следующие команды:
$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=https
И для применения внесённых изменений перезапустите конфигурацию брандмауэра firewalld
:
$ sudo firewall-cmd --reload
Создание пользовательской сети Docker
Чтобы контейнеры Traefik и n8n могли видеть друг друга по именам и безопасно взаимодействовать внутри одной сети, необходимо создать отдельную пользовательскую сеть Docker. Наличие такой сети позволит обратному прокси автоматически подключать сервисы и маршрутизировать трафик. При помощи следующей команды создайте сеть с именем traefik_proxy
:
$ sudo docker network create traefik_proxy
Запуск контейнера Traefik
На следующем шаге запустите Docker-контейнер, в котором будет работать Traefik:
$ sudo docker run -d \
--name traefik \
--network traefik_proxy \
-p 80:80 -p 443:443 \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
-v $PWD/letsencrypt:/letsencrypt \
traefik:v3.1 \
--providers.docker=true \
--entrypoints.web.address=:80 \
--entrypoints.websecure.address=:443 \
--certificatesresolvers.myresolver.acme.httpchallenge=true \
--certificatesresolvers.myresolver.acme.httpchallenge.entrypoint=web \
--certificatesresolvers.myresolver.acme.email=admin@your-male.ru \
--certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json
Данная команда состоит из следующих компонентов:
docker run -d
– запуск Docker-контейнера в фоновом режиме;--name traefik
– данный параметр присваивает контейнеру имяtraefik
;--network traefik_proxy
– подключение контейнера к существующей пользовательской Docker-сетиtraefik_proxy
;-p 80:80 -p 443:443
– проброс портов 80 и 443 между контейнером и хостовой системой;-v /var/run/docker.sock:/var/run/docker.sock:ro
– параметр монтирует Docker-сокет внутрь контейнера в режиме только для чтения, чтобы Traefik мог автоматически определять и конфигурировать контейнеры;-v $PWD/letsencrypt:/letsencrypt
– опция монтирует в контейнер локальную папку./letsencrypt
, в которой будут храниться TLS-сертификаты;traefik:v3.1
– официальный образ Traefik версии 3.1, из которого будет создан контейнер;--providers.docker=true
– включение провайдера Docker для обеспечения возможности сервису Traefik автоматически находить контейнеры и маршрутизировать трафик;--entrypoints.web.address=:80
– точка входа для HTTP-трафика на порт 80;--entrypoints.websecure.address=:443
– точка входа для HTTPS-трафика на порт 443;--certificatesresolvers.myresolver.acme.httpchallenge=true
– опция устанавливает использование проверки HTTP-01 challenge для получения TLS-сертификатов;--certificatesresolvers.myresolver.acme.httpchallenge.entrypoint=web
– параметр определяет, что проверка домена будет выполнена через порт 80;--certificatesresolvers.myresolver.acme.email=admin@your-male.ru
– адрес электронной почты, который будет указан в заявке на TLS-сертификат;--certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json
– путь для хранения сертификатов.
Запуск контейнера n8n
Чтобы сохранять данные, используемые n8n, вне контейнера, необходимо создать специальное хранилище, которым будет управлять Docker. Контейнер будет монтировать этот том внутрь себя. Таким образом всё, что сервис будет туда записывать, останется сохранённым, даже в случае удаления или перезапуска контейнера. В этом хранилище будут находиться настройки, рабочие процессы и файлы n8n.
При помощи следующей команды создайте том для Docker с именем n8n_data
:
$ sudo docker volume create n8n_data
После чего запустите контейнер n8n:
$ sudo docker run -d \
--name n8n \
--network traefik_proxy \
-e GENERIC_TIMEZONE="Europe/Moscow" \
-e TZ="Europe/Moscow" \
-e N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true \
-e N8N_RUNNERS_ENABLED=true \
-e N8N_HOST=your-site-name.ru \
-e N8N_PORT=5678 \
-v n8n_data:/home/node/.n8n \
--label "traefik.enable=true" \
--label "traefik.http.routers.n8n.rule=Host(\"your-site-name.ru\")" \
--label "traefik.http.routers.n8n.entrypoints=websecure" \
--label "traefik.http.routers.n8n.tls.certresolver=myresolver" \
docker.n8n.io/n8nio/n8n
В этой команде:
docker run -d
– запуск Docker-контейнера в фоновом режиме;--name n8n
– контейнеру присваивается названиеn8n
;--network traefik_proxy
– подключение контейнера к пользовательской сетиtraefik_proxy
;-e GENERIC_TIMEZONE="Europe/Moscow"
и-e TZ="Europe/Moscow"
– данные параметры устанавливают временную зону;-e N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
– параметр устанавливает для n8n проверку прав на файлы конфигурации;-e N8N_RUNNERS_ENABLED=true
– включает поддержку дополнительных агентов (runners) в n8n;-e N8N_HOST=your-site-name.ru
– указывает доменное имя, по которому будет доступен сервис;-e N8N_PORT=5678
– параметр определяет порт, на котором n8n слушает внутри контейнера;-v n8n_data:/home/node/.n8n
– монтирует созданный ранее Docker-томn8n_data
в каталог/home/node/.n8n
внутри контейнера;--label "traefik.enable=true"
– включает маршрутизацию через Traefik;--label "traefik.http.routers.n8n.rule=Host(\"your-site-name.ru\")"
– параметр устанавливает правило, согласно которому запрос, пришедший наyour-site-name.ru
, должен идти в данный контейнер;--label "traefik.http.routers.n8n.entrypoints=websecure"
– входная точкаwebsecure
;--label "traefik.http.routers.n8n.tls.certresolver=myresolver"
– параметр определяет, что для автоматического получения TLS-сертификата необходимо использовать Let’s Encrypt, то естьmyresolver
из команды запуска контейнера Traefik;docker.n8n.io/n8nio/n8n
– официальный образ n8n.
Обратите внимание, что в нашем примере команды запуска контейнера n8n используется доменное имя your-site-name.ru
. В своей команде его необходимо заменить на имя вашего домена.
Вывести на экран список всех контейнеров, включая неработающие на данный момент, можно командой:
$ sudo docker ps -a
В нашем примере контейнеров два, и они оба успешно запустились.

Теперь откройте браузер и подключитесь к веб-интерфейсу n8n, используя его доменное имя.

В браузере должна открыться стартовая страница веб-интерфейса. Сообщение в навигационной строке типа Подключение защищено
говорит об успешном соединении с сайтом с использованием протокола HTTPS.