Введение
Вы успешно арендовали удаленный сервер (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 дней до окончания. Вы настроили безопасность один раз, и больше к этому вопросу можно не возвращаться.