Руководства

n8n на VPS: своя автоматизация без облака и лимитов

n8n на VPS: своя автоматизация без облака и лимитов

n8n — конструктор автоматизаций: соединяет сервисы между собой без программирования. Пришла заявка с сайта — создать сделку в CRM, написать в Telegram и добавить строку в таблицу. Пришло письмо — разобрать его нейросетью и разложить по папкам. Облачная версия n8n берёт плату за количество запусков, а свой экземпляр на VPS работает без таких ограничений — вы платите только за сервер. Ниже — сколько ресурсов нужно, где разместить сервер, как установить n8n через Docker с HTTPS и что сделать, чтобы не потерять сценарии и доступы.

Что важно знать до установки

  • Лицензия. n8n распространяется по лицензии Sustainable Use License. Её можно бесплатно использовать для своего бизнеса и для автоматизаций, которые вы строите клиентам. Нельзя без коммерческого соглашения продавать доступ к самому n8n как к сервису.
  • Версия. Актуальная ветка — 2.x (версия 2.0 вышла в декабре 2025 года), на подходе 3.0. В 3.0 установка через npm для самостоятельного размещения прекращается, поддерживается только Docker. Поэтому ставьте сразу через Docker.
  • База данных. По умолчанию n8n хранит всё в SQLite — для начала достаточно. Для рабочей нагрузки рекомендуется PostgreSQL (версии 16–18). MySQL и MariaDB во второй версии больше не поддерживаются.

Сколько ресурсов нужно

СценарийТарифРесурсы
Знакомство, несколько простых сценариев, SQLiteStart2 vCPU, 2 ГБ
Рабочий экземпляр с PostgreSQL, десятки сценариев, обработка файловMedium3 vCPU, 4 ГБ
Много сценариев, большие выгрузки, режим очереди с воркерамиPremium и выше4 vCPU, 8 ГБ и больше

Ориентир совпадает с рекомендацией провайдера для его готового шаблона: минимум 2 ГБ памяти, рекомендуется 4 ГБ. Память съедают не сами сценарии, а данные, которые через них проходят: большие таблицы, файлы, ответы API. Если сценарий выгружает тысячи строк за раз, берите запас.

Где размещать сервер

n8n почти всегда обращается к внешним сервисам, и от этого зависит выбор страны:

  • Нейросети. API OpenAI, Google Gemini и ряда других сервисов не работают с российских IP-адресов. Если в сценариях есть ИИ-шаги, сервер нужен за рубежом.
  • Telegram. С февраля 2026 года Telegram в России официально замедляют; бот или уведомления из n8n стабильнее работают с зарубежного сервера.
  • Персональные данные. n8n сохраняет данные выполнений — в них могут оказаться имена, телефоны, адреса клиентов. Если это данные россиян, учитывайте 152-ФЗ: базы с ними при сборе должны быть в России. Подробнее — в статье «Российские VPS или зарубежные». Как минимум включите автоочистку истории выполнений (см. ниже).

Для большинства сценариев с внешними API удобны Финляндия (ближе к российским пользователям, Xeon Gold 3.0 GHz и NVMe) и Нидерланды.

Вариант 1: готовый шаблон при заказе

У провайдера в списке систем при заказе VPS есть образ «Alpine Linux + n8n» — сервер приходит с уже установленным n8n. Это самый быстрый старт. После получения сервера проверьте версию n8n, настройте домен с HTTPS и бэкапы — шаги ниже подходят и для этого варианта.

Вариант 2: установка через Docker Compose

Подойдёт для Ubuntu 24.04 или Debian 13 с установленным Docker («Docker на VPS»). Понадобится домен, например n8n.example.com, с A-записью на сервер («DNS: как привязать домен к VPS»).

1. Файл окружения

В папке /opt/n8n создайте .env:

N8N_HOST=n8n.example.com
N8N_PROTOCOL=https
WEBHOOK_URL=https://n8n.example.com/
N8N_PROXY_HOPS=1
GENERIC_TIMEZONE=Europe/Moscow
N8N_ENCRYPTION_KEY=длинная-случайная-строка
POSTGRES_PASSWORD=другая-длинная-случайная-строка
EXECUTIONS_DATA_PRUNE=true
EXECUTIONS_DATA_MAX_AGE=168

Случайные строки удобно сгенерировать командой openssl rand -hex 32. Последние две строки включают автоочистку истории выполнений старше 7 дней (168 часов): база не разрастается, и меньше чувствительных данных лежит на диске.

2. docker-compose.yml

