Статьи и руководства

Пошаговая инструкция по установке и настройке n8n с HTTPS за 10 минут

n8n — это мощный инструмент для автоматизации рабочих процессов. Чтобы он корректно работал с внешними сервисами (такими как Telegram, Slack и др.), необходимо обеспечить безопасное соединение по HTTPS. В этой статье мы разберем, как быстро развернуть n8n в Docker и настроить для него SSL-шифрование с помощью веб-сервера Caddy.

Что нам понадобится?

Шаг 1: Подготовка сервера

Первым делом обновим список пакетов и установим все доступные обновления для системы. Это важно для безопасности.

Откройте терминал и выполните:

sudo apt update && sudo apt upgrade -y  

Шаг 2: Установка Docker и Docker Compose

Мы будем запускать n8n и веб-сервер в изолированных контейнерах с помощью Docker. Установить его очень просто одной командой:

curl -fsSL https://get.docker.com | sudo sh 

После установки добавим текущего пользователя в группу docker, чтобы не приходилось постоянно использовать sudo для управления контейнерами: 

sudo usermod -aG docker $USER 

Чтобы изменения вступили в силу без перезагрузки, выполните:

newgrp docker 

Шаг 3: Настройка n8n и Caddy

Создадим отдельную директорию для нашего проекта и перейдем в нее. Это поможет держать все файлы в порядке.

mkdir ~/n8n && cd ~/n8n 

Создаем файл переменных окружения (.env)

В этом файле мы зададим основные настройки n8n. Внимание: замените ваш-домен.ru на ваш собственный домен! 

cat <<EOF > .env
N8N_HOST=ваш-домен.ru
N8N_PROTOCOL=https
N8N_EDITOR_BASE_URL=https://ваш-домен.ru
WEBHOOK_URL=https://ваш-домен.ru
GENERIC_TIMEZONE=Europe/Moscow
EOF
  • N8N_HOSTN8N_PROTOCOLWEBHOOK_URL — критически важные параметры для генерации правильных, безопасных ссылок, которые будут принимать запросы от внешних сервисов.

  • GENERIC_TIMEZONE — устанавливает корректную временную зону для работы планировщика (Scheduler).

Создаем Docker Compose файл (docker-compose.yml)

Это главный файл, который описывает, какие контейнеры нам нужны и как они должны работать. 


cat <<EOF > docker-compose.yml
version: "3.8"
services:
  n8n:
    image: n8nio/n8n:latest
    restart: unless-stopped
    env_file: .env
    volumes:
      - n8n_data:/home/node/.n8n
    networks: [web]

  caddy:
    image: caddy:alpine
    restart: unless-stopped
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile
      - caddy_data:/data
      - caddy_config:/config
    ports:
      - "80:80"
      - "443:443"
    networks: [web]

networks:
  web:

volumes:
  n8n_data:
  caddy_data:
  caddy_config:
EOF

Здесь мы определяем два сервиса:

  1. n8n — основной контейнер с самим инструментом автоматизации.

  2. caddy — простой и современный веб-сервер, который автоматически получит SSL-сертификат от Let's Encrypt и будет перенаправлять HTTPS-трафик на n8n.

Создаем конфигурацию для Caddy (Caddyfile)

Caddy славится своей простотой. Этого файла достаточно, чтобы настроить HTTPS.

cat <<EOF > Caddyfile
ваш-домен.ru {
    reverse_proxy n8n:5678
}
EOF

Не забудьте заменить ваш-домен.ru на ваш домен.

Шаг 4: Запуск

Вся конфигурация готова. Осталось всего две команды:

  1. Скачиваем или обновляем образы Docker, указанные в нашем файле:

    docker compose pull
  2. Запускаем наши контейнеры в фоновом режиме:

    docker compose up -d

Готово!

Теперь ваш n8n полностью настроен и защищен. Откройте браузер и перейдите по вашему домену (например, https://ваш-домен.ru). Вы должны увидеть интерфейс n8n, а соединение будет безопасным (в адресной строке браузера будет значок замка).

Дальнейшая настройка нод и воркфлоуов ограничивается только вашей фантазией!