Руководство по n8n: что это и как установить на свой сервер

Руководство по n8n: что это и как установить на свой сервер

Содержание

n8n — это конструктор для автоматизации рабочих процессов. Представьте, что вам нужно соединить между собой Telegram-бота, Google Таблицы, CRM-систему и нейросеть OpenAI, чтобы они обменивались данными без вашего участия. Именно эту задачу и решает n8n с помощью визуальных блоков (нод).

Вы просто перетаскиваете кубики на экране, соединяете их стрелочками и получаете готовый сценарий — от отправки уведомлений в чат до сложных AI-агентов, принимающих решения.

Платный Cloud или бесплатный Self-Hosted?

Если зайти на официальный сайт n8n.io, первым делом вам предложат тарифные планы от 20 евро в месяц. Из-за этого складывается ощущение, что сервис полностью платный. На самом деле у n8n есть две основные версии:

  1. n8n Cloud (Платная подписка): Готовый облачный сервис от создателей. Не нужно ничего настраивать, но лимиты считаются по количеству выполнений сценариев (executions). Например, младший тариф Starter (20 € в месяц при оплате за год) включает 2 500 выполнений в месяц и до 5 одновременных запусков. При больших объемах это выходит дорого.

  2. n8n Community / Self-Hosted (Бесплатная версия): Версия с открытым исходным кодом (fair-code, лицензия Sustainable Use License), которую вы можете абсолютно бесплатно установить на свой личный VPS. Здесь нет ограничений на количество рабочих процессов или выполнений — вы платите только фиксированную стоимость аренды своего сервера (обычно от $4–$6 в месяц). Часть корпоративных функций (SSO, расширенные права доступа и т.п.) доступна только по платной лицензии, но для автоматизаций и AI-агентов они не нужны.

Что можно и что нельзя по лицензии Sustainable Use License

Код n8n открыт, но это не классический open source вроде MIT, а модель fair-code. В лицензии (текст на GitHub) главное ограничение сформулировано так: n8n можно использовать и изменять только для внутренних задач своей компании, а также в некоммерческих или личных целях. Передавать n8n другим можно только бесплатно и в некоммерческих целях.

На практике это значит:

  • Можно: автоматизировать процессы своей компании (CRM, заявки, отчеты, Telegram-боты, AI-агенты), делать личные проекты, менять код под себя (с пометкой о внесенных изменениях).
  • Нельзя без коммерческой лицензии: продавать доступ к своему n8n другим людям, выдавать его за свой продукт (white-label) или встраивать в платный SaaS-сервис.

Отдельно лежат файлы с пометкой .ee. в имени — это корпоративные функции, они работают только с платным ключом Enterprise.

Что входит в бесплатную Community Edition

Без лицензионного ключа n8n работает в бесплатной редакции Community Edition. В ней есть почти все: все ноды и интеграции, AI-агенты, вебхуки, расписания, неограниченное число сценариев и запусков, логирование и даже режим очередей (queue mode) для масштабирования.

Нет только функций для команд и корпораций:

  • проектов и совместного доступа к сценариям и учетным данным — их видят только владелец экземпляра (Owner) и автор;
  • дополнительных администраторов (роль Admin) — отсюда сообщение «Upgrade to unlock the ability to create additional admin users»;
  • входа через SSO (SAML, LDAP);
  • глобальных переменных, внешних хранилищ секретов (External secrets) и внешнего хранилища файлов;
  • окружений и контроля версий через Git;
  • отправки логов во внешние системы (Log streaming) и режима нескольких основных узлов (Multi-main).

Бесплатный ключ: зарегистрированная Community Edition

Community Edition можно бесплатно «зарегистрировать» — n8n пришлет на почту лицензионный ключ. Он открывает три дополнительные функции:

  • Папки (Folders) — сценарии можно разложить по папкам, что удобно, когда их становится больше десятка.
  • Отладка в редакторе (Debug in editor) — данные из прошлого запуска можно скопировать в редактор и закрепить, чтобы повторить и разобрать ошибку.
  • Пользовательские данные выполнения (Custom execution data) — к запускам можно добавлять свои метки и метаданные, а потом искать по ним.

