На своём компьютере n8n удобно попробовать, но для настоящей работы ему нужен сервер: сценарии должны выполняться круглосуточно, а вебхуки Telegram, форм и CRM требуют постоянного адреса с HTTPS. Ниже - полная инструкция по установке n8n на VPS через Docker Compose с доменом и бесплатным сертификатом. Версия n8n на момент написания - 2.47.
Что понадобится
- VPS с Ubuntu 24.04: 1-2 ядра, от 2 ГБ оперативной памяти, 20 ГБ диска. Для сценариев с ИИ-агентами и большими файлами лучше 4 ГБ. Российские хостинги дают такие серверы с оплатой в рублях.
- Домен или поддомен, например n8n.example.ru. В DNS создайте A-запись на IP сервера.
- Доступ по SSH (данные приходят от хостинга после заказа сервера).
Шаг 1. Установите Docker
Подключитесь к серверу и выполните официальный скрипт установки Docker:
ssh root@IP-сервера
curl -fsSL https://get.docker.com | sh
docker compose versionПоследняя команда должна показать версию Docker Compose. Если она отвечает ошибкой, установка не завершилась.
Шаг 2. Создайте файлы проекта
mkdir -p /opt/n8n && cd /opt/n8n
nano docker-compose.ymlВставьте содержимое, заменив домен и часовой пояс на свои:
services:
n8n:
image: n8nio/n8n
restart: unless-stopped
environment:
- N8N_HOST=n8n.example.ru
- N8N_PORT=5678
- N8N_PROTOCOL=https
- N8N_WEBHOOK_URL=https://n8n.example.ru/
- NODE_ENV=production
- GENERIC_TIMEZONE=Europe/Moscow
- TZ=Europe/Moscow
volumes:
- n8n_data:/home/node/.n8n
caddy:
image: caddy:2
restart: unless-stopped
ports:
- "80:80"
- "443:443"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- caddy_data:/data
volumes:
n8n_data:
caddy_data:Сохраните файл (Ctrl+O, Enter, Ctrl+X). Затем создайте настройки Caddy - это веб-сервер, который сам получает и продлевает сертификат Let's Encrypt:
nano Caddyfilen8n.example.ru {
reverse_proxy n8n:5678
}В версиях n8n до 2.30 вместо N8N_WEBHOOK_URL используется переменная WEBHOOK_URL. Если адрес вебхуков указан неверно, Telegram и другие сервисы не смогут достучаться до сценариев.
Шаг 3. Запустите
docker compose up -d
docker compose logs -f n8nКогда в журнале появится строка о том, что редактор доступен, нажмите Ctrl+C и откройте в браузере https://n8n.example.ru. Создайте учётную запись владельца: первый зарегистрированный пользователь становится администратором, поэтому сделайте это сразу после запуска.
Шаг 4. Закройте лишнее
Включите файрвол и оставьте только SSH и веб:
ufw allow 22
ufw allow 80
ufw allow 443
ufw enableПорт 5678 наружу не открыт: в файле он не опубликован, n8n доступен только через Caddy по HTTPS. Учтите, что Docker может обходить правила ufw для опубликованных портов, поэтому не добавляйте в compose-файл ports для n8n.
Если на сервере уже есть nginx
Когда на сервере работают сайты на nginx, Caddy не нужен. Опубликуйте n8n только на локальном адресе ("127.0.0.1:5678:5678" в разделе ports сервиса n8n) и добавьте в nginx сайт с проксированием. Важно передать заголовки для WebSocket, иначе редактор будет терять соединение:
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-Proto $scheme;
proxy_buffering off;
}Обновление n8n
cd /opt/n8n
docker compose pull
docker compose up -dПеред обновлением на новую основную версию читайте список изменений: иногда меняются переменные и поведение узлов. Для важных сценариев держите тестовую копию и обновляйте сначала её.
Резервные копии
Все сценарии, учётные данные и ключ шифрования хранятся в томе n8n_data. Самый простой способ сохранить сценарии отдельно - выгрузить их в файлы:
docker compose exec n8n n8n export:workflow --all --output=/home/node/.n8n/backup.json
docker compose cp n8n:/home/node/.n8n/backup.json ./backup-$(date +%F).jsonХраните копии не только на этом сервере. Обязательно сохраните ключ шифрования (параметр encryptionKey в файле config внутри тома): без него при переносе на другой сервер не расшифруются сохранённые пароли и токены.
Частые проблемы
| Проблема | Решение |
|---|---|
| Сайт не открывается, сертификат не выпущен | проверьте, что A-запись домена указывает на сервер и порты 80 и 443 открыты; смотрите docker compose logs caddy |
| В вебхуках адрес localhost:5678 | не задан адрес вебхуков: проверьте N8N_WEBHOOK_URL (или WEBHOOK_URL в старых версиях) и перезапустите |
| Не хватает памяти, контейнер перезапускается | добавьте файл подкачки 2 ГБ или возьмите сервер с большей памятью |
| Неправильное время запуска сценариев по расписанию | проверьте GENERIC_TIMEZONE и часовой пояс в настройках сценария |
Что дальше
Сервер готов: соберите первого агента по инструкции ИИ-агент в n8n или подключите бота в Telegram. Если сомневаетесь, нужен ли свой сервер, сравните варианты в статье n8n, Make или Zapier.
Частые вопросы
Сколько стоит n8n на своём сервере?
Сам n8n в версии Community бесплатный и без ограничений на число запусков. Платите только за VPS, обычно это несколько сотен рублей в месяц.
Можно ли без домена?
Технически да, по IP-адресу, но без HTTPS не будут работать вебхуки Telegram и многих сервисов. Поддомен у любого регистратора решает проблему.
Чем Docker лучше установки через npm?
Docker изолирует n8n от остальной системы, обновляется двумя командами и одинаково работает на любом сервере. Установка через npm требует Node.js версии 20.19-24 и ручной настройки автозапуска.