Home Assistant Reverse Nginx SSL proxy

nginx [engine x] je proxy server HTTP a reverzní proxy server, poštovní proxy server a obecný proxy server TCP/UDP, který původně napsal Igor Sysoev. Již dlouhou dobu běží na mnoha silně zatížených ruských webech včetně Yandexu, Mail.Ru, VK a Rambleru. Podle Netcraftu nginx v březnu 2022 obsluhoval nebo proxoval 22,01 % nejvytíženějších webů. Známé služby využívající toto řešeníde jsou mimo jiné Dropbox, Netflix, Wordpress.com, FastMail.FM, Varnish Cache a další…

V článku IoT na chalupě v pustině padla zmínka o Nginx Proxy. Použít LAN Proxy lze pro nešifrované přenosy uvnitř (šifrované) sítě. Zejména pro starší a slabší kusy hardware. Nebo pro IoT hardware integrace, které SSL/TLS nepodporují. Tato vychytávka je ideálna:

  1. Když je pro WAN spojení SSL/TLS certifikát, no pro LAN šifrované spojení použít nemůžeme (nechceme). Díky NGINX Proxy se tedy v LAN k Home Assistant serveru připojíme i v případě absence podpory mDNS (na vašem routeru).
  2. V případě výpadku DNS a připojení pomocí doménového jména ha.domena.cz:8123. Funkční name server potřebujete taktéž pro připojení pomocí Nabu Casa.
  3. V případě, že používáte na Home Assistant panelu čístý nebo takzvaný degoogled či debloated Android s Bromite SystemWebView šifrované spojení fungovat nemusí.

Jisté situace (absence podpory mDNS v routeru) lze řešit doinstalováním Home Assistant pluginu Adguard Home. Ten mDNS umí. Adguard DNS ale nevyřeší hardware, který SSL/TLS šifrovaní nepodporuje. A nvyřeší ani Bromite System WebView.

Instalace Nginx SSL Proxy plugin

Instalace pluginu je klikací a v češtině – tu není o čem psát :) Vzororvá konfigurace je k dispozici na kartě pluginu Nginx SSL Proxy Dokumentace. Samo sebou, předpokláda se, že HA máte nakonfigurovaný s funkční (sub)doménou, SSL portem a platným cerifikátem.

Před spuštením nastaveného Nginx Proxy pluginu (v našem případě konfigurace vypadá takto: …)

Nginx Home Assistant Proxy konfigurace
Nginx Home Assistant Proxy konfigurace

..je nutné zakomentovat konfiguraci SSL certifikátu a upravit nastavení http v configuration.yaml – v našem případě výsledná konfigurace (nepoužíváme port 443 ale 8807) vypadá takto:

http:
#  server_port: 8807
  use_x_forwarded_for: true     # Info pro HA, že požadavky přicházejí via reverzní proxy
  trusted_proxies:
    - 172.30.32.0/23            # V Hass.io potřebujeme pro Docker subnet
    - 127.0.0.1                 # Localhost IPv4 adresa
#  ssl_certificate: /ssl/fullchain.pem
#  ssl_key: /ssl/privkey.pem

Po bezchybném startu Nginx Proxy pluginu vidíme na kartě Log několik výstupu z inicializace s INFO oznámením o startu Nginx.

Nginx Home Assistant Proxy log
Nginx Home Assistant Proxy log

Konfigurace Android / iPhone Home Assistant klienta pak bude fungovat v kombinaci https://ha.domena.cz pro WAN + http://192.168.0.1:8123 (v případě, že vám v LAN funguje mDNS i http://hassio.local:8123) pro LAN.

Nginx Home Assistant Proxy android
Nginx Home Assistant Proxy android telefon

Běží vám Home Assistant v ESXi jako virtuální stroj a mělo by, no mDNS nefunguje? Nezapomeňte skontrolovat nastavení virtuální sítě v ESXi. Existují potvrzená chyba mDNS/Multicast discovery. Problém je s použitím virtuální VMware LAN karty VMXnetX. Místo fyzické LAN karty. Pokud fyzickou kartu v nastavení virtuálního stroje nevidíte, aktivujte na LAN kartě (v ESXi seznamu hardware) I/O bypass. Následně bude možné fyzickou LAN kartu vybrat v instalaci VM HA / Network.

Užitečné

Domovská stránka Home Assistant.
Varnish cache Nginx Proxy Apache server.

ICTIS.CZ