Перейти к содержанию

Обзор развертывания n8n на сервере

Предварительные требования и базовые условия

  • Операционная система: Ubuntu 22.04 (Jammy)

  • Права доступа: Требуется доступ с правами root для управления Docker и системными директориями.

  • Домен: Требуется полностью квалифицированное доменное имя (FQDN) для терминации SSL и маршрутизации.

  • Порты:

  • Порт 80 (HTTP) для начального согласования SSL.

  • Порт 443 (HTTPS) для безопасного доступа к приложению.

  • Порт 5678 (Внутренний) для коммуникации сервиса n8n.

FQDN финальной панели

Приложение доступно через домен hostkey.in в следующем формате: n8n<Server ID>.hostkey.in

Сервис открыт для внешнего доступа на порту 443 через прокси Traefik.

Структура файлов и директорий

Развертывание использует следующую структуру директорий на сервере:

  • /root/n8n-compose-file/: Содержит файл конфигурации Docker Compose (compose.yml).

  • /root/letsencrypt/: Хранит SSL-сертификаты и файл конфигурации ACME (acme.json).

  • /root/.n8n/: Сохраняет данные приложения n8n, рабочие процессы (workflows) и учетные данные (credentials).

  • /root/local-files/: Хранит локальные файлы, загруженные в рамках рабочих процессов n8n.

  • /data/: Общая директория для данных, создаваемая во время настройки.

Процесс установки приложения

Приложение n8n развертывается с помощью Docker Compose. Процесс развертывания включает:

  • Установка Docker Engine (версия 5:28.5.2-1~ubuntu.22.04~jammy для Ubuntu 22.04).

  • Создание необходимой структуры директорий.

  • Генерация и запуск файла compose.yml для запуска сервисов.

Специфический образ, используемый для сервиса n8n: docker.n8n.io/n8nio/n8n:latest

Docker-контейнеры и их развертывание

Через Docker Compose развертываются два основных контейнера:

  1. Traefik:

    • Образ: traefik

    • Назначение: Обратный прокси (Reverse Proxy), терминация SSL и маршрутизация.

    • Конфигурация: Включен провайдер Docker для автоматического обнаружения n8n через метки (labels). Настроен на перенаправление всего HTTP-трафика на HTTPS.

  2. n8n:

    • Образ: docker.n8n.io/n8nio/n8n:latest

    • Назначение: Выполнение движка автоматизации рабочих процессов n8n.

    • Пользователь: Запускается от имени root.

    • Сеть: Порт 5678 открыт только на интерфейсе localhost (127.0.0.1), что требует использования прокси Traefik для внешнего доступа.

Развертывание управляется командой docker compose up -d, выполненной в директории /root/n8n-compose-file.

Прокси-серверы

Traefik действует как обратный прокси для приложения со следующей конфигурацией:

  • Точки входа (Entrypoints):

  • web: Слушает порт 80 и перенаправляет на websecure.

  • websecure: Слушает порт 443 для HTTPS-трафика.

  • SSL/TLS:

  • Автоматическое управление сертификатами через Let's Encrypt (ACME TLS Challenge).

  • Сертификаты хранятся в /letsencrypt/acme.json внутри тома контейнера Traefik.

  • Email для уведомлений Let's Encrypt: hkadm@hostkey.com.

  • Посредники (Middleware):

  • Принудительное перенаправление на SSL.

  • Применение строгих заголовков безопасности (STS, XSS Filter, Content-Type Nosniff).

  • Установка заголовка SSLHost и включение поддоменов/предварительной загрузки в заголовок STS.

  • Правила маршрутизации:

  • Маршрутизация трафика к сервису n8n на основе заголовка Host, соответствующего конечному домену.

  • Маппинг внешнего запроса на внутренний порт n8n 5678.

Базы данных

  • Метод подключения: n8n использует SQLite в качестве базы данных по умолчанию, которая хранится в постоянном томе (persistent volume) приложения.

  • Место хранения: Файлы базы данных находятся внутри тома, смонтированного в /root/.n8n.

Права доступа и безопасность

  • Права на файлы:

  • Директории /root/n8n-compose-file и /data принадлежат root:root с правами 0750.

  • Файл compose.yml имеет права 0644.

  • Межсетевой экран (Firewall) и порты:

  • Внешний доступ ограничен портами 80 и 443 через Traefik.

  • Порт 5678 контейнера n8n жестко связан с 127.0.0.1, что предотвращает прямой внешний доступ.

  • Заголовки безопасности:

  • Включен HTTP Strict Transport Security (HSTS) со сроком действия (max-age) 10 лет.

  • Активна фильтрация межсайтовых скриптов (XSS).

  • Отключено определение типа контента (Content-Type sniffing).

Расположение файлов конфигурации и данных

  • Файл Docker Compose: /root/n8n-compose-file/compose.yml

  • Данные n8n: /root/.n8n (монтируется в /root/.n8n внутри контейнера).

  • Локальные файлы: /root/local-files (монтируется в /files внутри контейнера).

  • SSL-сертификаты: /root/letsencrypt (монтируется в /letsencrypt внутри контейнера Traefik).

Доступные порты для подключения

Порт Протокол Описание Видимость
80 HTTP Начальное перенаправление на HTTPS Внешний (через Traefik)
443 HTTPS Безопасный доступ к UI и Webhooks n8n Внешний (через Traefik)
5678 TCP Порт сервиса n8n Только внутренний (127.0.0.1)

Запуск, остановка и обновление

Управление сервисами выполняется с помощью команд Docker Compose из директории конфигурации:

  • Запуск или перезапуск сервисов:

    cd /root/n8n-compose-file
    docker compose up -d
    

  • Остановка сервисов:

    cd /root/n8n-compose-file
    docker compose down
    

  • Обновление образа n8n: Для загрузки последнего тега latest и перезапуска контейнера:

    cd /root/n8n-compose-file
    docker compose pull
    docker compose up -d
    

  • Просмотр логов:

    cd /root/n8n-compose-file
    docker compose logs -f
    

question_mark
Я могу вам чем-то помочь?
question_mark
ИИ Помощник ×