services:
  postgres:
    image: postgres:16
    restart: unless-stopped
    environment:
      POSTGRES_USER: n8n
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
      POSTGRES_DB: n8n
    volumes:
      - pg_data:/var/lib/postgresql/data

  n8n:
    image: docker.n8n.io/n8nio/n8n:stable
    restart: unless-stopped
    env_file: .env
    environment:
      DB_TYPE: postgresdb
      DB_POSTGRESDB_HOST: postgres
      DB_POSTGRESDB_DATABASE: n8n
      DB_POSTGRESDB_USER: n8n
      DB_POSTGRESDB_PASSWORD: ${POSTGRES_PASSWORD}
    ports:
      - "127.0.0.1:5678:5678"
    volumes:
      - n8n_data:/home/node/.n8n
    depends_on:
      - postgres

volumes:
  pg_data:
  n8n_data:
cd /opt/n8n
docker compose up -d
docker compose logs -f n8n

Порт 5678 привязан к 127.0.0.1: снаружи n8n напрямую недоступен, только через Nginx с HTTPS.

3. Nginx и HTTPS

server {
    listen 443 ssl;
    http2 on;
    server_name n8n.example.com;
    # ssl_certificate ... — добавит certbot

    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-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_buffering off;
        client_max_body_size 50m;
    }
}

Заголовки Upgrade и Connection нужны: редактор n8n работает через WebSocket. Сертификат выпустите по инструкции «SSL на VPS». При первом входе n8n попросит создать учётную запись владельца — сделайте это сразу, пока адрес не нашли чужие.

Без чего n8n нельзя оставлять

Ключ шифрования

Все доступы, которые вы вводите в n8n — токены API, пароли, ключи, — хранятся в базе в зашифрованном виде. Ключ — N8N_ENCRYPTION_KEY. Потеряете ключ — база с доступами превратится в набор нечитаемых строк, и все подключения придётся настраивать заново. Сохраните его в менеджере паролей, а не только на сервере.

Бэкапы

Копируйте базу PostgreSQL каждую ночь на другой сервер:

docker compose exec -T postgres pg_dump -U n8n n8n | gzip > /backup/n8n-$(date +%F).sql.gz

Дополнительно полезно выгружать сами сценарии в JSON встроенной командой n8n — их удобно хранить в Git:

docker compose exec -T n8n n8n export:workflow --all --output=/home/node/.n8n/backup.json

Как организовать хранение копий на другом сервере — в статье «Сервер для бэкапа».

Обновления

docker compose pull
docker compose up -d

Перед обновлением на новую основную версию (например, с 2.x на 3.0) сделайте бэкап базы и прочитайте список изменений: в 2.0 и 3.0 менялись настройки по умолчанию и поведение некоторых узлов. В самом n8n есть отчёт о миграции (Settings → Migration Report) — он покажет сценарии, которые потребуют внимания.

Безопасность

  • Двухфакторная аутентификация для учётной записи владельца — включается в настройках пользователя.
  • Не публикуйте порт 5678 наружу — только через Nginx с HTTPS.
  • Узлы, выполняющие команды на сервере (Execute Command), во второй версии по умолчанию отключены — без необходимости не включайте их.
  • Входящие вебхуки защищайте заголовком или токеном: адрес вебхука могут найти и начать слать туда мусор.
  • Мониторинг доступности редактора и вебхуков — «Мониторинг серверов».

Какой тариф взять

Medium в Финляндии под n8n — $20/мес   Start в Финляндии для знакомства — $10/мес

Цены указаны на момент публикации, оплата у провайдера. Medium — 3 vCPU, 4 ГБ, 40 ГБ NVMe: рекомендованный объём памяти для рабочего n8n с PostgreSQL. Образ «Alpine Linux + n8n» выбирается в списке систем при заказе. Начать можно со Start и перейти на Medium без переноса данных, когда сценариев станет больше.

Коротко

  • Свой n8n на VPS — без ограничений на число запусков; лицензия разрешает использовать его для своего бизнеса и клиентских автоматизаций.
  • Минимум 2 ГБ памяти, для рабочего экземпляра с PostgreSQL — 4 ГБ.
  • Для сценариев с нейросетями и Telegram сервер нужен за рубежом; данные россиян — по правилам 152-ФЗ, включите автоочистку истории выполнений.
  • Ставьте через Docker (в 3.0 это единственный способ) или выберите готовый образ при заказе; доступ — только через Nginx с HTTPS.
  • Сохраните N8N_ENCRYPTION_KEY вне сервера и делайте ночной бэкап базы на другой сервер.