Как получить ключ: Раздел Usage and plan в n8n: кнопка Unlock для бесплатного ключа Community Edition

  1. В панели n8n нажмите на три точки внизу слева → Settings → Usage and plan.
  2. Нажмите Unlock, введите email и выберите Send me a free license key.
  3. Откройте письмо от n8n и нажмите кнопку активации. Или скопируйте ключ из письма и введите его в том же разделе через Enter activation key.

На новом экземпляре то же самое предлагают сделать прямо при создании аккаунта администратора. Ключ ничего не стоит и не меняет лицензию: роль Admin, проекты и другие корпоративные функции он не открывает, для них нужен платный тариф Business или Enterprise.

Варианты установки и выбор базы данных (SQLite vs PostgreSQL)

Развернуть n8n на своем сервере можно несколькими способами: через Node.js (npm), в Docker-контейнере или через Docker Compose. Самый изолированный и простой в обслуживании вариант — Docker Compose. Установку через npm разработчики объявили устаревшей.

Почему для старта достаточно SQLite?

В официальной документации часто советуют подключать внешнюю базу данных PostgreSQL. Она действительно нужна для продакшена с высокой нагрузкой (сотни параллельных запросов в минуту), так как умеет параллельно обрабатывать тяжелые очереди задач.

Однако для большинства проектов, тестов и работы с AI-агентами идеально подходит встроенная SQLite:

  • Нулевая настройка: Не нужно поднимать отдельный контейнер с базой данных, создавать пользователей и прописывать доступы.

  • Экономия ресурсов: SQLite не висит в памяти как отдельный сервис. Сам n8n в простое занимает около 450–500 МБ RAM, поэтому комфортный минимум — VPS с 2 GB RAM.

  • Простота бэкапа: Вся ваша база — это несколько файлов в одной папке.

Быстрая установка n8n на VPS за 5 минут

Для запуска понадобится VPS на Ubuntu или Debian: 2 GB оперативной памяти и не меньше 5 GB свободного места на диске (один только образ n8n весит около 2 GB).

Если не хотите ставить все вручную, посмотрите подборку VPS с предустановленным n8n: провайдеры отсортированы по цене, n8n там разворачивается при заказе сервера.

Инструкция проверена в ноябре 2026 года на Ubuntu 24.04, Docker 29.9 и n8n 2.46.

Шаг 1. Устанавливаем Docker

Подключитесь к серверу по SSH. Если Docker еще не установлен, поставьте его официальным скриптом:

curl -fsSL https://get.docker.com | sh

Проверьте, что Docker и плагин Compose на месте:

docker --version && docker compose version
Docker version 29.9.3, build 5457199
Docker Compose version v5.7.0

Шаг 2. Создаем рабочую папку

mkdir -p ~/n8n && cd ~/n8n

Шаг 3. Создаем файл docker-compose.yml

Выполните команду nano docker-compose.yml и вставьте следующий минимальный манифест:

services:
  n8n:
    image: docker.n8n.io/n8nio/n8n:latest
    container_name: n8n
    restart: unless-stopped
    ports:
      - "127.0.0.1:5678:5678"
    environment:
      - GENERIC_TIMEZONE=Europe/Kyiv
      - TZ=Europe/Kyiv
      - N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
    volumes:
      - n8n_data:/home/node/.n8n

volumes:
  n8n_data:

(Сохраните файл через Ctrl+O → Enter и выйдите Ctrl+X).

Что здесь важно:

  • 127.0.0.1:5678:5678 — панель n8n доступна только с самого сервера. Это сделано намеренно: Docker публикует порты в обход фаервола (ufw), и строка "5678:5678" открыла бы вашу панель всему интернету. Как зайти в панель — в шаге 5.
  • container_name: n8n — фиксированное имя контейнера, к нему удобно обращаться в командах.
  • GENERIC_TIMEZONE и TZ — часовой пояс для расписаний (нода Schedule Trigger). Укажите свой в формате базы IANA, например Europe/Kyiv или Asia/Almaty. Менять нужно обе переменные. Если n8n уже запущен, после правки файла выполните docker compose up -d: Docker пересоздаст контейнер с новым часовым поясом, данные при этом сохранятся. Проверка: docker exec n8n date покажет время в новом поясе. Для отдельного сценария пояс можно переопределить в его настройках (Workflow settings → Timezone).
  • N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true — n8n следит, чтобы файл config с ключом шифрования был доступен только ему (права 600). В n8n 2.x эта проверка уже включена по умолчанию, строка оставлена для наглядности и для старых версий 1.x, где без нее n8n только выводил предупреждение в лог.
  • restart: unless-stopped — директива автозапуска. Гарантирует, что n8n автоматически поднимется при перезагрузке VPS или в случае падения процесса. Контейнер не запустится самостоятельно только в одном случае — если вы вручную остановили его командой docker compose stop.

