Установка n8n: развёртывание n8n на VPS с помощью Docker
Пошаговое руководство по запуску собственного сервера автоматизации n8n: установка Docker Engine, файл docker compose, обратный прокси Nginx, бесплатный SSL, обновление и резервное копирование.
n8n — это инструмент с открытым исходным кодом, который позволяет связывать приложения между собой и автоматизировать рабочие процессы. Записать данные из формы в таблицу, рассортировать письма, отправить вопрос модели ИИ и переслать ответ в Telegram — всё это собирается из узлов перетаскиванием. Если запускать n8n на своём сервере, а не в облачной версии, данные остаются у вас, а ограничения вроде количества рабочих процессов вас не касаются.
В этом руководстве мы установим n8n через Docker на VPS с Ubuntu 24.04. Схема будет такой:
- Docker Engine устанавливается из официального репозитория Docker.
- n8n запускается из файла docker compose и слушает только адрес
127.0.0.1:5678, доступный лишь изнутри сервера. - Nginx принимает входящие запросы извне и передаёт их n8n.
- Certbot включает HTTPS с бесплатным сертификатом Let's Encrypt.
1. Подготовьте сервер
Подключитесь по SSH и обновите пакеты:
sudo apt update && sudo apt upgrade -y
Если сервер новый, советуем сначала выполнить базовые шаги из нашего руководства по безопасности Linux-сервера (SSH-ключи, запрет входа под root, файрвол). Кроме того, создайте в панели DNS A-запись для поддомена n8n, например n8n.ornek.com → IP-адрес VPS. Распространение записи может занять несколько минут.
2. Установите Docker Engine
Пакет docker.io из репозиториев Ubuntu тоже работает, но ради актуальной версии и плагина docker compose лучше использовать собственный репозиторий Docker:
sudo apt install -y ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Проверьте установку:
sudo docker run --rm hello-world
docker compose version
Если контейнер hello-world выводит приветствие и завершается, Docker готов.
Чтобы запускать команды без
sudo, можно добавить пользователя в группуdocker(sudo usermod -aG docker $USER). Но на практике эта группа равносильна правам root, поэтому в этом руководстве мы продолжаем сsudo.
3. Напишите файл docker compose
Создайте папку для n8n и запишите в неё файл compose:
sudo mkdir -p /opt/n8n
cd /opt/n8n
sudo nano compose.yaml
Содержимое (замените домен на свой):
services:
n8n:
image: docker.n8n.io/n8nio/n8n
container_name: n8n
restart: unless-stopped
ports:
- "127.0.0.1:5678:5678"
environment:
- N8N_HOST=n8n.ornek.com
- N8N_PORT=5678
- N8N_PROTOCOL=https
- WEBHOOK_URL=https://n8n.ornek.com/
- N8N_PROXY_HOPS=1
- GENERIC_TIMEZONE=Europe/Istanbul
- TZ=Europe/Istanbul
volumes:
- n8n_data:/home/node/.n8n
volumes:
n8n_data:
Что означают настройки:
127.0.0.1:5678:5678: n8n доступен только изнутри сервера. Это важно, потому что порты, опубликованные Docker, могут обходить правила UFW: если написать5678:5678, n8n может оказаться открытым в интернет вопреки файрволу.N8N_HOSTиN8N_PROTOCOL: нужны, чтобы n8n правильно формировал собственный адрес.WEBHOOK_URL: адрес, который узлы webhook и форм показывают внешнему миру. Если не задать его за обратным прокси, адреса вебхуков будут выглядеть бесполезно, напримерhttp://localhost:5678.N8N_PROXY_HOPS=1: сообщает n8n, что перед ним стоит обратный прокси, и IP посетителя берётся из заголовкаX-Forwarded-For.GENERIC_TIMEZONE: задаёт часовой пояс для узлов расписания (Schedule). Без него рабочие процессы срабатывают по часовому поясу по умолчанию, а не по турецкому времени.- Том
n8n_data: рабочие процессы, учётные данные, база SQLite и ключ шифрования хранятся в/home/node/.n8n. Потеряете том — потеряете всё.
О переменной N8N_SECURE_COOKIE
По умолчанию n8n отправляет cookie сессии только по HTTPS. Поэтому если открыть n8n по незашифрованному адресу вроде http://IP:5678, появится предупреждение о «secure cookie», и войти не получится. Некоторые руководства советуют добавить N8N_SECURE_COOKIE=false, но тогда пароль и сессия передаются по сети открытым текстом. Правильное решение — настроить HTTPS по шагам ниже. Используйте эту переменную только для короткой локальной проверки и потом уберите её.
Запустите n8n:
sudo docker compose up -d
sudo docker compose logs -f
Когда в журнале появится строка о том, что n8n готов, нажмите Ctrl+C, чтобы перестать следить за журналом; контейнер продолжит работать. Команда curl -I http://127.0.0.1:5678 должна вернуть HTTP-ответ.
4. Настройте обратный прокси Nginx
sudo apt install -y nginx
sudo nano /etc/nginx/sites-available/n8n
server {
listen 80;
server_name n8n.ornek.com;
client_max_body_size 50M;
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_buffering off;
proxy_read_timeout 3600s;
}
}
Заголовки Upgrade и Connection нужны для websocket-соединения. Через него редактор n8n передаёт в браузер результаты во время выполнения рабочего процесса; без этих строк редактор показывает предупреждение «Connection lost», и вывод запущенного процесса не появляется на экране. proxy_read_timeout не даёт обрываться долгим запросам.
Включите сайт:
sudo ln -s /etc/nginx/sites-available/n8n /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
5. Файрвол и SSL
Если вы используете UFW, разрешите только SSH и веб-трафик. Открывать порт 5678 не нужно:
sudo ufw allow OpenSSH
sudo ufw allow 'Nginx Full'
sudo ufw enable
Получите сертификат Let's Encrypt:
sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d n8n.ornek.com
Certbot добавит настройки HTTPS в файл Nginx и настроит автоматическое продление. Теперь можно открыть https://n8n.ornek.com и создать первую учётную запись администратора. Сделайте это сразу: пока страница первоначальной настройки открыта, любой, кто знает адрес, может создать учётную запись владельца раньше вас.
Обновление n8n
Новые версии n8n выходят часто. Для обновления выполните в папке compose:
cd /opt/n8n
sudo docker compose pull
sudo docker compose up -d
sudo docker image prune -f
Данные хранятся в томе, поэтому пересоздание контейнера не удаляет рабочие процессы. И всё же перед переходом на новую мажорную версию сделайте резервную копию и прочитайте раздел о несовместимых изменениях (breaking changes) в примечаниях к выпуску. Если нужно остаться на определённой версии, добавьте к имени образа тег, например docker.n8n.io/n8nio/n8n:1.x.y.
Резервное копирование
Самое важное — том n8n_data. Docker compose добавляет к имени тома имя папки; чтобы увидеть настоящее имя:
sudo docker volume ls
Если папка — /opt/n8n, имя, скорее всего, будет n8n_n8n_data. Для целостной копии ненадолго остановите n8n и заархивируйте том:
cd /opt/n8n
sudo docker compose stop
sudo docker run --rm -v n8n_n8n_data:/data -v /opt/n8n:/backup alpine tar czf /backup/n8n-yedek-$(date +%F).tar.gz -C /data .
sudo docker compose start
Скопируйте архив и за пределы сервера: копия на том же диске бесполезна при его отказе. В файле config внутри тома хранится ключ шифрования n8n. Сохранённые учётные данные (API-ключи, пароли) шифруются этим ключом; без него вы не сможете ими воспользоваться, даже восстановив копию.
Если хотите дополнительно выгрузить рабочие процессы в JSON:
sudo docker exec n8n n8n export:workflow --all --output=/home/node/.n8n/workflows.json
Сколько нужно RAM?
Для небольшого числа простых рабочих процессов n8n работает при минимум 1 ГБ RAM, но это пограничное значение: памяти может не хватить, особенно при обработке больших JSON или одновременном запуске нескольких процессов. 2 ГБ и больше — комфортное начало. Если у вас большие файлы, много одновременных запусков или дополнительные сервисы на том же сервере, например локальная модель ИИ, закладывайте больше. Если не хотите делить ресурсы с другими, пакеты VDS дают более предсказуемую производительность.
Если не хотите заниматься установкой, посмотрите пакеты n8n & AI VPS: после оплаты наша команда устанавливает на сервер n8n, OpenWebUI, AI Agent или Cloudron — на ваш выбор — и передаёт его готовым к работе. Если предпочитаете установить всё сами, шаги из этого руководства без изменений работают на любом VPS TürkiyeVPS с root-доступом.
Часто задаваемые вопросы
Можно ли установить n8n без Docker?
Да, можно установить Node.js и запустить n8n через npm install -g n8n. Но тогда совместимость версий Node.js, обновления и управление службой ложатся на вас. С Docker обновление сводится к двум командам, и сама команда n8n рекомендует установку через Docker.
Редактор показывает «Connection lost». Почему?
Обычно в Nginx не хватает заголовков websocket. Убедитесь, что строки proxy_http_version 1.1, Upgrade и Connection "upgrade" есть в блоке location, затем выполните sudo nginx -t и sudo systemctl reload nginx.
Адреса вебхуков отображаются как localhost. Как исправить?
Укажите в файле compose в WEBHOOK_URL свой домен со слешем / на конце и пересоздайте контейнер командой sudo docker compose up -d.
Хватит ли SQLite или нужен PostgreSQL?
Для личного использования и небольших команд обычно хватает SQLite по умолчанию. Если вы храните большую историю запусков или планируете запускать n8n в нескольких процессах (queue mode), лучше подойдёт PostgreSQL.
Запустится ли n8n сам после перезагрузки сервера?
Да. Служба Docker стартует при загрузке, а благодаря настройке restart: unless-stopped в файле compose контейнер n8n тоже автоматически запускается снова.
Читайте также
Если на VPS с 512 МБ или 1 ГБ RAM падают приложения, swap — первая помощь. Как добавить swap в Ubuntu 24.04, в...
Бот не должен засыпать вместе с ноутбуком. Пошагово: запуск Telegram-бота на Python 24/7 на VPS с Ubuntu 24.04...
Собираетесь запустить сервер Metin2, но не знаете, хватит ли VPS или нужен VDS? Сравниваем общий и выделенный...