АвтопилотЛабстудия автоматизацииОбсудить задачу
Навигация по базе знаний

База знаний · n8n

Как установить n8n на свой сервер в России

Пошаговая установка n8n с базой Postgres и HTTPS через Docker Compose на VPS в российском облаке. Домен, секреты, резервные копии и обновления.

Опубликовано 2 мин чтения

Эта инструкция ставит n8n так, как мы делаем это для клиентов: с базой Postgres, автоматическим HTTPS и резервными копиями. Займёт 30–60 минут.

Что понадобится

  • VPS с Ubuntu 24.04: 2 vCPU, 4 ГБ памяти, от 40 ГБ диска. Подойдут Timeweb Cloud, Selectel или Yandex Cloud.
  • Домен или поддомен, например n8n.example.ru, с A-записью на IP-адрес сервера.
  • Доступ к серверу по SSH.

Шаг 1. Установить Docker

Пакеты Docker есть в стандартном репозитории Ubuntu:

sudo apt update && sudo apt upgrade -y
sudo apt install -y docker.io docker-compose-v2
sudo usermod -aG docker $USER

После последней команды выйдите из SSH и зайдите снова, чтобы группа применилась.

Шаг 2. Подготовить папку и секреты

mkdir -p ~/n8n && cd ~/n8n
mkdir -p n8n_data postgres_data caddy_data backups
sudo chown -R 1000:1000 n8n_data

Создайте файл .env с настройками:

N8N_HOST=n8n.example.ru
POSTGRES_PASSWORD=длинный_случайный_пароль
N8N_ENCRYPTION_KEY=длинный_случайный_ключ

Случайные значения удобно получить командой openssl rand -hex 24.

Сохраните N8N_ENCRYPTION_KEY в надёжном месте. Этим ключом шифруются доступы к вашим системам. Без него после восстановления из резервной копии подключения придётся настраивать заново.

Шаг 3. Описать сервисы

Файл docker-compose.yml:

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

  n8n:
    image: docker.n8n.io/n8nio/n8n:latest
    restart: unless-stopped
    environment:
      DB_TYPE: postgresdb
      DB_POSTGRESDB_HOST: postgres
      DB_POSTGRESDB_DATABASE: n8n
      DB_POSTGRESDB_USER: n8n
      DB_POSTGRESDB_PASSWORD: ${POSTGRES_PASSWORD}
      N8N_HOST: ${N8N_HOST}
      N8N_PROTOCOL: https
      WEBHOOK_URL: https://${N8N_HOST}/
      N8N_ENCRYPTION_KEY: ${N8N_ENCRYPTION_KEY}
      GENERIC_TIMEZONE: Europe/Moscow
      TZ: Europe/Moscow
    volumes:
      - ./n8n_data:/home/node/.n8n
    depends_on:
      - postgres

  caddy:
    image: caddy:2
    restart: unless-stopped
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile
      - ./caddy_data:/data

Вместо latest лучше указать конкретную версию n8n из списка релизов. Тогда обновления не будут приходить неожиданно.

В n8n 2.35 и новее адрес для вебхуков задаётся переменной N8N_WEBHOOK_URL. Старое имя WEBHOOK_URL пока работает, но n8n пишет в журнал предупреждение. Если ставите свежую версию, используйте новое имя.

Шаг 4. Настроить HTTPS

Caddy сам получит и будет продлевать сертификат. Файл Caddyfile:

n8n.example.ru {
    reverse_proxy n8n:5678
}

Шаг 5. Запустить

docker compose up -d
docker compose logs -f n8n

Откройте https://n8n.example.ru, создайте учётную запись владельца и включите двухфакторную аутентификацию в настройках профиля.

Если образы не скачиваются

Docker Hub бывает недоступен с российских серверов. В этом случае пропишите зеркало реестра от вашего облачного провайдера в /etc/docker/daemon.json в параметре registry-mirrors и перезапустите Docker командой sudo systemctl restart docker. Адрес зеркала есть в документации провайдера.

Резервные копии

Ежедневная копия базы:

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

Добавьте команду в crontab и храните копии вне сервера, например в объектном хранилище того же провайдера. Вместе с базой сохраняйте файл .env.

Обновление

  1. Сделайте резервную копию.
  2. Поменяйте версию образа n8n в docker-compose.yml.
  3. Выполните docker compose pull && docker compose up -d.
  4. Проверьте, что сценарии запускаются без ошибок.

Базовая безопасность

  • Откройте снаружи только порты 22, 80 и 443: sudo ufw allow 22,80,443/tcp && sudo ufw enable.
  • Входите на сервер по SSH-ключу, вход по паролю отключите.
  • Выпускайте ключи API к своим системам только на нужные разделы и, где можно, только на чтение.

Частые вопросы

Сколько стоит сервер для n8n?

Для небольшой компании хватает VPS с 2 vCPU и 4 ГБ памяти. В российских облаках это обычно 1–2 тыс ₽ в месяц.

Можно ли поставить n8n без Docker?

Можно, через npm. Но Docker проще обновлять и переносить на другой сервер, поэтому мы ставим его.

Почему не облачная версия n8n?

Облачная версия n8n хранит данные за рубежом, а оплатить её из России сложно. Собственный сервер в российском облаке решает обе проблемы.

Готовые модули по теме