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

Обзор развертывания 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. Конфигурация включает два сервиса:

  1. Traefik

  2. Образ: traefik.

  3. Политика перезапуска: always.

  4. Настройка провайдера Docker для автоматического обнаружения контейнеров.

  5. Включение перенаправления HTTP на HTTPS.

  6. Использование TLS-вызова для автоматического получения сертификатов через ACME.

  7. Привязка портов: 80 и 443.

  8. Монтирование тома /root/letsencrypt для хранения сертификатов.

  9. Монтирование сокета Docker /var/run/docker.sock в режиме только для чтения.

  10. n8n

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

  12. Политика перезапуска: always.

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

  14. Привязка порта 5678 только к локальному интерфейсу (127.0.0.1).

  15. Настройка меток (labels) для интеграции с Traefik:

    • Включение роутера для указанного домена.

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

    • Настройка заголовков безопасности (HSTS, XSS, NoSniff).

  16. Переменные окружения:

    • N8N_HOST — доменное имя.

    • N8N_PORT5678.

    • N8N_PROTOCOLhttps.

    • NODE_ENVproduction.

    • GENERIC_TIMEZONEEurope/Amsterdam.

  17. Монтирование томов:

    • /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.

  • Запуск контейнеров в фоновом режиме:

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

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

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

  • Обновление конфигурации и перезапуск:

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

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

    docker compose logs -f
    

После запуска контейнеров рекомендуется выждать 10 секунд для полной инициализации сервисов.

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