eco Начальный Туториал

Развёртывание n8n на VPS: установка через Docker, настройка PostgreSQL и SSL для автоматизации процессов

calendar_month Май 09, 2026 schedule 9 мин. чтения visibility 54 просмотров
Развёртывание n8n на VPS: установка через Docker, настройка PostgreSQL и SSL для автоматизации процессов
info

Нужен сервер для этого гайда? Мы предлагаем выделенные серверы и VPS в 50+ странах с мгновенной настройкой.

Нужен сервер для этого гайда?

Разверните VPS или выделенный сервер за минуты.

Развёртывание n8n на VPS: установка через Docker, настройка PostgreSQL и SSL для автоматизации процессов

TL;DR

В данном руководстве мы разберем процесс создания собственной независимой платформы для автоматизации бизнес-процессов на базе n8n. Мы откажемся от использования встроенной базы данных SQLite в пользу производительной PostgreSQL, настроим автоматическое получение SSL-сертификатов через обратный прокси-сервер Caddy и упакуем всё это в Docker-контейнеры для удобства управления и обновлений. В итоге вы получите мощный инструмент, способный заменить дорогостоящие подписки на Zapier или Make, сохраняя полный контроль над вашими данными.

  • Стек технологий: Docker, Docker Compose, PostgreSQL 17, Caddy 2.7+, n8n.
  • Безопасность: Автоматический HTTPS (Let's Encrypt), изоляция контейнеров, настройка Firewall.
  • Производительность: Оптимизация PostgreSQL под задачи очередей n8n.
  • Надежность: Настройка автоматических бэкапов базы данных и конфигурационных файлов.
  • Срок реализации: 30-40 минут при наличии готового сервера.

1. Что мы настраиваем и зачем: n8n как центр управления автоматизацией

Схема: 1. Что мы настраиваем и зачем: n8n как центр управления автоматизацией
Схема: 1. Что мы настраиваем и зачем: n8n как центр управления автоматизацией

Автоматизация процессов в 2026 году стала стандартом не только для крупного бизнеса, но и для индивидуальных разработчиков. n8n — это расширяемый инструмент автоматизации рабочих процессов, использующий подход "fair-code". В отличие от закрытых облачных платформ, n8n позволяет визуально проектировать сложные цепочки действий (workflows), объединяя сотни сервисов через API.

Почему self-hosted решение на собственном VPS выигрывает у облачных аналогов (Zapier, Make, Pipedream):

  • Отсутствие лимитов на количество шагов: Вы платите только за ресурсы сервера, а не за каждый запуск сценария.
  • Приватность данных: Ваши API-ключи, персональные данные клиентов и корпоративные секреты не покидают ваш сервер.
  • Гибкость: Возможность писать собственные узлы (nodes) на JavaScript и интегрироваться с внутренними базами данных, находящимися в той же локальной сети.
  • Стабильность: Вы не зависите от изменений тарифной политики или внезапного отключения сервисов в вашем регионе.

В рамках данного туториала мы создадим промышленную конфигурацию. Мы не будем использовать стандартную установку через npm, так как она сложна в обновлении и управлении зависимостями. Вместо этого мы применим Docker — это обеспечит изоляцию компонентов и позволит перенести всю систему на другой сервер за считанные минуты.

2. Какой VPS-конфиг нужен под эту задачу

Схема: 2. Какой VPS-конфиг нужен под эту задачу
Схема: 2. Какой VPS-конфиг нужен под эту задачу

n8n — это приложение на Node.js, которое может быть довольно требовательным к оперативной памяти, особенно при обработке больших объемов данных (JSON с тысячами строк или работа с бинарными файлами). PostgreSQL также требует выделенных ресурсов для кэширования запросов.

Характеристика Минимальные требования Рекомендуемые (Production)
CPU 1 Core (Shared) 2 Cores (Dedicated)
RAM 2 GB 4 GB - 8 GB
Диск 20 GB SSD 50 GB+ NVMe
ОС Ubuntu 24.04 LTS Ubuntu 24.04 / 26.04 LTS

Для стабильной работы системы, особенно если вы планируете запускать более 10 активных воркфлоу одновременно, лучше всего взять подходящий VPS с 4 ГБ оперативной памяти. Это обеспечит запас прочности при пиковых нагрузках, когда несколько тяжелых сценариев запускаются одновременно.

Локация сервера: Выбирайте регион, максимально близкий к сервисам, с которыми вы чаще всего интегрируетесь. Если большинство ваших запросов идет к европейским API, выбирайте дата-центры в Амстердаме, Франкфурте или Варшаве для минимизации задержек (latency).

3. Подготовка сервера: базовая безопасность и системные утилиты

Схема: 3. Подготовка сервера: базовая безопасность и системные утилиты
Схема: 3. Подготовка сервера: базовая безопасность и системные утилиты

Прежде чем устанавливать n8n, необходимо подготовить среду. Мы будем использовать Ubuntu 24.04 или 26.04. Первым делом обновим пакеты и настроим базовую защиту.


# Обновляем список пакетов и устанавливаем обновления
sudo apt update && sudo apt upgrade -y

# Устанавливаем необходимые системные утилиты
sudo apt install -y curl wget git software-properties-common ufw fail2ban
    

Настройка брандмауэра (UFW) критически важна. Нам нужно открыть порты для SSH (по умолчанию 22), HTTP (80) и HTTPS (443). Все остальные порты должны быть закрыты для внешней сети.


# Разрешаем стандартные порты
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

# Включаем брандмауэр
sudo ufw enable
    

Рекомендуется также создать отдельного пользователя с правами sudo, чтобы не работать под root. Это снижает риски при случайном выполнении деструктивных команд.


# Создаем пользователя (замените 'deploy' на ваше имя)
adduser deploy
# Добавляем в группу sudo
usermod -aG sudo deploy
    

4. Установка Docker и Docker Compose (актуальные версии 2026)

Схема: 4. Установка Docker и Docker Compose (актуальные версии 2026)
Схема: 4. Установка Docker и Docker Compose (актуальные версии 2026)

В 2026 году Docker Compose является встроенным плагином Docker (команда docker compose без дефиса). Мы будем использовать официальный репозиторий Docker для получения самых свежих версий ПО.


# Добавляем официальный GPG-ключ Docker
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

# Добавляем репозиторий в список источников apt
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# Устанавливаем Docker Engine и плагин Compose
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# Проверяем установку
docker --version
docker compose version
    

Добавим нашего пользователя в группу docker, чтобы запускать контейнеры без постоянного использования sudo:


sudo usermod -aG docker $USER
# Чтобы изменения вступили в силу, перелогиньтесь или выполните:
newgrp docker
    

5. Проектирование архитектуры: Docker Compose и переменные окружения

Схема: 5. Проектирование архитектуры: Docker Compose и переменные окружения
Схема: 5. Проектирование архитектуры: Docker Compose и переменные окружения

Мы создадим структуру каталогов, которая позволит легко управлять проектом и делать бэкапы. Основная идея — разделить конфигурацию (переменные окружения) и описание инфраструктуры (YAML файл).


# Создаем рабочую директорию
mkdir -p ~/n8n-stack && cd ~/n8n-stack

# Создаем папки для данных томов
mkdir -p n8n_data postgres_data caddy_data caddy_config
    

Теперь создадим файл .env. Это "мозг" нашей настройки. Здесь хранятся пароли, доменные имена и настройки почты. Никогда не передавайте этот файл третьим лицам.


# Файл ~/.env
DOMAIN_NAME=n8n.your-domain.com
SUBDOMAIN=n8n
GENERIC_TIMEZONE=Europe/Moscow

# Настройки PostgreSQL
POSTGRES_USER=n8n_user
POSTGRES_PASSWORD=your_strong_password_here
POSTGRES_DB=n8n_db

# Настройки n8n
N8N_ENCRYPTION_KEY=make_a_random_string_here
WEBHOOK_URL=https://n8n.your-domain.com/
    

Совет: Для генерации N8N_ENCRYPTION_KEY используйте команду openssl rand -hex 24. Этот ключ используется для шифрования ваших учетных данных в базе данных n8n. Если вы его потеряете, вы не сможете восстановить доступ к сохраненным API-ключам.

6. Настройка n8n и PostgreSQL: глубокое погружение в конфиги

Схема: 6. Настройка n8n и PostgreSQL: глубокое погружение в конфиги
Схема: 6. Настройка n8n и PostgreSQL: глубокое погружение в конфиги

Теперь создадим файл docker-compose.yaml. Мы будем использовать официальный образ n8n и PostgreSQL 17. Мы также добавим автоматический перезапуск контейнеров в случае сбоя или перезагрузки сервера.


services:
  postgres:
    image: postgres:17-alpine
    restart: always
    environment:
      - POSTGRES_USER=${POSTGRES_USER}
      - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
      - POSTGRES_DB=${POSTGRES_DB}
    volumes:
      - ./postgres_data:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"]
      interval: 5s
      timeout: 5s
      retries: 5

  n8n:
    image: n8nio/n8n:latest
    restart: always
    ports:
      - "127.0.0.1:5678:5678"
    environment:
      - DB_TYPE=postgresdb
      - DB_POSTGRESDB_HOST=postgres
      - DB_POSTGRESDB_PORT=5432
      - DB_POSTGRESDB_DATABASE=${POSTGRES_DB}
      - DB_POSTGRESDB_USER=${POSTGRES_USER}
      - DB_POSTGRESDB_PASSWORD=${POSTGRES_PASSWORD}
      - N8N_ENCRYPTION_KEY=${N8N_ENCRYPTION_KEY}
      - WEBHOOK_URL=${WEBHOOK_URL}
      - GENERIC_TIMEZONE=${GENERIC_TIMEZONE}
    volumes:
      - ./n8n_data:/home/node/.n8n
    depends_on:
      postgres:
        condition: service_healthy

  caddy:
    image: caddy:2-alpine
    restart: always
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile
      - ./caddy_data:/data
      - ./caddy_config:/config
    depends_on:
      - n8n
    

В этой конфигурации мы пробросили порт n8n только на 127.0.0.1. Это означает, что напрямую из интернета к n8n обратиться нельзя — это повышает безопасность. Весь трафик будет идти через Caddy.

7. Настройка SSL и обратного прокси через Caddy

Схема: 7. Настройка SSL и обратного прокси через Caddy
Схема: 7. Настройка SSL и обратного прокси через Caddy

Caddy — это современный веб-сервер, который автоматически получает и обновляет SSL-сертификаты от Let's Encrypt или ZeroSSL. Его конфигурация (Caddyfile) в разы проще, чем у Nginx.

Создайте файл Caddyfile в той же директории:


{
    email [email protected]
}

n8n.your-domain.com {
    reverse_proxy n8n:5678 {
        flush_interval -1
    }
}
    

Параметр flush_interval -1 важен для n8n, так как он использует Server-Sent Events (SSE) для передачи данных о состоянии воркфлоу в реальном времени. Без этой настройки интерфейс может "подтормаживать" или показывать дисконнекты.

Запуск стека:


# Запускаем все сервисы в фоновом режиме
docker compose up -d

# Проверяем логи, если что-то пошло не так
docker compose logs -f n8n
    

Теперь вы можете перейти по адресу https://n8n.your-domain.com и увидеть окно первоначальной настройки n8n. Создайте первого пользователя (администратора) и обязательно сохраните пароль.

8. Бэкапы и обслуживание: стратегия выживания данных

Схема: 8. Бэкапы и обслуживание: стратегия выживания данных
Схема: 8. Бэкапы и обслуживание: стратегия выживания данных

Self-hosting накладывает ответственность за сохранность данных. В n8n нужно бэкапить три вещи:

  1. База данных PostgreSQL (все ваши воркфлоу, история выполнений, учетные данные).
  2. Файлы в .n8n (ключи шифрования, если они не заданы через env, и бинарные данные).
  3. Файлы конфигурации (.env, docker-compose.yaml, Caddyfile).

Пример простого скрипта для бэкапа базы данных (backup.sh):


#!/bin/bash
# Настройки
BACKUP_DIR="/home/deploy/backups"
TIMESTAMP=$(date +"%Y%m%d_%H%M%S")
source /home/deploy/n8n-stack/.env

mkdir -p $BACKUP_DIR

# Дамп базы данных
docker compose -f /home/deploy/n8n-stack/docker-compose.yaml exec -t postgres pg_dump -U $POSTGRES_USER $POSTGRES_DB > $BACKUP_DIR/n8n_db_$TIMESTAMP.sql

# Удаление старых бэкапов (старше 7 дней)
find $BACKUP_DIR -type f -name ".sql" -mtime +7 -delete
    

Добавьте этот скрипт в cron, чтобы он запускался каждую ночь:


# Открываем редактор cron
crontab -e
# Добавляем строку (запуск в 3 часа ночи)
0 3    /bin/bash /home/deploy/n8n-stack/backup.sh
    

Обновление n8n: Благодаря Docker, обновление сводится к трем командам:


docker compose pull
docker compose up -d
docker image prune -f
    

9. Troubleshooting + FAQ: решение типичных проблем

Почему n8n потребляет слишком много оперативной памяти?

Node.js по умолчанию может пытаться занять всю доступную память. Если у вас VPS с 2 ГБ RAM, добавьте в environment переменную NODE_OPTIONS: --max-old-space-size=1536. Это ограничит использование памяти процессом Node.js до 1.5 ГБ, оставляя место для PostgreSQL и системы.

Ошибка "Database is not migration-ready"

Обычно возникает при попытке обновления n8n на несколько мажорных версий сразу. Рекомендуется обновляться последовательно или перед обновлением делать полный дамп базы данных. Также проверьте логи PostgreSQL — возможно, базе не хватило места на диске для выполнения миграций.

Как подключить n8n к локальной базе данных на том же сервере?

Если у вас есть другая БД вне Docker, используйте IP-адрес шлюза Docker (обычно 172.17.0.1) для подключения. Не забудьте настроить pg_hba.conf в PostgreSQL, чтобы разрешить подключения из подсети Docker.

Какой VPS-конфиг минимально подойдёт?

Минимально можно запустить n8n на 1 vCPU и 2 ГБ RAM. Однако в такой конфигурации стоит отключить сохранение истории выполнений (Execution History) для успешных запусков, чтобы не раздувать базу данных и не нагружать диск. Для комфортной работы и сложных сценариев 4 ГБ RAM — это стандарт 2026 года.

Что выбрать — VPS или dedicated для этой задачи?

Для 95% задач автоматизации достаточно VPS. Выделенный сервер (Dedicated) имеет смысл только если вы планируете использовать n8n как ETL-инструмент для перекачки терабайтов данных ежедневно, где критична скорость дисковых операций и отсутствие "шумных соседей" по процессору.

Проблемы с Webhook: n8n возвращает 404 или таймаут

Убедитесь, что переменная WEBHOOK_URL в .env точно соответствует вашему домену и включает https://. Если вы используете тестовые вебхуки, помните, что они работают только когда у вас открыта вкладка с этим воркфлоу в браузере.

10. Выводы и следующие шаги по развитию системы

Мы развернули отказоустойчивую и безопасную среду для автоматизации. Теперь у вас есть мощный инструмент, который полностью принадлежит вам. Использование PostgreSQL вместо SQLite позволит системе масштабироваться до сотен тысяч выполнений в месяц, а Caddy обеспечит надежное шифрование без ручного вмешательства.

Куда двигаться дальше:

  • Интеграция с мониторингом: Настройте Prometheus и Grafana для отслеживания загрузки CPU и памяти вашим n8n-стеком.
  • Очереди задач: При очень высоких нагрузках рассмотрите возможность перевода n8n в режим Queue Mode с использованием Redis и отдельных Worker-контейнеров.
  • Безопасность: Настройте двухфакторную аутентификацию (2FA) в панели n8n и ограничьте доступ к админ-панели через IP-фильтры в Caddyfile.

Практическая рекомендация: начните с автоматизации простых рутинных задач, таких как сбор уведомлений из разных сервисов в один Telegram-канал, и постепенно переходите к сложным бизнес-цепочкам с обработкой данных.

Поделиться этой записью:

развёртывание n8n на vps: установка через docker, настройка postgresql и ssl для автоматизации процессов
support_agent
Valebyte Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.