aigenthubTelegram

Установка n8n: локально, на сервере и в Docker

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

АК Алексей КальсинОбновлено 11 мин чтения
Содержание
  1. Какой способ выбрать
  2. Локально через npx: Windows, Mac, Linux
  3. Docker на своём компьютере
  4. VPS с Ubuntu: Docker Compose с доменом и HTTPS
  5. Переменные окружения, которые пригодятся
  6. Обновление
  7. Бэкап и перенос
  8. Частые ошибки
  9. Частые вопросы

Если хотите за минуту попробовать 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.

  1. Подключитесь по SSH, обновите систему и поставьте Docker официальным скриптом (он сразу ставит и Docker Compose):
    apt update && apt -y upgrade
    curl -fsSL https://get.docker.com | sh
  2. Клонируйте официальный репозиторий и создайте именованные тома:
    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
  3. В DNS домена создайте A-запись поддомена (например, n8n) на IP сервера и откройте порты 80 и 443 в файрволе:
    ufw allow OpenSSH
    ufw allow 80
    ufw allow 443

    Правило для SSH — чтобы при включении файрвола не потерять доступ к серверу.

  4. Отредактируйте файл .env в клонированной папке — впишите свои значения:
    DATA_FOLDER=/root/n8n-docker-caddy
    DOMAIN_NAME=example.com
    SUBDOMAIN=n8n
    GENERIC_TIMEZONE=Europe/Moscow
    SSL_EMAIL=you@example.com

    DOMAIN_NAME и SUBDOMAIN вместе дают адрес, по которому будет открываться n8n — в примере это https://n8n.example.com. SSL_EMAIL нужен Caddy для регистрации сертификата в Let's Encrypt.

  5. В файле caddy_config/Caddyfile замените заготовку на свой домен:
    n8n.example.com {
        reverse_proxy n8n:5678 {
          flush_interval -1
        }
    }
  6. Поправьте 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.0 WEBHOOK_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}
  7. Запустите:
    docker compose up -d

    Caddy сам получит сертификат при первом обращении — откройте 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_HOSTlocalhostИмя хоста, на котором работает n8n
N8N_PORT5678HTTP-порт n8n
N8N_PROTOCOLhttpПротокол, по которому доступен n8n (https за обратным прокси)
N8N_LISTEN_ADDRESS::IP-адрес, который слушает n8n
N8N_ENCRYPTION_KEYслучайный ключКлюч, которым шифруются учётные данные в базе — задайте свой до первого запуска
GENERIC_TIMEZONEAmerica/New_YorkЧасовой пояс для нод Schedule и Cron
N8N_PROXY_HOPS0Сколько обратных прокси стоит перед 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 →

Ещё в разделе «Установка и настройка»

Новые агенты и рабочие связки раньше, чем в блоге

Короткие разборы, промокоды и ответы на вопросы в Telegram-канале.

Подписаться в Telegram