n8n Self-Hosting: Полное руководство по установке с Docker
n8n Self-Hosting Docker Развёртывание n8n на собственной инфраструктуре обеспечивает суверенитет данных, неограниченное количество рабочих процессов и предсказуемые затраты. Docker Compose позволяет поднять изолированную и воспроизводимую среду за считанные минуты.
Что такое n8n Self-Hosting и почему стоит его выбрать?
n8n self-hosting означает запуск движка рабочих процессов на собственном сервере или облачной виртуальной машине. Ваши данные никогда не проходят через серверы третьих лиц; ежемесячных лимитов на выполнение нет, а затраты на лицензию фиксированы.
Суверенитет данных является жёстким требованием в корпоративных средах. Нормативно-правовые требования в финансовом секторе, здравоохранении и государственном управлении предписывают обработку данных клиентов на отечественной или частной инфраструктуре. При использовании n8n Cloud все данные рабочих процессов проходят через серверы n8n GmbH. Модель self-hosting полностью устраняет этот риск: данные обрабатываются исключительно в системах под вашим контролем.
Картина с затратами выглядит иначе. Обзор сравнения цен n8n Cloud и self-hosted показывает, что ежемесячная плата за облачный план быстро растёт по мере увеличения числа рабочих процессов и объёма выполнений. На собственном сервере вы платите только за инфраструктуру; n8n Community Edition полностью бесплатен и имеет открытый исходный код. Подробнее о корпоративных возможностях автоматизации рабочих процессов n8n можно узнать из соответствующего руководства.
Причина применения Docker очевидна: он обеспечивает чистую изолированную среду выполнения, предотвращает конфликты зависимостей и позволяет версионировать весь стек в одном файле конфигурации. n8n официально рекомендует развёртывание на основе Docker, а официальный образ на Docker Hub постоянно обновляется.
Системные требования
Для использования в малом и среднем бизнесе достаточно 2 виртуальных ЦПУ, 4 ГБ ОЗУ и 40 ГБ SSD. Высокая нагрузка или большое количество параллельных выполнений требуют удвоения этих значений.
Таблица ниже содержит рекомендуемые минимальные и производственные требования к оборудованию для различных сценариев использования. Значения основаны на официальной документации n8n и практическом опыте; фактические требования варьируются в зависимости от нагрузки.
| Сценарий | vCPU | ОЗУ | SSD | Примечания |
|---|---|---|---|---|
| Один пользователь / тест | 1 | 1 ГБ | 10 ГБ | SQLite, низкий объём |
| МСБ / агентство (рекомендовано) | 2 | 4 ГБ | 40 ГБ | PostgreSQL, умеренная нагрузка |
| Средний масштаб / режим очереди | 4 | 8 ГБ | 80 ГБ | Redis + воркеры, высокий объём |
| Крупный масштаб / HA | 8+ | 16 ГБ+ | 200 ГБ+ | Несколько воркеров, балансировщик |
В качестве операционной системы рекомендуется Ubuntu 22.04 LTS или Debian 12. Необходимо установить Docker Engine 24+ и Docker Compose v2.x. Для управления файрволом рассмотрите UFW, для управления SSL-сертификатами — Certbot или Caddy. Убедитесь, что A-запись вашего домена указывает на сервер; корректная A-запись обязательна для выпуска HTTPS-сертификата.
Установка с помощью Docker Compose
Определите n8n, PostgreSQL, Nginx и опциональный Redis в одном файле docker-compose.yml для создания версионированной и воспроизводимой инфраструктуры. Все переменные окружения управляются через файл .env.
Создайте директорию проекта и подготовьте следующую структуру. Используйте файл .env для паролей и чувствительных значений; никогда не включайте этот файл в Git-репозиторий.
- mkdir -p ~/n8n-stack && cd ~/n8n-stack — создайте директорию проекта.
- Добавьте N8N_ENCRYPTION_KEY, POSTGRES_PASSWORD и N8N_HOST в файл .env.
- Создайте docker-compose.yml: определите сервис n8n (image: n8nio/n8n), сервис postgres, сервис nginx (обратный прокси) и опциональный сервис redis.
- Используйте именованные тома для хранения данных: n8n_data, postgres_data.
- Запустите стек в фоновом режиме командой docker compose up -d.
- Отслеживайте запуск с помощью docker compose logs -f n8n и завершите мастер начальной настройки.
Критически важные переменные окружения для сервиса n8n в docker-compose.yml: DB_TYPE=postgresdb, DB_POSTGRESDB_HOST=postgres, N8N_ENCRYPTION_KEY (случайный, 32+ символа), WEBHOOK_URL (полный домен) и N8N_BASIC_AUTH_ACTIVE=false (при использовании встроенной аутентификации). Для сервиса PostgreSQL обязательно задайте POSTGRES_DB, POSTGRES_USER и POSTGRES_PASSWORD. Все сервисы должны взаимодействовать через одну пользовательскую сеть Docker, чтобы контейнеры могли разрешать имена друг друга без публикации внутренних портов.
После завершения настройки перейдите в браузере по адресу https://n8n.вашкомпания.com. Мастер первого запуска предложит создать учётную запись администратора. Сразу после этого активируйте двухфакторную аутентификацию в меню настроек.
База данных: SQLite или PostgreSQL?
SQLite подходит только для тестовых сред с одним пользователем. В производственной среде необходимо использовать PostgreSQL: данные сохраняются при перезапуске, инструменты резервного копирования зрелые, и режим очереди требует PostgreSQL.
n8n по умолчанию использует SQLite. Хотя для быстрого старта это выглядит привлекательно, SQLite может вызвать конфликты блокировки записи при параллельном доступе и замедляется при больших объёмах истории выполнений. Некорректная привязка тома может также привести к потере данных при перезапуске контейнера Docker.
| Характеристика | SQLite | PostgreSQL |
|---|---|---|
| Простота установки | Высокая (встроена) | Средняя (отдельный сервис) |
| Стабильность в production | Низкая | Высокая |
| Параллельный доступ | Ограниченный | Полная поддержка |
| Инструменты резервного копирования | Базовые | pg_dump, WAL, Barman |
| Поддержка режима очереди | Нет | Да |
| Масштабируемость | Один сервер | Горизонтальное масштабирование |
Для миграции на PostgreSQL экспортируйте рабочие процессы в формате JSON через Настройки > Экспорт в текущем экземпляре n8n, затем импортируйте их в новый экземпляр с поддержкой PostgreSQL. История выполнений не переносится; только определения рабочих процессов. Поэтому выбор PostgreSQL с самого начала является наиболее правильным подходом.
Обратный прокси, HTTPS и настройка домена
Для публикации n8n в интернете настройте обратный прокси с Nginx или Caddy и получите действующий SSL-сертификат. Caddy управляет сертификатами автоматически; Nginx более распространён и гибок.
Основная конфигурация обратного прокси Nginx: слушайте порт 5678 контейнера n8n как upstream, перенаправляйте трафик HTTP-порта 80 на 443, определите пути к SSL-сертификатам на порту 443 и добавьте заголовки proxy_http_version 1.1, Upgrade и Connection для поддержки WebSocket. Поддержка WebSocket обязательна для редактора рабочих процессов n8n в реальном времени.
При использовании Caddy конфигурация значительно упрощается. Достаточно указать домен и адрес бэкенда в файле Caddyfile; Caddy автоматически получает и обновляет SSL-сертификат через Let's Encrypt. Caddy v2 также поддерживает динамическую конфигурацию через JSON API.
- Nginx: получите сертификат Let's Encrypt командой certbot --nginx -d n8n.вашкомпания.com и настройте cron-задание для автоматического обновления.
- Caddy: активируйте обратный прокси директивой reverse_proxy n8n:5678; управление сертификатами автоматическое.
- В обоих случаях задайте переменную окружения n8n WEBHOOK_URL равной полному HTTPS-адресу.
- Настройка буфера Nginx: proxy_read_timeout 300s; увеличьте значение тайм-аута для длительно выполняемых рабочих процессов.
Режим очереди и горизонтальное масштабирование
Режим очереди n8n распределяет выполнение рабочих процессов между несколькими воркер-процессами через очереди Redis. Основной экземпляр n8n обрабатывает вебхуки и UI, а воркеры выполняют задачи в фоновом режиме.
В конфигурации по умолчанию все задачи выполняются последовательно в одном процессе n8n. Когда число параллельных рабочих процессов возрастает или длительные задачи блокируют другие выполнения, следует активировать режим очереди. По сравнению с Zapier и Make, гибкость n8n через режим очереди является одним из ключевых преимуществ.
Для активации режима очереди добавьте сервис Redis в docker-compose.yml и задайте следующие переменные окружения для сервиса n8n: EXECUTIONS_MODE=queue, QUEUE_BULL_REDIS_HOST=redis и QUEUE_BULL_REDIS_PORT=6379. Затем определите отдельный воркер-сервис: используйте тот же образ n8n, но укажите команду n8n worker --concurrency=5. Воркер-сервис должен использовать те же тома и сеть, что и основной сервис n8n.
- Масштабируйте воркеры динамически командой docker compose up -d --scale n8n-worker=3.
- Настройте значение --concurrency каждого воркера в соответствии с количеством ЦПУ сервера.
- Задайте Redis maxmemory-policy равным noeviction; данные очереди не должны вытесняться.
- Используйте Bull Dashboard или встроенный просмотр очереди выполнений n8n для мониторинга.
Безопасность, резервное копирование и обновления
Производственное развёртывание n8n требует UFW-файрвола, аутентификации по SSH-ключу, fail2ban, встроенной 2FA и зашифрованного N8N_ENCRYPTION_KEY. Используйте pg_dump PostgreSQL и автоматизацию директории данных n8n для резервного копирования.
Подробное руководство доступно по теме безопасность n8n и корпоративное управление. Основные меры безопасности: активируйте UFW и разрешите только порты 22 (SSH, нестандартный порт), 80 (HTTP) и 443 (HTTPS). Ограничьте SSH аутентификацией по ключу и отключите вход по паролю. Установите fail2ban для защиты от атак методом перебора.
Специфика безопасности n8n: задайте переменную окружения N8N_ENCRYPTION_KEY случайным надёжным значением; при утере этого ключа зашифрованные учётные данные не подлежат восстановлению. Активируйте встроенную 2FA n8n сразу после первого входа. Используйте собственную систему управления пользователями n8n вместо N8N_BASIC_AUTH_ACTIVE.
- Резервное копирование: ежедневно создавайте резервные копии PostgreSQL с помощью pg_dump и отправляйте их в S3-совместимое объектное хранилище (MinIO, AWS S3).
- Резервное копирование директории данных n8n: резервируйте том n8n_data с помощью rsync или tar.
- Обновления: загрузите новый образ n8n командой docker compose pull и перезапустите сервисы с docker compose up -d --force-recreate. Всегда создавайте резервную копию перед обновлением.
- Фиксация версии: используйте в docker-compose.yml конкретный тег вида n8nio/n8n:1.x.x вместо n8nio/n8n:latest для защиты от неожиданных критических изменений.
- Управление журналами: используйте драйвер журналов Docker json-file и установите ограничения max-size/max-file.
Для регулярного аудита безопасности ориентируйтесь на стандарты CIS Benchmarks и автоматизируйте обновления операционной системы (unattended-upgrades). Следите за примечаниями к выпускам сообщества n8n и оперативно применяйте критические патчи безопасности. Наша команда Sora DevOps помогает клиентам правильно выстроить инфраструктуру n8n self-hosting с самого начала — запишитесь на бесплатную консультацию для планирования вашего проекта.
Часто задаваемые вопросы
Обязателен ли Docker для n8n self-hosting?
Docker не является обязательным; n8n можно установить напрямую в среде Node.js. Однако n8n официально рекомендует Docker за изолированную среду выполнения, простоту обновлений и управление зависимостями. Docker Compose — наиболее практичный вариант.
Что выбрать: SQLite или PostgreSQL?
SQLite достаточен для тестирования и сценариев с одним пользователем. В производственной среде всегда используйте PostgreSQL: обеспечивает сохранность данных при перезапусках, надёжные инструменты резервного копирования и необходим для режима очереди.
Какие серверные ресурсы нужны для n8n self-hosting?
Для МСБ и агентств подойдут 2 vCPU, 4 ГБ ОЗУ и 40 ГБ SSD. При высокой нагрузке или большом параллелизме рекомендуются 4 vCPU и 8 ГБ ОЗУ; режим очереди обеспечивает горизонтальное масштабирование.
Как настроить HTTPS?
Настройте обратный прокси с Nginx или Caddy. В случае Nginx используйте Certbot для получения сертификата Let's Encrypt и настройки автоматического обновления. С Caddy управление сертификатами автоматическое; просто укажите домен и адрес бэкенда в Caddyfile.
Как масштабировать n8n горизонтально?
Активируйте режим очереди: добавьте Redis в docker-compose.yml, задайте EXECUTIONS_MODE=queue и определите воркер-сервис. Используйте docker compose up --scale n8n-worker=N для увеличения числа воркеров.
Как обновить n8n в Docker?
Сначала создайте резервную копию PostgreSQL. Затем загрузите новый образ командой docker compose pull и перезапустите сервисы с docker compose up -d --force-recreate. Фиксация версионного тега защищает от критических изменений.
Как выполнять резервное копирование n8n?
Используйте pg_dump для автоматизированных ежедневных резервных копий PostgreSQL и отправляйте их в S3-совместимое объектное хранилище. Аналогично резервируйте директорию данных n8n (том: n8n_data). Храните зашифрованный N8N_ENCRYPTION_KEY в защищённом хранилище.
Заключение
n8n self-hosting с трио Docker Compose, PostgreSQL и Nginx даёт вам корпоративную инфраструктуру автоматизации. Суверенитет данных, предсказуемые затраты и неограниченная ёмкость рабочих процессов делают модель self-hosting явно превосходящей облачную альтернативу. Добавление режима очереди с поддержкой Redis делает систему горизонтально масштабируемой и снижает риск единой точки отказа.
Правильная настройка безопасности и резервного копирования с самого начала — основа долгосрочного операционного здоровья системы. Комбинация UFW, fail2ban, аутентификации по SSH-ключу и встроенной 2FA n8n существенно сокращает поверхность атаки. Наша команда Sora DevOps поможет спланировать, развернуть и оптимизировать вашу инфраструктуру n8n self-hosting — свяжитесь с нами для бесплатной консультации.