Шаг 4. Запускаем n8n

docker compose up -d

Что происходит под капотом: Docker сам скачает официальный образ n8n, создаст том (Docker Volume) n8n_data с базой SQLite внутри и запустит сервис в фоновом режиме. Первый запуск занимает 20–30 секунд.

Проверка:

curl -s http://localhost:5678/healthz

Ответ {"status":"ok"} означает, что n8n работает.

Шаг 5. Открываем панель через SSH-туннель

На своем компьютере (Windows PowerShell, macOS или Linux) выполните:

ssh -L 5678:localhost:5678 root@IP_ВАШЕГО_СЕРВЕРА

Пока это окно открыто, панель n8n доступна в браузере по адресу http://localhost:5678. Вас встретит экран создания аккаунта администратора — на этом установка окончена.

Почему не http://IP_ВАШЕГО_СЕРВЕРА:5678? Современные версии n8n по умолчанию выдают cookie входа только для защищенного соединения (флаг Secure). По простому HTTP-адресу браузер ее не сохранит, и n8n покажет предупреждение о secure cookie вместо входа. Адрес localhost браузеры считают защищенным, поэтому через туннель все работает без лишних настроек.

Доступ из интернета и вебхуки: домен, Nginx и HTTPS

Туннеля достаточно, чтобы строить сценарии и запускать их по расписанию. Но если внешние сервисы должны сами обращаться к n8n (Telegram-бот, вебхуки CRM, платежные системы), нужен домен и HTTPS. Схема такая: n8n по-прежнему слушает только 127.0.0.1:5678, а наружу смотрит Nginx — он принимает HTTPS-запросы на домене и передает их в n8n.

Ниже в примерах домен n8n.example.com — замените его на свой.

Шаг 1. Направляем домен на сервер

У регистратора домена или в Cloudflare создайте для поддомена n8n запись A с IP вашего VPS (и AAAA с IPv6-адресом, если он есть).

Шаг 2. Устанавливаем Nginx

apt install -y nginx

Шаг 3. Создаем конфигурацию сайта

Выполните nano /etc/nginx/sites-available/n8n.example.com.conf и вставьте:

map $http_upgrade $connection_upgrade {
    default upgrade;
    ''      close;
}

server {
    listen 80;
    listen [::]:80;
    server_name n8n.example.com;

    location / {
        proxy_pass http://127.0.0.1:5678;
        proxy_http_version 1.1;
        proxy_set_header Host $host;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
        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;
        client_max_body_size 50m;
    }
}

Что здесь важно:

  • proxy_http_version 1.1 — версия протокола только между Nginx и n8n внутри сервера. По умолчанию Nginx говорит с n8n по HTTP/1.0, а WebSocket работает только начиная с HTTP/1.1. HTTP/2 для этого соединения модуль proxy в Nginx не поддерживает, да и выигрыша внутри одного сервера он не дает. Браузеры посетителей при этом подключаются по HTTP/2 или HTTP/3: это настраивается отдельно, на внешней стороне (в блоке HTTPS у Nginx или в Cloudflare).
  • Upgrade и Connection — n8n обновляет редактор в реальном времени через WebSocket. Без этих заголовков сценарии будут выполняться, но интерфейс не покажет результат.
  • proxy_buffering off и proxy_read_timeout 3600s — долгие ответы (например, потоковая выдача AI-агента) не обрываются через 60 секунд.
  • client_max_body_size 50m — можно загружать файлы через вебхуки (по умолчанию Nginx пропускает только 1 МБ).

Включите сайт и проверьте конфигурацию:

ln -s /etc/nginx/sites-available/n8n.example.com.conf /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx

Шаг 4. Получаем сертификат HTTPS

Вариант А: домен без Cloudflare. Бесплатный сертификат Let's Encrypt выпустит Certbot. Он сам добавит в конфигурацию блок HTTPS, редирект с HTTP и будет продлевать сертификат:

apt install -y certbot python3-certbot-nginx
certbot --nginx -d n8n.example.com --email [email protected] --agree-tos --redirect

