Что такое обратный прокси?
Пожалуй, самый популярный обратный прокси в сообществе домашних серверов и Home Assistant. Веб-интерфейс, в котором всё настраивается мышкой: добавили домен, указали внутренний адрес и порт сервиса, включили SSL — готово.
Под капотом — Nginx, но вам не нужно редактировать конфигурационные файлы вручную. Let's Encrypt сертификаты — через встроенный интерфейс, автообновление включено. Поддержка WebSocket (нужен для Home Assistant), потоковых соединений, кастомных заголовков.
Устанавливается в Docker за минуту. Для большинства домашних инсталляций — оптимальный выбор: просто, наглядно, работает.
Обратный прокси, спроектированный для Docker-окружений. Traefik автоматически обнаруживает новые контейнеры и создаёт для них правила маршрутизации — через лейблы (labels) в docker-compose.
Добавили контейнер с лейблом traefik.http.routers.grafana.rule=Host('grafana.myhouse.local') — Traefik автоматически создал маршрут. Удалили контейнер — маршрут исчез. Не нужно заходить в веб-интерфейс и руками добавлять записи. Для тех, кто активно использует Docker Compose — очень удобно.
Поддерживает Let's Encrypt, middleware (аутентификация, редиректы, rate limiting), мониторинг через Prometheus. Настройка — через YAML-файлы или лейблы Docker. Веб-интерфейс — есть, но скорее для мониторинга, чем для конфигурации.
Порог входа выше, чем у NPM. Но для Docker-ориентированных инсталляций — мощнее и автоматизированнее.
Минималистичный обратный прокси с автоматическим HTTPS. Caddy получает сертификат Let's Encrypt автоматически при первом запросе, без какой-либо настройки со стороны пользователя. Просто указал доменное имя — Caddy сам получил сертификат и включил HTTPS.
Конфигурация — в файле Caddyfile. Минимальный пример:
ha.myhouse.example {
reverse_proxy localhost:8123
}
grafana.myhouse.example {
reverse_proxy localhost:3000
}Всё. Два сервиса за обратным прокси с HTTPS. Конфигурация на четыре строки.
Caddy — хороший выбор для тех, кто ценит простоту и не хочет разбираться с Nginx или Traefik. Веб-интерфейса нет (настройка — только файл), но конфигурация настолько проста, что он и не нужен.
Без Proxy Manager — просто Nginx с конфигурационными файлами. Максимальный контроль, минимальная абстракция. Для тех, кто знает Nginx и предпочитает текстовые конфиги графическим интерфейсам.
Используется как обратный прокси миллионами серверов по всему миру. Документация — исчерпывающая. Но для домашнего использования — NPM или Caddy удобнее.
Высокопроизводительный балансировщик нагрузки и обратный прокси. Используется на крупных сайтах для распределения трафика между серверами. Для домашнего умного дома — избыточен. Упоминается для полноты картины.
Обратный прокси маршрутизирует запросы по имени хоста (домену). Чтобы ha.myhouse.local попадал на прокси, нужно, чтобы DNS-сервер знал этот адрес.
Если обратный прокси работает только внутри домашней сети — достаточно локального DNS.
Через роутер. В OpenWrt, MikroTik, pfSense можно добавить локальные DNS-записи: ha.myhouse.local → 192.168.1.10, grafana.myhouse.local → 192.168.1.10. Все указывают на IP-адрес прокси.
Через AdGuard Home / Pi-hole. Если у вас работает DNS-фильтрация — локальные DNS-записи добавляются в настройках AdGuard Home (DNS rewrites) или Pi-hole (Local DNS Records).
Через файл hosts. На каждом компьютере. Работает, но не масштабируется — менять файл на каждом устройстве при добавлении нового сервиса неудобно.
Домен .local зарезервирован для mDNS и может конфликтовать с Avahi/Bonjour. Безопаснее использовать собственный домен (например, home.example.com) или .lan, .home (хотя формально эти зоны тоже не стандартизированы для частного использования).
Если нужен доступ к Home Assistant извне (без VPN), понадобится реальное доменное имя и реальный IP-адрес (статический или с DDNS).
Покупаете домен (или используете бесплатный DDNS-сервис: DuckDNS, No-IP, Dynu). Направляете *.myhouse.example.com на ваш внешний IP. Пробрасываете порт 443 на внутренний IP обратного прокси. Let's Encrypt выдаёт сертификат — и вы получаете https://ha.myhouse.example.com с полноценным HTTPS, доступным из любой точки мира.
Но помните: открытый порт 443 — это точка входа для всех, включая злоумышленников. Двухфакторная аутентификация, fail2ban, Authelia/Authentik, ограничение по GeoIP — меры, которые стоит рассмотреть. А ещё лучше — VPN вместо проброса портов. WireGuard на роутере, подключение к домашней сети, а обратный прокси работает только внутри.
Home Assistant использует WebSocket для real-time обновлений интерфейса. Обратный прокси должен поддерживать проксирование WebSocket-соединений — иначе интерфейс HA откроется, но не будет обновляться в реальном времени.
Nginx Proxy Manager, Traefik, Caddy — все поддерживают WebSocket. В NPM — достаточно включить галочку «WebSockets Support» при создании записи. В Caddy — работает автоматически. В чистом Nginx — нужно добавить заголовки Upgrade и Connection в конфигурацию.
Home Assistant также требует указать trusted_proxies в configuration.yaml — список IP-адресов, с которых принимаются проксированные запросы. Без этого HA будет видеть все запросы как приходящие от IP прокси, а не от реальных клиентов. Подробности — в документации Home Assistant.
Grafana. Работает за прокси без проблем. Нужно указать root_url в конфигурации Grafana, соответствующий внешнему URL.
Frigate. Веб-интерфейс работает за прокси. Видеопотоки (RTSP) — нет, RTSP не проксируется через HTTP reverse proxy. Но для просмотра через браузер — хватает HTTP/WebSocket.
Zigbee2MQTT. Веб-интерфейс — обычный HTTP, работает за прокси без проблем. Включите WebSocket, если используется.
AdGuard Home. Работает за прокси. Но учтите: DNS-трафик идёт по UDP-порту 53, а не по HTTP. Обратный прокси проксирует только HTTP/HTTPS. DNS-запросы — мимо него.
Portainer. Работает за прокси. WebSocket нужен для терминала контейнеров.
Обратный прокси — мощный инструмент, но он не делает небезопасный сервис безопасным. Если Frigate или Zigbee2MQTT не имеют аутентификации, а вы вывесили их на публичный домен через прокси — любой в интернете получит доступ к вашим камерам и Zigbee-сети.
Правила: внутренние сервисы без аутентификации — только через VPN или только из локальной сети. Если нужен внешний доступ — обязательна аутентификация (встроенная в сервис или через прокси). Home Assistant имеет аутентификацию — его можно вывешивать (с осторожностью). Grafana — тоже. Zigbee2MQTT или Frigate без пароля — нельзя.
Обратный прокси — это порядок. Вместо россыпи IP-адресов и портов — понятные имена. Вместо HTTP — HTTPS. Вместо семи пробросов портов — один. Вместо настройки TLS на каждом сервисе — один сертификат на прокси.
Для домашнего умного дома Nginx Proxy Manager — оптимальный старт. Установка — пять минут в Docker. Настройка сервиса — три клика. Let's Encrypt — галочка в интерфейсе. После первой настройки вы будете добавлять каждый новый сервис за минуту, и каждый будет доступен по красивому адресу с зелёным замочком в браузере.
Не обязательная вещь. Но из тех, которые, однажды настроив, уже не захочется убирать.
Статья подготовлена на основе документации проектов Nginx, Traefik, Caddy, Nginx Proxy Manager и материалов сообщества Home Assistant. Все упомянутые торговые марки принадлежат их правообладателям. Материал носит информационный характер и не является рекламой.