Установка n8n: локально, на сервере и в Docker
Пошаговая установка n8n под ваш случай: npx и Docker локально на Windows/Mac/Linux, Docker Compose с доменом и HTTPS на VPS, обновление и бэкап.

Содержание
Если хотите за минуту попробовать n8n на своём компьютере — запускайте через npx. Если нужен постоянный локальный инстанс с Docker — ставьте через Docker Desktop. Если n8n должен работать 24/7, принимать вебхуки из интернета и быть доступен по адресу вида https://n8n.вашдомен.ru — разворачивайте на VPS через Docker Compose с доменом и HTTPS. Ниже — команды под каждый случай, обновление, бэкап и частые ошибки. Что такое n8n, сколько он стоит и как устроен — в статье «n8n: что это и как начать», здесь только установка.
Коротко. Быстро попробовать — npx n8n, откроется на http://localhost:5678. Постоянно и локально — Docker: docker run с томом n8n_data на порт 5678. Для рабочего инстанса с доменом и HTTPS на VPS Ubuntu — официальный репозиторий n8n-docker-caddy: Docker Compose поднимает n8n и Caddy, который сам получает сертификат Let's Encrypt. Данные всегда живут в volume n8n_data (папка /home/node/.n8n) — именно её нужно бэкапить.
Какой способ выбрать
| Способ | Кому подходит | Сложность | Работает 24/7 |
|---|---|---|---|
npx n8n локально | Попробовать n8n за пару минут, разобраться в интерфейсе | Низкая | Нет — работает, пока открыт терминал |
| Docker на своём компьютере | Тем, кто уже пользуется Docker и хочет держать n8n постоянно, без привязки к терминалу | Низкая-средняя | Пока включён компьютер и запущен Docker |
| Docker Compose на VPS с доменом (Caddy, HTTPS) | Рабочим сценариям: вебхукам из интернета, доступу с любого устройства, командной работе | Средняя | Да, сервер работает круглосуточно |
Локально через npx: Windows, Mac, Linux
Самый быстрый способ — без установки. По документации n8n требуется Node.js версии от 20.19 до 24.x включительно. Если Node.js уже стоит нужной версии, выполните в терминале (Windows — PowerShell или терминал VS Code, Mac и Linux — обычный терминал):
npx n8n
n8n скачается и запустится, интерфейс откроется на http://localhost:5678. Для постоянной установки вместо разового запуска:
npm install n8n -g
n8n start
Обновить такую установку до последней версии:
npm update -g n8n
Документация n8n прямо предупреждает: установка через npm будет считаться устаревшей с версии n8n 3.0 и уже сейчас не рекомендуется для продакшена — это способ для теста и знакомства с интерфейсом, а не для рабочего инстанса. Для постоянной работы даже локально лучше сразу брать Docker.
Docker на своём компьютере
На Windows и Mac поставьте Docker Desktop (доступен для Mac, Windows и Linux и включает Docker Engine с Docker Compose), на Linux достаточно Docker Engine. Дальше — том для хранения данных и запуск контейнера, команда из официальной документации n8n:
docker volume create n8n_data
docker run -it --rm \
--name n8n \
-p 5678:5678 \
-e GENERIC_TIMEZONE="Europe/Moscow" \
-e TZ="Europe/Moscow" \
-e N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true \
-e N8N_RUNNERS_ENABLED=true \
-v n8n_data:/home/node/.n8n \
docker.n8n.io/n8nio/n8n
Замените Europe/Moscow на свой часовой пояс — он влияет на время срабатывания нод Schedule и Cron. Флаг N8N_RUNNERS_ENABLED=true включает раннеры задач — в текущей архитектуре n8n именно они выполняют код нод, и документация рекомендует явно включать эту переменную. Данные (workflow, учётные записи, ключ шифрования) хранятся в томе n8n_data, который смонтирован в /home/node/.n8n внутри контейнера — том переживает пересоздание контейнера. Откройте http://localhost:5678 и создайте владельца инстанса при первом входе.
Флаг --rm в примере означает, что при остановке контейнер удаляется — данные при этом не теряются, они в томе. Для постоянной работы уберите --rm и добавьте --restart unless-stopped, либо сразу переходите на Docker Compose (ниже) — с ним не нужно помнить длинную команду.
VPS с Ubuntu: Docker Compose с доменом и HTTPS
Это официальный способ n8n для рабочего инстанса с собственным доменом: репозиторий n8n-docker-caddy, на который ссылается документация n8n в разделах про установку на DigitalOcean и Hetzner. Внутри — Docker Compose с n8n и Caddy: Caddy сам получает и продлевает сертификат Let's Encrypt, вам не нужно возиться с certbot.
Понадобится VPS на Ubuntu и домен (подойдёт и поддомен) с A-записью на IP сервера. Взять VPS можно, например, на Beget, Timeweb Cloud или FirstVDS — для самого n8n без встроенного AI-ассистента хватает минимального тарифа, а вот для сценария со включённым n8n Assistant (он поднимает дополнительный sandbox-контейнер) документация уже просит от 4 ГБ RAM и 2 vCPU.
- Подключитесь по SSH, обновите систему и поставьте Docker официальным скриптом (он сразу ставит и Docker Compose):
apt update && apt -y upgrade curl -fsSL https://get.docker.com | sh - Клонируйте официальный репозиторий и создайте именованные тома:
git clone https://github.com/n8n-io/n8n-docker-caddy.git cd n8n-docker-caddy docker volume create caddy_data docker volume create n8n_data - В DNS домена создайте A-запись поддомена (например,
n8n) на IP сервера и откройте порты 80 и 443 в файрволе:ufw allow OpenSSH ufw allow 80 ufw allow 443Правило для SSH — чтобы при включении файрвола не потерять доступ к серверу.
- Отредактируйте файл
.envв клонированной папке — впишите свои значения:DATA_FOLDER=/root/n8n-docker-caddy DOMAIN_NAME=example.com SUBDOMAIN=n8n GENERIC_TIMEZONE=Europe/Moscow SSL_EMAIL=you@example.comDOMAIN_NAMEиSUBDOMAINвместе дают адрес, по которому будет открываться n8n — в примере этоhttps://n8n.example.com.SSL_EMAILнужен Caddy для регистрации сертификата в Let's Encrypt. - В файле
caddy_config/Caddyfileзамените заготовку на свой домен:n8n.example.com { reverse_proxy n8n:5678 { flush_interval -1 } } - Поправьте
docker-compose.ymlперед запуском — две правки, которых нет в репозитории:- В блоке
n8nзамените- 5678:5678на- 127.0.0.1:5678:5678. В исходном файле порт 5678 открыт в интернет, и n8n доступен по IP сервера в обход HTTPS. Docker публикует порты мимо правил ufw, поэтому закрыть порт файрволом не получится — только так. - Строку
- WEBHOOK_URL=https://${SUBDOMAIN}.${DOMAIN_NAME}/замените на- N8N_WEBHOOK_URL=https://${SUBDOMAIN}.${DOMAIN_NAME}/и добавьте ниже- N8N_PROXY_HOPS=1. С версии 2.35.0WEBHOOK_URLсчитается устаревшей, аN8N_PROXY_HOPSсообщает n8n, что перед ним стоит один обратный прокси (Caddy).
Блок
environmentпосле правки:ports: - 127.0.0.1:5678:5678 environment: - N8N_HOST=${SUBDOMAIN}.${DOMAIN_NAME} - N8N_PORT=5678 - N8N_PROTOCOL=https - NODE_ENV=production - N8N_WEBHOOK_URL=https://${SUBDOMAIN}.${DOMAIN_NAME}/ - N8N_PROXY_HOPS=1 - GENERIC_TIMEZONE=${GENERIC_TIMEZONE} - В блоке
- Запустите:
docker compose up -dCaddy сам получит сертификат при первом обращении — откройте
https://n8n.example.comчерез минуту-две и создайте владельца инстанса.
Готовый docker-compose.yml из репозитория использует официальный образ docker.n8n.io/n8nio/n8n, задаёт n8n переменные N8N_HOST, N8N_PORT=5678, N8N_PROTOCOL=https и адрес вебхуков — и хранит данные n8n и Caddy в тех же именованных томах n8n_data и caddy_data, которые вы создали на шаге 2.
Firewall, SSH-ключи вместо пароля и другие базовые меры защиты сервера с n8n — общие для любого self-hosted AI-инструмента, подробно разобраны в статье «Как защитить AI-агента на VPS».
Переменные окружения, которые пригодятся
Полный список — в документации n8n, но для установки чаще всего нужны эти:
| Переменная | По умолчанию | Что делает |
|---|---|---|
N8N_HOST | localhost | Имя хоста, на котором работает n8n |
N8N_PORT | 5678 | HTTP-порт n8n |
N8N_PROTOCOL | http | Протокол, по которому доступен n8n (https за обратным прокси) |
N8N_LISTEN_ADDRESS | :: | IP-адрес, который слушает n8n |
N8N_ENCRYPTION_KEY | случайный ключ | Ключ, которым шифруются учётные данные в базе — задайте свой до первого запуска |
GENERIC_TIMEZONE | America/New_York | Часовой пояс для нод Schedule и Cron |
N8N_PROXY_HOPS | 0 | Сколько обратных прокси стоит перед n8n |
N8N_WEBHOOK_URL | — | Публичный адрес для вебхуков за обратным прокси (заменил устаревший WEBHOOK_URL) |
N8N_ENCRYPTION_KEY стоит задать своим значением ещё до первого запуска: если его не указать, n8n сам создаст случайный ключ и сохранит его в папке .n8n — и именно этот ключ понадобится при переносе или восстановлении из бэкапа, без него зашифрованные учётные данные не расшифровать.
Обновление
Перед обновлением, особенно на мажорную версию, документация n8n советует свериться с release notes на предмет breaking changes и сначала проверить обновление на тестовой копии — и только потом катить на рабочий инстанс.
Установка через npm:
npm update -g n8n
Установка через Docker (разовый контейнер): остановите и удалите старый контейнер, скачайте свежий образ и запустите заново с тем же томом — данные не потеряются, они в n8n_data:
docker stop n8n
docker rm n8n
docker pull docker.n8n.io/n8nio/n8n
# и снова docker run ... с той же командой, что при установке
Docker Compose на VPS:
cd n8n-docker-caddy
docker compose pull
docker compose down
docker compose up -d
Если ставили через официальный скрипт curl -fsSL https://get.n8n.io | sh, у него есть отдельный флаг для обновления:
curl -fsSL https://get.n8n.io | sh -s -- --upgrade
Бэкап и перенос
Всё важное у n8n лежит в папке .n8n (в Docker — это том n8n_data, смонтированный в /home/node/.n8n): там файл конфигурации с ключом шифрования, база SQLite (если не подключали внешнюю БД) и файлы бинарных данных выполнений. Если вместо SQLite используете PostgreSQL — базу бэкапите отдельно средствами самой БД, но папку .n8n всё равно нужно сохранять: без её ключа шифрования учётные данные в базе не расшифровать даже при восстановлении.
Для точечного экспорта сценариев и учётных данных в документации есть CLI-команды (в Docker их можно выполнить через docker exec внутри контейнера n8n):
n8n export:workflow --backup --output=backups/workflows/
n8n export:credentials --backup --output=backups/credentials/
Флаг --backup — это сокращение для --all --pretty --separate: выгружает всё, читаемо форматирует и сохраняет каждый сценарий и каждую учётную запись отдельным файлом. Учтите: такой CLI-экспорт не включает пользователей, историю выполнений, переменные и настройки инстанса — это дополнение к бэкапу папки .n8n, а не замена ему. Экспортированные учётные данные по умолчанию остаются зашифрованными; расшифровать их при экспорте можно флагом --decrypted, но тогда файл нужно хранить как секрет — в нём пароли и токены открытым текстом.
При переносе на новый сервер: скопируйте том/папку .n8n целиком либо восстановите тот же N8N_ENCRYPTION_KEY, что был на старом инстансе, — иначе новый n8n создаст свой ключ и не сможет прочитать перенесённые учётные данные.
Частые ошибки
- После обновления сценарий перестал срабатывать сам. В n8n 2.x включение сценария в работу — это не переключатель «Active», а кнопка Publish (или горячая клавиша Shift+P): черновик сохраняется автоматически, но в проде используется только опубликованная версия. Проверьте, что сценарий именно опубликован.
- Данные пропали после перезапуска контейнера. Скорее всего контейнер был запущен без volume — то есть без флага
-v n8n_data:/home/node/.n8n. Без именованного тома всё, что внутри контейнера, стирается при его пересоздании. - Caddy не выдаёт сертификат, сайт не открывается по HTTPS. Чаще всего домен ещё не указывает на IP сервера (DNS не обновился) либо у хостера или в файрволе закрыт порт 443 — Let's Encrypt должен достучаться до сервера снаружи.
- Вебхуки из внешних сервисов не доходят. Проверьте, что задан правильный
N8N_WEBHOOK_URL(илиN8N_HOST/N8N_PROTOCOL) с реальным доменом, а неlocalhost, и чтоN8N_PROXY_HOPSсоответствует числу прокси перед n8n. - Ошибка версии Node.js при установке через npm. n8n требует Node.js от 20.19 до 24.x включительно — слишком старая или слишком новая версия ставить не даст.
- После переноса на новый сервер учётные данные не открываются. Не перенесли
N8N_ENCRYPTION_KEY/файл конфигурации со старого инстанса — без него зашифрованные пароли и токены не читаются.
Частые вопросы
Какой способ установки n8n выбрать для начала?
npx n8n — если хотите за пару минут посмотреть интерфейс. Если сразу планируете пользоваться регулярно — берите Docker, а для рабочего сценария с вебхуками из интернета — Docker Compose на VPS с доменом.
Нужен ли домен, чтобы установить n8n?
Для локальной работы — нет, достаточно http://localhost:5678. Домен нужен, если хотите принимать вебхуки от внешних сервисов, открывать n8n с телефона вне домашней сети или работать с HTTPS.
Можно ли установить n8n без Docker?
Да, через npm/npx, но сама документация n8n называет этот способ подходящим для теста и не рекомендует для продакшена — для рабочего инстанса лучше Docker или Docker Compose.
Как перенести n8n на другой сервер?
Скопируйте папку/том .n8n целиком (в ней база и ключ шифрования) на новый сервер и запустите тот же образ с тем же N8N_ENCRYPTION_KEY. Точечный экспорт через n8n export:workflow и n8n export:credentials подходит для переноса отдельных сценариев, а не всего инстанса целиком.
Как обновить n8n, не потеряв данные?
Данные хранятся отдельно от контейнера — в томе n8n_data, поэтому обновление образа их не затрагивает. В Docker Compose это docker compose pull && docker compose down && docker compose up -d. Перед обновлением на новую мажорную версию документация советует свериться с release notes и проверить обновление на тестовом инстансе.
Нужен ли self-host n8n мощный сервер?
Документация не называет жёстких требований для самого n8n — для старта хватит небольшого VPS. Отдельное условие есть только для встроенного n8n Assistant с sandbox-контейнером: под него документация рекомендует от 4 ГБ RAM и 2 vCPU.
Когда n8n уже установлен и опубликован первый сценарий, логично подключить к нему готового AI-агента как ноду — как это сделать, разобрано в статье про интеграцию OpenClaw и n8n. А если сомневаетесь, что вообще выбрать между n8n, Make и своей разработкой — сравнение в статье «n8n vs Make vs кастом». Для сценариев с локальными нейросетями без внешних API пригодится связка с Ollama — она тоже ставится одной командой.
Строю AI-агентов для своего бизнеса и клиентов, на сайте пишу о том, что запускал сам. Вопросы задавайте в Telegram.
@aaakalsin →

