Sora Yazılım
Русский
Заказные программные решения из Турции

n8n Self-Hosting: Полное руководство по установке с Docker

Sora Yazılım Ekibi

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Примечания
Один пользователь / тест11 ГБ10 ГБSQLite, низкий объём
МСБ / агентство (рекомендовано)24 ГБ40 ГБPostgreSQL, умеренная нагрузка
Средний масштаб / режим очереди48 ГБ80 ГБRedis + воркеры, высокий объём
Крупный масштаб / HA8+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-репозиторий.

  1. mkdir -p ~/n8n-stack && cd ~/n8n-stack — создайте директорию проекта.
  2. Добавьте N8N_ENCRYPTION_KEY, POSTGRES_PASSWORD и N8N_HOST в файл .env.
  3. Создайте docker-compose.yml: определите сервис n8n (image: n8nio/n8n), сервис postgres, сервис nginx (обратный прокси) и опциональный сервис redis.
  4. Используйте именованные тома для хранения данных: n8n_data, postgres_data.
  5. Запустите стек в фоновом режиме командой docker compose up -d.
  6. Отслеживайте запуск с помощью 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.

ХарактеристикаSQLitePostgreSQL
Простота установкиВысокая (встроена)Средняя (отдельный сервис)
Стабильность в 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 — свяжитесь с нами для бесплатной консультации.

Нужна помощь по темам из этой статьи?

Запишитесь на бесплатную консультацию с Sora Yazılım — предложим конкретную дорожную карту.