Перед этим откройте в фаерволе порты 80 и 443: ufw allow 80,443/tcp.

Вариант Б: домен за Cloudflare (оранжевое облако). Посетителям настоящий сертификат выдает сам Cloudflare, поэтому на сервере достаточно самоподписанного:

mkdir -p /etc/ssl/n8n
openssl req -x509 -nodes -newkey rsa:2048 -days 3650 \
  -subj "/CN=n8n.example.com" -addext "subjectAltName=DNS:n8n.example.com" \
  -keyout /etc/ssl/n8n/n8n.key -out /etc/ssl/n8n/n8n.crt

В конфигурации замените listen 80; и listen [::]:80; на:

    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    ssl_certificate     /etc/ssl/n8n/n8n.crt;
    ssl_certificate_key /etc/ssl/n8n/n8n.key;

и выполните nginx -t && systemctl reload nginx.

В панели Cloudflare в разделе SSL/TLS должен стоять режим Full (при режиме Full (strict) Cloudflare не примет самоподписанный сертификат и покажет ошибку 526). Порты 80 и 443 достаточно открыть только для адресов Cloudflare:

for n in $(curl -s https://www.cloudflare.com/ips-v4) $(curl -s https://www.cloudflare.com/ips-v6); do
  ufw allow proto tcp from $n to any port 80,443 comment cloudflare
done

Так сервер не будет доступен напрямую в обход Cloudflare. Чтобы n8n видел настоящие IP посетителей, а не адреса Cloudflare, добавьте в блок server строки set_real_ip_from для каждой сети Cloudflare и real_ip_header CF-Connecting-IP;.

Шаг 5. Сообщаем n8n его адрес

Добавьте в docker-compose.yml в раздел environment четыре новые строки (последние в блоке), остальные оставьте как были:

    environment:
      - GENERIC_TIMEZONE=Europe/Kyiv
      - TZ=Europe/Kyiv
      - N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
      - N8N_HOST=n8n.example.com
      - N8N_PROTOCOL=https
      - WEBHOOK_URL=https://n8n.example.com/
      - N8N_PROXY_HOPS=1

И перезапустите контейнер:

cd ~/n8n && docker compose up -d
  • WEBHOOK_URL — без него n8n будет выдавать внешним сервисам неправильные адреса вебхуков (http://localhost:5678/...).
  • N8N_PROXY_HOPS=1 — n8n знает, что перед ним стоит прокси, и берет IP посетителя из заголовка X-Forwarded-For.

Порт в манифесте оставьте 127.0.0.1:5678:5678: вся внешняя связь идет через Nginx.

Проверка: откройте https://n8n.example.com — появится вход в n8n по защищенному соединению. В любой ноде Webhook адрес теперь начинается с https://n8n.example.com/webhook/....

Безопасность: панель n8n теперь видна всему интернету. Задайте администратору длинный уникальный пароль и включите двухфакторную аутентификацию в личных настройках (Settings → Personal).

Полная установка n8n: Python, песочница и веб-поиск

Установка выше — это один контейнер n8n. Ее хватает для классической автоматизации: все ноды и интеграции, вебхуки, расписания, нода AI Agent и JavaScript в ноде Code. Но часть новых возможностей n8n в ней не работает. Для них разработчики собрали официальный набор контейнеров:

Контейнер Что дает
n8n сам n8n
runners выполнение кода из ноды Code в отдельном контейнере: JavaScript и Python
sandbox-api, sandbox-runner-1 песочница: изолированная среда, где AI-ассистент и новые Агенты n8n выполняют код и работают с файлами
searxng собственный поисковик SearXNG: поиск в интернете для AI-ассистента без платных API
sandbox-certs одноразовый контейнер, создает сертификаты для связи n8n с песочницей и сразу завершается

Когда нужна полная установка

  • Нужен Python в ноде Code (в минимальной установке доступен только JavaScript).
  • Вы используете AI-ассистента и Агентов n8n, которые сами пишут и запускают код, ищут в интернете, разбирают файлы.
  • n8n работает «в бою»: код пользователей выполняется отдельно от самого n8n, и ошибка в сценарии не уронит весь сервис.

Если вы строите обычные сценарии (Telegram-бот, таблицы, CRM, запросы к нейросетям), полная установка не обязательна — минимальной хватит.

Рекомендуемые параметры VPS

  • 2 vCPU, 4 GB RAM, 20 GB диска (SSD/NVMe) — это минимум из официальной документации.
  • В простое весь набор занимает около 700 МБ памяти, но песочница запускает для каждой задачи отдельный контейнер, и под нагрузкой расход растет.
  • Образы занимают около 4 GB на диске.

Установка

Проще всего поставить набор официальным скриптом: он скачает compose.yml, создаст файл .env с уникальными паролями для связи контейнеров и настройки поиска. Флаг --no-start нужен, чтобы перед запуском поправить манифест:

curl -fsSL https://get.n8n.io -o get-n8n.sh
N8N_DIR=~/n8n sh get-n8n.sh --no-start

Скрипт откажется работать, если папка ~/n8n уже существует и не пуста: для перехода с минимальной установки укажите другую папку или сначала сделайте бэкап.

Затем откройте ~/n8n/compose.yml и сделайте две правки (в примере ниже они уже внесены):

  1. Порт n8n: замените '5678:5678' на "127.0.0.1:5678:5678" — по той же причине, что и в минимальной установке (Docker обходит фаервол).
  2. Добавьте restart: unless-stopped всем сервисам, кроме sandbox-certs. В официальном файле этой строки нет, и после перезагрузки VPS n8n сам не поднимется.

Часовой пояс добавьте в конец файла ~/n8n/.env:

GENERIC_TIMEZONE=Europe/Kyiv
TZ=Europe/Kyiv

Итоговый compose.yml (версии n8n и песочницы, а также все пароли берутся из .env):

volumes:
  n8n-data:
  sandbox-tls:

services:
  sandbox-certs:
    image: ghcr.io/n8n-io/n8n-sandbox-service-api:${N8N_SANDBOX_VERSION}
    user: '0:0'
    entrypoint: ['sh', '-c']
    command:
      - >
        bootstrap-mtls.sh --out-dir /tls --api-san sandbox-api
        --control-san-prefix sandbox-runner --world-readable &&
        chown -R sandbox-api:sandbox-api /tls/api && chmod -R a+rX /tls
    environment:
      NUM_RUNNERS: '1'
    volumes:
      - sandbox-tls:/tls

  sandbox-api:
    image: ghcr.io/n8n-io/n8n-sandbox-service-api:${N8N_SANDBOX_VERSION}
    restart: unless-stopped
    depends_on:
      sandbox-certs:
        condition: service_completed_successfully
    env_file: .env
    environment:
      SANDBOX_API_GRPC_TLS_CERT_FILE: /tls/api/grpc-server.crt
      SANDBOX_API_GRPC_TLS_KEY_FILE: /tls/api/grpc-server.key
      SANDBOX_API_GRPC_TLS_CLIENT_CA_FILE: /tls/api/ca.crt
      SANDBOX_API_RUNNER_CONTROL_GRPC_TLS_CA_FILE: /tls/api/ca.crt
      SANDBOX_API_RUNNER_CONTROL_GRPC_TLS_CERT_FILE: /tls/api/control-grpc-api-client.crt
      SANDBOX_API_RUNNER_CONTROL_GRPC_TLS_KEY_FILE: /tls/api/control-grpc-api-client.key
      SANDBOX_API_RUNNER_CONTROL_GRPC_TLS_SERVER_NAME: sandbox-runner-1
    volumes:
      - sandbox-tls:/tls:ro
    healthcheck:
      test: ['CMD', 'wget', '-qO-', 'http://localhost:8080/healthz']
      interval: 5s
      timeout: 3s
      retries: 5
      start_period: 10s

  sandbox-runner-1:
    image: ghcr.io/n8n-io/n8n-sandbox-service-runner-dind:${N8N_SANDBOX_VERSION}
    restart: unless-stopped
    privileged: true
    depends_on:
      sandbox-api:
        condition: service_healthy
    env_file: .env
    environment:
      SANDBOX_RUNNER_API_GRPC_ADDR: sandbox-api:9090
      SANDBOX_RUNNER_HTTP_BASE_URL: https://sandbox-runner-1:8080
      SANDBOX_RUNNER_CONTROL_GRPC_LISTEN_ADDR: ':9091'
      SANDBOX_RUNNER_CONTROL_GRPC_ADVERTISE_ADDR: sandbox-runner-1:9091
      SANDBOX_RUNNER_ID: runner-1
      SANDBOX_RUNNER_DOCKER_SANDBOX_IMAGE: ghcr.io/n8n-io/n8n-sandbox-service-sandbox:${N8N_SANDBOX_VERSION}
      SANDBOX_RUNNER_REGISTRATION_GRPC_CA_FILE: /tls/runner/ca.crt
      SANDBOX_RUNNER_REGISTRATION_GRPC_CERT_FILE: /tls/runner/grpc-client.crt
      SANDBOX_RUNNER_REGISTRATION_GRPC_KEY_FILE: /tls/runner/grpc-client.key
      SANDBOX_RUNNER_REGISTRATION_GRPC_SERVER_NAME: sandbox-api
      SANDBOX_RUNNER_CONTROL_GRPC_TLS_CERT_FILE: /tls/runner/control-grpc-server.crt
      SANDBOX_RUNNER_CONTROL_GRPC_TLS_KEY_FILE: /tls/runner/control-grpc-server.key
      SANDBOX_RUNNER_CONTROL_GRPC_TLS_CLIENT_CA_FILE: /tls/runner/ca.crt
    volumes:
      - sandbox-tls:/tls:ro

  n8n:
    image: docker.io/n8nio/n8n:${N8N_VERSION}
    restart: unless-stopped
    depends_on:
      sandbox-api:
        condition: service_healthy
    ports:
      - "127.0.0.1:5678:5678"
    env_file: .env
    volumes:
      - n8n-data:/home/node/.n8n

  runners:
    image: ghcr.io/n8n-io/runners:${N8N_VERSION}
    restart: unless-stopped
    depends_on:
      - n8n
    environment:
      N8N_RUNNERS_AUTH_TOKEN: ${N8N_RUNNERS_AUTH_TOKEN}
      N8N_RUNNERS_TASK_BROKER_URI: http://n8n:5679
      N8N_RUNNERS_AUTO_SHUTDOWN_TIMEOUT: '15'

  searxng:
    image: ghcr.io/searxng/searxng:latest
    restart: unless-stopped
    environment:
      SEARXNG_SECRET: ${SEARXNG_SECRET}
    volumes:
      - ./searxng-settings.yml:/etc/searxng/settings.yml:ro

Запуск — как и раньше, но первый старт дольше (скачивается около 4 GB образов, 1–3 минуты):

cd ~/n8n && docker compose up -d

Проверка: docker compose ps — пять контейнеров в статусе Up (sandbox-certs завершается сам, это нормально). Вход в панель — через SSH-туннель или домен, как описано выше. Для домена переменные N8N_HOST, N8N_PROTOCOL, WEBHOOK_URL и N8N_PROXY_HOPS добавьте в .env в виде ИМЯ=значение.

Что важно знать

  • Песочница работает с повышенными правами (privileged: true, Docker внутри Docker). Порты ее контейнеров никогда не публикуйте наружу. Если запускать такой контейнер на сервере нежелательно, вместо собственной песочницы можно подключить облачную Daytona (отдельный аккаунт).
  • Python в ноде Code по умолчанию не разрешает import, даже стандартных модулей: сценарий с import json завершится ошибкой «Security violations detected». Это защита, разрешенные модули задаются в настройках раннеров (переменная N8N_RUNNERS_STDLIB_ALLOW).
  • Бэкап: том называется n8n_n8n-data (а не n8n_n8n_data), а файл .env с паролями тоже нужно сохранять. Остановка и архивация — как в разделе ниже, только с этим именем тома.
  • Обновление: N8N_DIR=~/n8n sh get-n8n.sh --upgrade. Скрипт сам поменяет версии n8n и песочницы в .env, скачает образы и перезапустит контейнеры. Простой docker compose pull здесь версию не обновит: она закреплена в .env.

Резервная копия (бэкап)

Все ваши сценарии, учетные записи и ключи API хранятся в томе n8n_data. Бэкап нужно делать регулярно и обязательно перед каждым обновлением.

Важно копировать всю папку тома целиком, а не один файл database.sqlite:

  • n8n работает с SQLite в режиме WAL: свежие изменения лежат в соседнем файле database.sqlite-wal, и без него копия базы окажется неполной;
  • в файле config хранится ключ шифрования. Без него сохраненные в n8n пароли и API-ключи не расшифровать даже из целой базы.

Шаг 1. Создаем папку для бэкапов

mkdir -p ~/n8n_backups

Шаг 2. Останавливаем n8n и архивируем том

cd ~/n8n
docker compose stop
docker run --rm -v n8n_n8n_data:/data:ro -v ~/n8n_backups:/backup alpine tar czf /backup/n8n_$(date +%Y%m%d_%H%M%S).tar.gz -C /data .
docker compose start

_Имя тома n8n_n8n_data складывается из имени папки проекта (n8n) и имени тома из манифеста (n8n_data). Точное имя покажет команда docker volume ls._

Остановка n8n занимает несколько секунд, зато копия базы гарантированно целая.

Проверка: выполните ls -lh ~/n8n_backups — появится архив вида n8n_20261108_102200.tar.gz. Храните копии не только на этом же сервере: скачайте архив к себе или отправьте в облако.

Как восстановиться из бэкапа

cd ~/n8n
docker compose down
docker run --rm -v n8n_n8n_data:/data -v ~/n8n_backups:/backup alpine sh -c "rm -rf /data/* && tar xzf /backup/n8n_20261108_102200.tar.gz -C /data"
docker compose up -d

(Подставьте имя своего архива.) После запуска войдите в n8n со своим старым логином и паролем — все сценарии и подключения будут на месте.

Как обновлять n8n до последней версии

Одно из главных преимуществ развертывания n8n через Docker Compose — это предельно простое обновление. Данные лежат в отдельном томе n8n_data, поэтому при замене контейнера они сохраняются.

Перед обновлением сделайте бэкап (см. раздел выше).

Шаг 1. Переходим в папку с проектом

cd ~/n8n

Шаг 2. Скачиваем свежий образ n8n

docker compose pull

Docker сравнит вашу текущую версию n8n с актуальной в официальном реестре и скачает новый образ.

Шаг 3. Перезапускаем контейнер

docker compose up -d

Docker Compose автоматически остановит старый контейнер и запустит новый с обновленной версией n8n.

Проверка: выполните docker compose ps — статус контейнера должен быть Up. Номер версии покажет команда docker exec n8n n8n --version.

Совет: тег latest всегда тянет самую свежую стабильную версию, включая крупные (мажорные) обновления, которые могут менять поведение нод. Если n8n у вас работает «в бою», укажите в манифесте конкретную версию (например, docker.n8n.io/n8nio/n8n:2.46.6) и повышайте ее вручную, предварительно прочитав release notes.

Старые образы после обновлений занимают место на диске, их можно удалить командой docker image prune.

Итог: с чего начать и когда нужен сервер с видеокартой

Для большинства задач хватает схемы из этой статьи: бесплатная Community Edition в Docker, база SQLite и недорогой VPS с 2 GB RAM. Сценарии и запуски не ограничены, а нейросети вроде ChatGPT, Claude или Gemini n8n подключает по API: сама модель работает на стороне провайдера, и мощный сервер для этого не нужен. Когда первые сценарии заработают, переходите к AI-агентам в n8n.

Отдельный случай — локальный ИИ на том же сервере, что и n8n. Так делают, когда данные (переписку с клиентами, документы, внутренние базы) нельзя отправлять внешним сервисам или когда запросов к модели так много, что оплата API обходится дороже аренды сервера. В n8n для этого есть ноды Ollama: языковая модель работает в соседнем Docker-контейнере, а n8n обращается к ней как к обычной ноде Chat Model. У разработчиков n8n есть готовая сборка Self-hosted AI Starter Kit: n8n, Ollama, векторная база Qdrant и PostgreSQL в одном docker-compose.yml.

Для локальной модели обычного VPS уже мало: на процессоре ответы генерируются очень медленно. Нужна видеокарта NVIDIA и пакет NVIDIA Container Toolkit, чтобы Docker видел ее. Модели на 7–8 млрд параметров в сжатом (квантованном) виде помещаются в 8 GB видеопамяти, для моделей на 30 млрд параметров и больше нужно от 24 GB. Подобрать сервер с видеокартой для n8n и локальной нейросети можно на нашей главной странице: там собраны тарифы хостеров с GPU, фильтр по модели видеокарты и цены.

Все статьи о n8n

Автор: Ai Pedia

Изучаю ИИ не как магию, а как инструмент. Люблю порядок в данных и сложные системы.