Обзор развертывания n8n на сервере¶
Предварительные требования¶
Для корректной работы приложения на сервере необходимо наличие следующих компонентов и условий:
-
Операционная система Ubuntu (поддерживается релиз jammy).
-
Установленный пакетный менеджер
aptи доступ к репозиториям Docker. -
Права доступа пользователя
rootдля управления контейнерами и файловой системой. -
Открытые порты
80и443для входящего трафика через прокси-сервер. -
Наличие доменного имени, настроенного на IP-адрес сервера.
Структура файлов и каталогов¶
Приложение и его компоненты размещаются в следующих директориях:
-
/root/n8n-compose-file— каталог для хранения файла конфигурацииcompose.yml. -
/root/letsencrypt— хранилище для сертификатов TLS и файлаacme.json. -
/root/.n8n— директория для хранения данных и конфигурации самого приложения n8n. -
/root/local-files— каталог для хранения локальных файлов, используемых в рабочих процессах. -
/data— общая директория для данных, созданная в процессе развертывания.
Контейнеры Docker и их запуск¶
Развертывание приложения осуществляется с использованием Docker Compose. Конфигурация включает два сервиса:
-
Traefik
-
Образ:
traefik. -
Политика перезапуска:
always. -
Настройка провайдера Docker для автоматического обнаружения контейнеров.
-
Включение перенаправления HTTP на HTTPS.
-
Использование TLS-вызова для автоматического получения сертификатов через ACME.
-
Привязка портов:
80и443. -
Монтирование тома
/root/letsencryptдля хранения сертификатов. -
Монтирование сокета Docker
/var/run/docker.sockв режиме только для чтения. -
n8n
-
Образ:
docker.n8n.io/n8nio/n8n:latest. -
Политика перезапуска:
always. -
Запуск от имени пользователя
root. -
Привязка порта
5678только к локальному интерфейсу (127.0.0.1). -
Настройка меток (labels) для интеграции с Traefik:
-
Включение роутера для указанного домена.
-
Принудительное использование TLS.
-
Настройка заголовков безопасности (HSTS, XSS, NoSniff).
-
-
Переменные окружения:
-
N8N_HOST— доменное имя. -
N8N_PORT—5678. -
N8N_PROTOCOL—https. -
NODE_ENV—production. -
GENERIC_TIMEZONE—Europe/Amsterdam.
-
-
Монтирование томов:
-
/root/.n8nдля данных приложения. -
/root/local-filesдля файлов.
-
Файл конфигурации compose.yml размещается в директории /root/n8n-compose-file.
Прокси серверы¶
В качестве обратного прокси используется контейнер Traefik. Он обрабатывает входящий трафик на портах 80 и 443.
-
Трафик HTTP автоматически перенаправляется на HTTPS.
-
Сертификаты TLS генерируются и обновляются автоматически через механизм ACME (TLS-вызов).
-
Электронная почта для уведомлений о сертификатах:
hkadm@hostkey.com. -
Файл с ключами и сертификатами хранится в
/letsencrypt/acme.jsonвнутри контейнера, что соответствует монтированному тому/root/letsencrypt. -
Для приложения n8n настроены заголовки безопасности, включая принудительное использование HTTPS и защиту от XSS-атак.
Права доступа и безопасность¶
-
Директории
/dataи/root/n8n-compose-fileсоздаются с правами доступа0750и владельцемroot. -
Файл конфигурации
compose.ymlимеет права доступа0644и владельцаroot. -
Контейнер n8n запускается от имени пользователя
rootвнутри контейнера. -
Сокет Docker монтируется в режиме только для чтения (
ro), что ограничивает возможности контейнера Traefik по управлению Docker-демоном. -
Доступ к приложению n8n извне возможен только через прокси Traefik, так как порт
5678привязан к127.0.0.1.
Запуск, остановка и обновление¶
Управление контейнерами осуществляется через команды Docker Compose в директории /root/n8n-compose-file.
-
Запуск контейнеров в фоновом режиме:
-
Остановка контейнеров:
-
Обновление конфигурации и перезапуск:
-
Просмотр логов:
После запуска контейнеров рекомендуется выждать 10 секунд для полной инициализации сервисов.