Установка и настройка 11.12.2025 2,599 просмотров

SSL и HTTPS для n8n: настройка через Let's Encrypt и Nginx за 20 минут

#SSL #HTTPS #n8n #Certbot #Nginx #Let's Encrypt
Статья на тему: SSL и HTTPS для n8n: настройка через Let's Encrypt и Nginx за 20 минут

Введение

Вы успешно арендовали удаленный сервер (VPS), установили Docker, запустили n8n и даже вошли в интерфейс по IP-адресу (например, http://192.168.1.10:5678). Кажется, что можно начинать строить интеграции. Но здесь кроется огромная угроза безопасности. Без HTTPS-шифрования все ваши пароли от баз данных, API-ключи OpenAI и данные клиентов передаются в открытом виде. Любой "человек посередине" (провайдер, сниффер в публичной сети) может их перехватить.

Кроме того, если вы захотите настроить Webhook (например, для приема оплат от Stripe или Telegram), эти сервисы просто откажутся отправлять данные на незащищенный http:// адрес. Наличие SSL-сертификата в 2025 году — это не привилегия, а жесткая база. В этой статье мы за 20 минут настроим связку из Nginx (как обратного прокси) и Let's Encrypt (для бесплатного получения SSL), чтобы ваш n8n работал по красивому и безопасному адресу https://n8n.yourdomain.com.

Шаг 1: Привязка домена (DNS A-запись)

Вам понадобится любой домен. Если его нет, можно купить самый дешевый в зонах .ru или .site за пару сотен рублей. Перейдите в панель управления DNS вашего регистратора (Reg.ru, Beget, Cloudflare) и создайте A-запись (A Record):

  • Имя/Поддомен (Host): n8n (или любое другое слово, например, api или flow).
  • IP-адрес (Value): Впишите IPv4-адрес вашего арендованного сервера.
  • TTL: Оставьте по умолчанию.

Совет: Обновление DNS может занять от 10 минут до 24 часов (хотя обычно 10-15 минут достаточно). Проверить можно через сервис dnschecker.org.

Шаг 2: Установка Nginx

Подключитесь к вашему серверу по SSH. n8n уже должен крутиться в Docker-контейнере на порту 5678. Теперь мы поставим Nginx — невероятно быстрый веб-сервер, который будет "встречать" весь трафик из интернета, расшифровывать SSL и передавать его внутрь Docker-контейнера n8n.


# Обновляем пакеты и устанавливаем Nginx
sudo apt update
sudo apt install nginx -y

# Проверяем статус (должен быть "active (running)")
sudo systemctl status nginx
        

Если вы зайдете по IP-адресу вашего сервера в браузере (без указания порта), вы увидите стандартную заглушку "Welcome to nginx!". Это значит, сервер работает.

Шаг 3: Настройка конфигурации обратного прокси (Reverse Proxy)

Nginx нужно объяснить, что запросы, приходящие на домен n8n.yourdomain.com, нужно пересылать (проксировать) на внутренний порт n8n (5678), а также правильно передавать заголовки WebSockets (это критически важно для работы интерфейса n8n в реальном времени).

Создадим новый конфигурационный файл:


sudo nano /etc/nginx/sites-available/n8n.conf
        

Вставьте туда следующий минималистичный конфиг (не забудьте поменять домен на свой):


server {
    listen 80;
    server_name n8n.yourdomain.com; # Замените на ваш домен!

    location / {
        proxy_pass http://127.0.0.1:5678; # Nginx шлет трафик внутрь n8n
        proxy_set_header Connection 'upgrade';
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Host $host;
        proxy_chunked_encoding off;
        proxy_buffering off;
        proxy_cache off;
    }
}
        

Сохраните файл (Ctrl+O, Enter, Ctrl+X). Теперь нужно активировать конфигурацию, создав символическую ссылку, и перезагрузить Nginx:


# Активация
sudo ln -s /etc/nginx/sites-available/n8n.conf /etc/nginx/sites-enabled/
# Проверка конфигурации на опечатки (должно написать "syntax is ok")
sudo nginx -t
# Перезагрузка Nginx
sudo systemctl reload nginx
        

Теперь n8n доступен по имени вашего домена, но всё еще через незащищенный HTTP-протокол.

Шаг 4: Установка Certbot и получение бесплатного SSL Let's Encrypt

Раньше за SSL-сертификаты приходилось платить по $50 в год и вручную прописывать криптографические ключи конфигурации. Некоммерческий центр Let's Encrypt изменил всё — они выдают надежные сертификаты бесплатно. А утилита Certbot позволяет получить и установить их автоматически, модифицировав конфиг Nginx.


# Устанавливаем Certbot и плагин для Nginx
sudo apt install certbot python3-certbot-nginx -y

# Запускаем магию (замените на ваш домен!)
sudo certbot --nginx -d n8n.yourdomain.com
        

В процессе выполнения утилита попросит вас ввести email (туда будут приходить уведомления об истечении сертификата, если скрипт автопродления вдруг сломается) и согласиться с условиями. После этого Certbot сам скачает ключи, сам изменит конфигурационный файл n8n.conf (добавит туда 443 порт) и перезагрузит Nginx.

Финал: Проверка и переменные окружения n8n

Зайдите в браузер по адресу https://n8n.yourdomain.com. Вы должны увидеть зеленый замочек в адресной строке. Поздравляю! Пароли и API-ключи теперь передаются в зашифрованном тоннеле (TLS 1.3).

Важный нюанс: Чтобы Webhooks внутри n8n генерировали правильные (HTTPS) ссылки, вам нужно обновить переменные окружения в файле .env для Docker (остановите контейнер, поменяйте и поднимите заново):


N8N_PROTOCOL=https
N8N_HOST=n8n.yourdomain.com
WEBHOOK_URL=https://n8n.yourdomain.com/
        

Сертификаты Let's Encrypt выдаются на 90 дней, но Certbot при установке автоматически добавил таймер в систему (Cron/Systemd), который будет автоматически продлевать ваш сертификат за 30 дней до окончания. Вы настроили безопасность один раз, и больше к этому вопросу можно не возвращаться.

Полезные материалы по теме