n8n — это мощный инструмент для автоматизации рабочих процессов. Чтобы он корректно работал с внешними сервисами (такими как Telegram, Slack и др.), необходимо обеспечить безопасное соединение по HTTPS. В этой статье мы разберем, как быстро развернуть n8n в Docker и настроить для него SSL-шифрование с помощью веб-сервера Caddy.
Что нам понадобится?
Сервер на Ubuntu/Debian (или любой другой Linux-дистрибутив).
Зарегистрированное доменное имя, которое указывает (A-запись) на IP-адрес вашего сервера.
Умение работать с командной строкой.
Шаг 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_HOST, N8N_PROTOCOL, WEBHOOK_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
Здесь мы определяем два сервиса:
n8n — основной контейнер с самим инструментом автоматизации.
caddy — простой и современный веб-сервер, который автоматически получит SSL-сертификат от Let's Encrypt и будет перенаправлять HTTPS-трафик на n8n.
Создаем конфигурацию для Caddy (Caddyfile)
Caddy славится своей простотой. Этого файла достаточно, чтобы настроить HTTPS.
cat <<EOF > Caddyfile
ваш-домен.ru {
reverse_proxy n8n:5678
}
EOF
Не забудьте заменить ваш-домен.ru на ваш домен.
Шаг 4: Запуск
Вся конфигурация готова. Осталось всего две команды:
Скачиваем или обновляем образы Docker, указанные в нашем файле:
docker compose pull
Запускаем наши контейнеры в фоновом режиме:
Готово!
Теперь ваш n8n полностью настроен и защищен. Откройте браузер и перейдите по вашему домену (например, https://ваш-домен.ru). Вы должны увидеть интерфейс n8n, а соединение будет безопасным (в адресной строке браузера будет значок замка).
Дальнейшая настройка нод и воркфлоуов ограничивается только вашей фантазией!