Установка n8n на облачный сервер VDS с Ubuntu 26.04 в Docker Compose: постоянный том, домен и HTTPS через nginx, вебхуки, обновление, резервные копии и условия лицензии Sustainable Use License.
Содержание
n8n — система автоматизации, в которой сценарии собираются из готовых блоков (узлов). Сценарий может по расписанию или по входящему запросу получить данные из одного сервиса, обработать их, обратиться к модели ИИ и передать результат в другой сервис. В облачных тарифах n8n число запусков сценариев в месяц ограничено. На собственном сервере ресурсами и данными распоряжаетесь вы сами: сценарии, история их выполнения и учётные данные внешних сервисов хранятся у вас.
Вход на сервер выполняется под учётной записью root по паролю или SSH-ключу (см. статью Как подключиться к серверу по SSH). Команды ниже приведены для root, поэтому sudo в них не указан. Примеры даны для Ubuntu 26.04.
Лицензия n8n
n8n распространяется по собственной лицензии Sustainable Use License, построенной по модели fair-code; открытой (open source) она не является. Лицензия разрешает бесплатно использовать n8n для внутренних задач компании, а также в личных и некоммерческих целях. Разработчики поясняют: если сценарии создают и изменяют только вы и сотрудники вашей организации, n8n можно использовать бесплатно, в том числе для автоматизаций, результатами которых пользуются ваши клиенты.
Без отдельного договора с n8n нельзя предоставлять n8n как услугу, в которой клиенты сами создают и настраивают сценарии, и выдавать n8n за собственный продукт, убрав его фирменное оформление. Функции, для которых нужен лицензионный ключ, например единый вход (SSO) и проекты, доступны только в платных редакциях. В спорных случаях сверьтесь с разделом License FAQ документации n8n.
Что понадобится
- Облачный сервер с Ubuntu 26.04. Расход памяти зависит от объёма данных, которые обрабатывают сценарии. Если памяти не хватит, n8n в Docker перезапустится автоматически; добавить память можно на вкладке «Ресурсы» страницы сервера.
- Docker с плагином Compose. Порядок установки описан в статье о Docker; проверить, что всё готово, можно командой
docker compose version. - Поддомен, например
n8n.example.ru, с A-записью, указывающей на IP-адрес сервера. Он нужен, чтобы получить сертификат и открывать n8n по HTTPS.
Установка в Docker Compose
Создайте папку для n8n и перейдите в неё:
mkdir -p /opt/n8n
cd /opt/n8nСоздайте в ней файл compose.yaml (например, командой nano compose.yaml). Вместо n8n.example.ru укажите свой поддомен, вместо Europe/Moscow — нужный часовой пояс:
services:
n8n:
image: n8nio/n8n
restart: always
ports:
- "127.0.0.1:5678:5678"
environment:
- N8N_HOST=n8n.example.ru
- N8N_PORT=5678
- N8N_PROTOCOL=https
- N8N_EDITOR_BASE_URL=https://n8n.example.ru/
- N8N_WEBHOOK_URL=https://n8n.example.ru/
- N8N_PROXY_HOPS=1
- N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
- GENERIC_TIMEZONE=Europe/Moscow
- TZ=Europe/Moscow
volumes:
- n8n_data:/home/node/.n8n
volumes:
n8n_data:
name: n8n_dataЗапустите n8n и посмотрите журнал запуска:
docker compose up -d
docker compose logs -f n8nПросмотр журнала завершается сочетанием клавиш Ctrl+C, контейнер при этом продолжает работать. Порт 5678 опубликован только на адресе 127.0.0.1, поэтому из интернета n8n напрямую недоступен: подключения к нему будет принимать nginx. Публиковать порт на всех адресах не стоит, поскольку правила ufw не действуют на порты, опубликованные Docker: такие подключения обрабатываются до проверки правил ufw.
Переменные окружения и вебхуки
N8N_HOST | доменное имя, по которому открывается n8n |
N8N_PROTOCOL | протокол внешнего адреса, здесь https |
N8N_PORT | порт n8n внутри контейнера, по умолчанию 5678 |
N8N_EDITOR_BASE_URL | адрес редактора; он же используется в письмах, которые отправляет n8n |
N8N_WEBHOOK_URL | внешний адрес, из которого строятся адреса вебхуков |
N8N_PROXY_HOPS | число обратных прокси перед n8n; при работе через nginx значение равно 1 |
GENERIC_TIMEZONE, TZ | часовой пояс для расписаний n8n и для системы в контейнере; без него расписания работают по времени Нью-Йорка |
N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS | строгие права доступа к файлу настроек с ключом шифрования |
Вебхук (webhook) — адрес, на который внешний сервис отправляет запрос, чтобы запустить сценарий. У узла Webhook два адреса. Тестовый, вида https://n8n.example.ru/webhook-test/…, принимает запросы, пока в редакторе нажата кнопка Listen for Test Event, а рабочий, вида https://n8n.example.ru/webhook/…, начинает действовать после публикации сценария. Оба адреса n8n строит из N8N_WEBHOOK_URL; без этой переменной за обратным прокси в редакторе показывались бы адреса с внутренним портом 5678.
Переменная N8N_WEBHOOK_URL появилась в n8n 2.30. В более ранних версиях и во многих старых инструкциях используется прежнее имя WEBHOOK_URL: оно пока работает, но начиная с версии 2.35 считается устаревшим.
Где хранятся данные
Данные n8n хранятся в томе Docker n8n_data, который подключён в контейнер как папка /home/node/.n8n. В нём находятся база данных SQLite со сценариями, пользователями и историей выполнения, а также файл config с ключом, которым зашифрованы учётные данные внешних сервисов. Том сохраняется при пересоздании и обновлении контейнера; на диске сервера он расположен в папке /var/lib/docker/volumes/n8n_data/_data.
Если n8n будут пользоваться многие сотрудники или сценарии будут работать круглосуточно, документация n8n рекомендует вместо SQLite подключить базу данных PostgreSQL.
Домен и HTTPS через nginx
Установите nginx и certbot:
apt install nginx certbot python3-certbot-nginxСоздайте файл /etc/nginx/sites-available/n8n.example.ru с настройками сайта:
server {
listen 80;
server_name n8n.example.ru;
client_max_body_size 16m;
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-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 300s;
}
}Заголовки Upgrade и Connection нужны для WebSocket: по этому соединению редактор получает от сервера изменения, например ход выполнения сценария. Ограничение client_max_body_size совпадает с предельным размером запроса в n8n (по умолчанию 16 МБ), а увеличенный proxy_read_timeout не даёт nginx через 60 секунд обрывать долгие запросы и простаивающее соединение WebSocket.
Включите сайт, проверьте настройки nginx и получите сертификат:
ln -s /etc/nginx/sites-available/n8n.example.ru /etc/nginx/sites-enabled/
nginx -t
systemctl reload nginx
certbot --nginx -d n8n.example.rucertbot добавит настройки HTTPS в конфигурацию сайта и будет продлевать сертификат автоматически; подробности — в статье о сертификатах certbot. Если вы включили межсетевой экран ufw, разрешите в нём веб-порты командой ufw allow 80,443/tcp (см. статью Как открыть порт на сервере).
Первый вход
Откройте https://n8n.example.ru. При первом открытии n8n предложит создать учётную запись владельца: укажите адрес почты, имя и пароль. Владелец управляет пользователями и настройками n8n. Создайте эту учётную запись сразу после запуска: пока владельца нет, её может создать любой, кто откроет страницу.
n8n поддерживает двухфакторную аутентификацию, и для учётной записи владельца её стоит включить. Бесплатная регистрация редакции Community открывает несколько дополнительных функций, например папки для сценариев и отладку в редакторе. Зарегистрироваться можно в разделе Settings → Plan & usage кнопкой Unlock, указав адрес почты.
Обновление
Новые версии n8n выходят почти каждую неделю, и разработчики советуют обновляться не реже раза в месяц, чтобы не перескакивать сразу через много версий. Перед обновлением сделайте резервную копию (см. следующий раздел) и просмотрите заметки о выпуске: в них описаны несовместимые изменения. Обновление выполняется так:
cd /opt/n8n
docker compose pull
docker compose down
docker compose up -dОбраз n8nio/n8n без указания версии соответствует последней стабильной версии. Чтобы контролировать переход на новые версии, укажите версию явно, например image: n8nio/n8n:2.47.4, и меняйте её в compose.yaml перед каждым обновлением.
Резервные копии
Полная резервная копия n8n — это содержимое тома n8n_data: база SQLite и ключ шифрования. Без ключа учётные данные из копии расшифровать не удастся. Копировать базу SQLite во время работы n8n нельзя, иначе копия может оказаться несогласованной, поэтому на время копирования n8n останавливают:
mkdir -p /root/backup
cd /opt/n8n
docker compose stop
tar -czf /root/backup/n8n-$(date +%F).tar.gz -C /var/lib/docker/volumes/n8n_data/_data .
docker compose startДля восстановления остановите n8n, распакуйте архив в ту же папку тома командой tar -xzf <архив> -C /var/lib/docker/volumes/n8n_data/_data и запустите n8n снова. Храните копии не только на самом сервере: скачивайте их или переносите на другой сервер. Перед крупными изменениями дополнительно делайте снимок сервера.
Не нашли ответ? Напишите в поддержку — подскажем.


