Установка n8n с HTTPS через Docker Compose и Traefik
В этой статье мы покажем, как развернуть n8n с поддержкой HTTPS на вашем сервере с Ubuntu, используя Docker Compose и обратный прокси Traefik. Это рекомендованный способ установки для продакшн-окружения.
Шаг 1. Подключитесь к серверу
Подключитесь к серверу по SSH. Подробная инструкция: Как подключиться к серверу по SSH.
Шаг 2. Установите Docker и Docker Compose
Следуйте нашей инструкции: Как установить Docker и Docker Compose.
Шаг 3. Подготовьте домен
Для подключения через HTTPS вам нужен домен, например n8n.example.kz
, который должен указывать на IP-адрес сервера.
Создайте следующую A-запись у вашего регистратора или в панели DNS-хостинга:
Имя | Тип | Значение |
n8n | A | IP вашего сервера |
Если вы используете DNS-хостинг от Unihost.kz, убедитесь, что у домена установлены NS-серверы ns1.unihost.kz
и ns2.unihost.kz
. Инструкция по смене NS: Как изменить NS-серверы домена.
Инструкция по настройке А-записи: Как прописать A-запись для домена .
Шаг 4. Создайте папку проекта
mkdir /opt/n8n
cd /opt/n8n
Шаг 5. Создайте файл .env
Создайте файл .env
в папке проекта со следующими данными:
DOMAIN_NAME=example.kz
SUBDOMAIN=n8n
GENERIC_TIMEZONE=Asia/Almaty
SSL_EMAIL=you@example.kz
После настройки, n8n будет доступен по адресу https://n8n.example.kz
.
Шаг 6. Создайте папки для данных
mkdir local-files
Шаг 7. Создайте docker-compose.yml
Создайте файл docker-compose.yml
в той же директории и вставьте следующий код:
services:
traefik:
image: "traefik"
restart: always
command:
- "--api.insecure=true"
- "--providers.docker=true"
- "--providers.docker.exposedbydefault=false"
- "--entrypoints.web.address=:80"
- "--entrypoints.web.http.redirections.entryPoint.to=websecure"
- "--entrypoints.web.http.redirections.entrypoint.scheme=https"
- "--entrypoints.websecure.address=:443"
- "--certificatesresolvers.mytlschallenge.acme.tlschallenge=true"
- "--certificatesresolvers.mytlschallenge.acme.email=${SSL_EMAIL}"
- "--certificatesresolvers.mytlschallenge.acme.storage=/letsencrypt/acme.json"
ports:
- "80:80"
- "443:443"
volumes:
- traefik_data:/letsencrypt
- /var/run/docker.sock:/var/run/docker.sock:ro
n8n:
image: docker.n8n.io/n8nio/n8n
restart: always
ports:
- "127.0.0.1:5678:5678"
labels:
- traefik.enable=true
- traefik.http.routers.n8n.rule=Host(`${SUBDOMAIN}.${DOMAIN_NAME}`)
- traefik.http.routers.n8n.tls=true
- traefik.http.routers.n8n.entrypoints=web,websecure
- traefik.http.routers.n8n.tls.certresolver=mytlschallenge
- traefik.http.middlewares.n8n.headers.SSLRedirect=true
- traefik.http.middlewares.n8n.headers.STSSeconds=315360000
- traefik.http.middlewares.n8n.headers.browserXSSFilter=true
- traefik.http.middlewares.n8n.headers.contentTypeNosniff=true
- traefik.http.middlewares.n8n.headers.forceSTSHeader=true
- traefik.http.middlewares.n8n.headers.SSLHost=${DOMAIN_NAME}
- traefik.http.middlewares.n8n.headers.STSIncludeSubdomains=true
- traefik.http.middlewares.n8n.headers.STSPreload=true
- traefik.http.routers.n8n.middlewares=n8n@docker
environment:
- N8N_HOST=${SUBDOMAIN}.${DOMAIN_NAME}
- N8N_PORT=5678
- N8N_PROTOCOL=https
- NODE_ENV=production
- WEBHOOK_URL=https://${SUBDOMAIN}.${DOMAIN_NAME}/
- GENERIC_TIMEZONE=${GENERIC_TIMEZONE}
volumes:
- n8n_data:/home/node/.n8n
- ./local-files:/files
volumes:
n8n_data:
traefik_data:
Code language: PHP (php)
Шаг 8. Запустите n8n
docker compose up -d
n8n будет автоматически доступен по адресу https://n8n.example.kz
(подставьте свой домен).
Примечание
Если вы купите облачный сервер в Unihost.kz, установка n8n с HTTPS может быть выполнена нашей технической поддержкой по вашему запросу.