Введение
Платформа n8n уверенно закрепила за собой статус одного из лучших low-code инструментов для автоматизации бизнес-процессов. Одним из ее главных преимуществ является возможность развертывания на собственных серверах (self-hosted). Это дает полный контроль над данными, отсутствие лимитов на количество операций (executions) и возможность интеграции со внутренними корпоративными системами, не имеющими выхода в публичный интернет.
Для надежной работы n8n в производственной среде (production) требуется правильная инфраструктура. В этом исчерпывающем гайде 2025 года мы детально разберем процесс установки n8n на чистый сервер с операционной системой Ubuntu 24.04 LTS. Мы будем использовать современный подход через Docker и Docker Compose, так как он обеспечивает изоляцию процессов, простоту обновления и удобное управление зависимостями.
Подготовка сервера (VPS)
Для начала вам потребуется виртуальный сервер (VPS/VDS). Платформа n8n написана на Node.js и может быть достаточно требовательна к ресурсам при выполнении тяжелых сценариев (например, манипуляций с большими изображениями или парсингом больших объемов данных).
Минимальные требования:
- 1 vCPU
- 2 GB RAM (Категорически не рекомендуется использовать 1 GB, так как Node.js может аварийно завершаться из-за нехватки памяти OOM)
- 20 GB SSD (NVMe предпочтительнее для скорости работы базы данных)
- Чистая установка Ubuntu 24.04 LTS
Сразу после покупки сервера и получения root-доступа по SSH, первым делом обновите пакеты операционной системы до актуальных версий:
sudo apt update && sudo apt upgrade -y
Шаг 1: Установка Docker и Docker Compose
В Ubuntu 24.04 установка Docker стала максимально простой. Мы воспользуемся официальным скриптом от разработчиков, который сам добавит нужные репозитории и установит ядро Docker-engine и плагин Docker Compose.
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
После установки добавим вашего пользователя (если вы работаете не из-под root) в группу docker, чтобы
выполнять команды без sudo:
sudo usermod -aG docker $USER
Совет: чтобы изменения вступили в силу, вам нужно перелогиниться на сервер или выполнить команду
newgrp docker.
Шаг 2: Создание структуры директорий
Для порядка на сервере мы создадим отдельную папку, в которой будут храниться все конфигурационные файлы n8n, а также примонтированные тома (volumes) для сохранения данных при перезапуске контейнеров.
mkdir -p ~/n8n-server
cd ~/n8n-server
Внутри этой папки создадим файл docker-compose.yml. В нем мы опишем архитектуру нашего
приложения. Мы будем использовать связку из трех контейнеров: сам n8n,
PostgreSQL (как более надежная замена встроенной SQLite для хранения логов и настроек) и
Caddy или Traefik для автоматического получения SSL сертификатов (https).
Шаг 3: Конфигурация docker-compose.yml
Создайте файл nano docker-compose.yml и вставьте туда базовый манифест. В рамках 2025 года
разработчики n8n настоятельно рекомендуют использовать базу данных Postgres для любых инсталляций, кроме
самых тестовых, так как это решает проблему блокировок базы (database locks) во время параллельных
выполнений тяжелых webhook'ов.
version: '3.8'
volumes:
db_storage:
n8n_storage:
services:
postgres:
image: postgres:16
restart: always
environment:
- POSTGRES_USER=n8n
- POSTGRES_PASSWORD=generate_strong_password_here
- POSTGRES_DB=n8n
volumes:
- db_storage:/var/lib/postgresql/data
healthcheck:
test: ['CMD-SHELL', 'pg_isready -h localhost -U n8n -d n8n']
interval: 5s
timeout: 5s
retries: 10
n8n:
image: docker.n8n.io/n8nio/n8n
restart: always
environment:
- DB_TYPE=postgresdb
- DB_POSTGRESDB_HOST=postgres
- DB_POSTGRESDB_PORT=5432
- DB_POSTGRESDB_DATABASE=n8n
- DB_POSTGRESDB_USER=n8n
- DB_POSTGRESDB_PASSWORD=generate_strong_password_here
- N8N_HOST=n8n.yourdomain.com
- N8N_PORT=5678
- N8N_PROTOCOL=https
- NODE_ENV=production
- WEBHOOK_URL=https://n8n.yourdomain.com/
- GENERIC_TIMEZONE=Europe/Moscow
ports:
- "127.0.0.1:5678:5678"
volumes:
- n8n_storage:/home/node/.n8n
depends_on:
postgres:
condition: service_healthy
Внимание! Обязательно замените generate_strong_password_here на сложный пароль, а
n8n.yourdomain.com на ваш реальный домен, который вы предварительно привязали к IP адресу
сервера в панели регистратора (А-запись).
Шаг 4: Настройка Reverse Proxy (Nginx) и SSL
В нашем примере мы повесили публичный порт контейнера n8n на интерфейс `127.0.0.1`. Это сделано из соображений безопасности — никто не должен иметь доступ к приложению по прямому IP адресу HTTP протоколу. Мы настроим Nginx в качестве обратного прокси.
Установим Nginx и Certbot (утилиту от Let's Encrypt для получения бесплатных SSL сертификатов):
sudo apt install nginx python3-certbot-nginx -y
Создайте конфигурационный файл для вашего домена
(sudo nano /etc/nginx/sites-available/n8n.yourdomain.com) и настройте проксирование трафика с
80 порта на 5678 (локальный порт n8n), включая поддержку WebSocket-соединений, которые критически важны для
работы UI редактора n8n.
Включите конфигурацию и запустите получение сертификата:
sudo ln -s /etc/nginx/sites-available/n8n.yourdomain.com /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
sudo certbot --nginx -d n8n.yourdomain.com
Шаг 5: Запуск и первичная настройка
Все готово! Осталось только запустить наши контейнеры командой:
docker compose up -d
Ключ -d означает запуск в фоновом режиме (detached mode). Вы можете проверить логи запуска с
помощью команды docker compose logs -f. Если ошибок нет, открывайте в браузере ваш домен
https://n8n.yourdomain.com.
При первом входе платформа предложит вам создать аккаунт администратора. Запомните эти данные — встроенной функции восстановления пароля по email у self-hosted версии нет без дополнительной настройки SMTP.
Заключение
Установка n8n на Ubuntu 24.04 с использованием Docker и PostgreSQL — это золотой стандарт развертывания
платформ автоматизации в 2025 году. Вы получили изолированную, масштабируемую и безопасную среду для
создания сценариев любой сложности. Не забывайте регулярно обновлять систему через
docker compose pull && docker compose up -d и настраивать резервное копирование директории с
volumes. Успешной автоматизации!