Přeskočit na hlavní obsah

HTTPS a SSL certifikát pro Home Assistant přes Let's Encrypt (DNS-01 challenge)

Home Assistant běží ve výchozím stavu na nešifrovaném HTTP a při přístupu přes prohlížeč vás dřív nebo později uvítá otravné varování o nezabezpečeném spojení. V tomto článku si ukážeme, jak na něj nasadit platný HTTPS/SSL certifikát zdarma pomocí Let's Encrypt, a hlavně se pořádně podíváme na DNS-01 challenge - způsob ověření, díky kterému získáte certifikát i tehdy, když nemáte veřejnou IP adresu nebo nechcete otevírat žádné porty ven do internetu.

Zaměřím se na to, co lidem na jiných návodech nejčastěji nefunguje: uvedu ověřenou a funkční konfiguraci oficiálního Let's Encrypt addonu, protože právě tady chybné návody napáchají nejvíc škody.

Proč vůbec HTTPS pro Home Assistant?

Bez šifrovaného spojení putují vaše přihlašovací údaje i veškerá komunikace mezi prohlížečem a Home Assistantem po síti v čitelné podobě. HTTPS řeší dvě věci:

  • 🔒 Šifrování provozu - nikdo na síti (ani ve vaší domácí, ani po cestě internetem) nevidí, co posíláte.
  • Žádné varování prohlížeče - prohlížeč u platného certifikátu nehlásí "Vaše připojení není soukromé" a mobilní aplikace i doplňky se chovají spolehlivě.

Let's Encrypt je nezisková certifikační autorita, která vydává důvěryhodné SSL certifikáty zdarma a plně automatizovaně. Certifikát má sice krátkou platnost (90 dní), ale o automatickou obnovu se postará addon za vás, takže se o nic nestaráte.

info

Pokud vám jde jen o vzdálený přístup a nechcete se s certifikáty vůbec párat, existují jednodušší cesty - třeba Home Assistant Cloud (Nabu Casa). Podrobné srovnání metod najdete v článku Vzdálený přístup k Home Assistantu. Tento článek jde o úroveň hlouběji a věnuje se přímo certifikátům.

HTTP-01 vs. DNS-01 challenge

Než Let's Encrypt certifikát vydá, musí ověřit, že doménu opravdu vlastníte. Existují dva hlavní způsoby (challenge):

HTTP-01 challenge

  • Let's Encrypt se pokusí spojit s vaší doménou na portu 80.
  • Vyžaduje tedy veřejně dostupný port 80 ze světa.
  • Nefunguje za CGNAT ani bez port forwardingu.
  • Neumí vydat wildcard certifikát.

DNS-01 challenge

  • Ověření probíhá přes TXT DNS záznam, který addon automaticky vytvoří u vašeho DNS providera.
  • Nepotřebuje žádný otevřený port ani veřejnou IP.
  • Funguje i za CGNAT a pro čistě lokální nasazení.
  • Jako jediná umí wildcard certifikát (*.tvedomenka.cz).

Pro drtivou většinu domácích instalací je proto DNS-01 challenge výrazně praktičtější - a proto se na ni v tomto článku zaměříme nejvíc.

Kdy dává DNS-01 challenge smysl

DNS-01 je pro vás ta správná volba, pokud platí aspoň jedno z následujícího:

  • ✅ Jste za CGNAT nebo nemáte veřejnou IP adresu (typicky mobilní/4G/5G internet nebo někteří poskytovatelé).
  • Nejde vám port forwarding nebo ho z principu dělat nechcete.
  • Nechcete otevírat port 80/443 ven do internetu z bezpečnostních důvodů.
  • ✅ Chcete jen lokální přístup s platným certifikátem - tedy Home Assistant dostupný pod vlastní doménou v domácí síti, ale bez varování o self-signed certifikátu.
  • ✅ Chcete wildcard certifikát (*.tvedomenka.cz) pokrývající více služeb najednou - ten jde získat výhradně přes DNS-01.
Lokální přístup s platným certifikátem

Oblíbený scénář: doma běží Home Assistant, chcete k němu přistupovat přes https://ha.tvedomenka.cz bez varování prohlížeče, ale nechcete ho vystavovat do internetu. Stačí certifikát získaný přes DNS-01 a v místním DNS (nebo přes Cloudflare) nechat doménu mířit na lokální IP. Certifikát je platný, prohlížeč spokojený, a přitom nikde neotvíráte žádný port.

Přehled způsobů, jak dostat HTTPS na Home Assistant

Než se vrhneme na konkrétní návod, pojďme si udělat pořádek v možnostech. Cest, jak k HTTPS přijít, je několik a každá se hodí pro trochu jiného člověka.

MetodaUživatelská přívětivostCenaVlastní doménaOtevírání portůSložitost
Home Assistant Cloud (Nabu Casa)Velmi vysoká$6.50 / měsícVelmi nízká
DuckDNS + Let's Encrypt addonStředníZdarma❌ (subdoména DuckDNS)✅ (pro vzdálený přístup)Střední
Let's Encrypt addon (DNS-01)StředníZdarmaStřední
Reverzní proxy (NPM / Traefik / Caddy)StředníZdarmaPodle scénářeVyšší
Cloudflare TunnelVysokáZdarmaStřední

Home Assistant Cloud (Nabu Casa)

Nejjednodušší cesta ke všemu naráz. Za předplatné $6.50 měsíčně dostanete vzdálený přístup, platný certifikát i doménu (https://xxxxx.ui.nabu.casa) plně automaticky - o nic se nestaráte a navíc podpoříte vývoj Home Assistantu.

Zvolte, pokud: chcete mít vše hotové bez technického ladění a nevadí vám platit.

DuckDNS + Let's Encrypt addon

Klasika mezi bezplatnými řešeními. Addon DuckDNS vám dá zdarma subdoménu, udržuje u ní aktuální vaši IP a rovnou vydá i certifikát Let's Encrypt - a to přes DNS-01 challenge (ověření běží přes DuckDNS token, kvůli certifikátu tedy žádný port otevírat nemusíte). Háček je jinde: DuckDNS je typicky cesta ke vzdálenému přístupu a k tomu už otevřený port a port forwarding (typicky 443/8123) potřebujete. Za CGNAT proto vzdálený přístup touto cestou nefunguje - certifikát se sice vydá, ale zvenčí se na Home Assistant nedostanete.

Zvolte, pokud: máte veřejnou IP, nevadí vám port forwarding a stačí vám subdoména DuckDNS.

Let's Encrypt addon s DNS-01 challenge

Hlavní téma tohoto článku. Certifikát získáte přímo na Home Assistant, pod vlastní doménou a bez otevírání jakéhokoli portu - ověření běží přes DNS. Ideální za CGNAT i pro čistě lokální přístup a jako jediná varianta z addonu umí i wildcard.

Zvolte, pokud: chcete vlastní doménu, platný certifikát přímo na HA a nechcete (nebo nemůžete) otevírat porty.

Reverzní proxy (NGINX Proxy Manager / Traefik / Caddy)

Reverzní proxy je samostatná služba, která stojí před Home Assistantem (a klidně i před dalšími službami) a řeší TLS/certifikáty za ně. Klient se připojuje šifrovaně na proxy, ta provoz předává na HA po interní síti.

Sám na svém homelabu používám NGINX Proxy Manager (NPM) a musím říct, že pro víc než jednu službu je to skvělé řešení.

Výhody:

  • Centralizuje certifikáty pro všechny služby, ne jen pro HA (Node-RED, Grafana, Frigate...).
  • ✅ NPM umí Let's Encrypt DNS challenge sám - má vestavěné DNS pluginy včetně Cloudflare, takže wildcard i DNS-01 zvládne bez HA addonu.
  • Odděluje TLS od Home Assistantu - certifikát řešíte na jednom místě.
  • ✅ Snadné přidání dalších služeb a nastavení access listů (omezení přístupu).

Nevýhody:

  • ⚠️ Další komponenta k údržbě - proxy musíte provozovat a aktualizovat.
  • ⚠️ V Home Assistantu je nutné správně nastavit trusted_proxies a use_x_forwarded_for: true, aby HA věděl, že za ním stojí proxy (jinak uvidí špatné klientské IP a přihlášení nemusí fungovat).

Kdy zvolit proxy vs. přímý addon? Pokud řešíte jen Home Assistant a chcete co nejjednodušší nastavení, sáhněte po Let's Encrypt addonu s DNS-01 přímo na HA. Jakmile ale máte víc služeb, víc domén nebo chcete certifikáty a přístup spravovat centrálně, dává mnohem větší smysl reverzní proxy.

Cloudflare Tunnel

Cloudflare Tunnel vytvoří zabezpečený tunel mezi HA a Cloudflare a certifikát řeší Cloudflare za vás - žádné porty, žádné certifikáty na vaší straně. Podrobně ho rozebírám v článku Vzdálený přístup k Home Assistantu.

Praktický návod: Let's Encrypt addon s DNS-01 challenge (Cloudflare)

Teď to hlavní. Ukážeme si nasazení oficiálního Let's Encrypt addonu s DNS-01 challenge, kde jako DNS providera použijeme Cloudflare (nejrozšířenější volba). Postup je pro ostatní providery téměř totožný, liší se jen jméno providera a přihlašovací údaje.

Předpoklady

Budete potřebovat vlastní doménu a její DNS spravované u podporovaného providera. U Cloudflare stačí bezplatný účet a doména přidaná do Cloudflare (DNS servery přesměrované na Cloudflare).

Krok 1: Vytvoření Cloudflare API tokenu

Addon potřebuje oprávnění vytvořit u vašeho DNS ověřovací TXT záznam. U Cloudflare je doporučený způsob jeden scoped API token s minimálními právy:

  1. Přihlaste se do Cloudflare dashboardu a otevřete My Profile → API Tokens.
  2. Klikněte na Create Token a použijte šablonu Edit zone DNS, nebo vytvořte vlastní token.
  3. Nastavte oprávnění přesně na Zone → DNS → Edit.
  4. V Zone Resources omezte token na konkrétní zónu (vaši doménu) - ne na všechny.
  5. Token vytvořte a zkopírujte si ho (zobrazí se jen jednou).
Minimum oprávnění

Token potřebuje pouze oprávnění Zone → DNS → Edit pro danou zónu. Nedávejte mu Full Access ani globální práva - addon víc nepotřebuje a zbytečně byste zvyšovali riziko.

Legacy: globální API klíč

Starší návody používají dvojici cloudflare_email + cloudflare_api_key (globální klíč k celému účtu). Tento způsob je v dokumentaci addonu označen jako "NOT RECOMMENDED" a zmiňuji ho jen pro úplnost - držte se scoped tokenu výše.

Krok 2: Instalace Let's Encrypt addonu

  1. V Home Assistantu přejděte do Nastavení → Doplňky → Obchod s doplňky.
  2. Vyhledejte Let's Encrypt (oficiální addon) a klikněte na Instalovat.
  3. Po instalaci addon zatím nespouštějte - nejprve ho nakonfigurujeme.

Krok 3: Konfigurace addonu (DNS-01)

Otevřete záložku Konfigurace addonu a nastavte ji přesně takto (přepněte editor do YAML režimu):

domains:
- ha.tvedomenka.cz
certfile: fullchain.pem
keyfile: privkey.pem
challenge: dns
dns:
provider: dns-cloudflare
cloudflare_api_token: <scoped-token>
# propagation_seconds: 60 # u pomalejších providerů zvýšit (např. Netcup >= 630)

Na co si dát pozor:

  • challenge: dns přepíná addon do režimu DNS-01 (bez portů).
  • ✅ Název providera musí mít prefix dns- - tedy dns-cloudflare. Bez prefixu addon providera nenajde (viz řešení potíží níže).
  • cloudflare_api_token je scoped token z kroku 1.
  • propagation_seconds je zakomentovaný - u Cloudflare stačí výchozí hodnota. U pomalejších providerů (např. Netcup) ho odkomentujte a zvyšte (u Netcupu klidně na 630 a víc), aby se DNS záznam stihl rozšířit, než Let's Encrypt spustí ověření.
Jiný DNS provider?

Addon podporuje desítky providerů přes knihovnu lego - například dns-route53, dns-hetzner, dns-duckdns, dns-google nebo dns-godaddy. Změníte jen provider: a příslušné přihlašovací údaje (jméno klíčů se u každého providera liší, najdete je v dokumentaci addonu). Prefix dns- platí pro všechny.

Krok 4: Spuštění a kontrola logu

  1. Uložte konfiguraci a addon spusťte.
  2. Otevřete záložku Log. Addon vytvoří u Cloudflare dočasný TXT záznam, počká na jeho rozšíření a poté získá certifikát.
  3. V logu byste měli vidět, že certifikát byl úspěšně vydán a uložen do /ssl/.

Krok 5: Zapojení certifikátu do Home Assistantu

Teď řekneme Home Assistantu, aby vydaný certifikát používal. Otevřete configuration.yaml a přidejte (nebo doplňte) sekci http:

configuration.yaml
http:
ssl_certificate: /ssl/fullchain.pem
ssl_key: /ssl/privkey.pem
Časté omyly z jiných návodů

Na internetu koluje spousta chybných konfigurací. Držte se přesně toho, co je výše:

  • ❌ Klíč ssl_redirect neexistuje - nepoužívejte ho.
  • trusted_proxies a use_x_forwarded_for sem nepatří - ty se týkají výhradně scénáře s reverzní proxy, ne přímého certifikátu na HA.
  • hass: true ani nginx: true nejsou volby Let's Encrypt addonu - nikde je neuvádějte.

Krok 6: Restart Home Assistantu

Uložte configuration.yaml a Home Assistant restartujte (Nastavení → Systém → Restartovat). Po startu už bude HA dostupný přes https://ha.tvedomenka.cz s platným certifikátem.

Varianta přes NGINX Proxy Manager

Pokud jdete cestou reverzní proxy, mění se rozdělení rolí. Certifikát v tomto scénáři neřeší HA addon, ale NGINX Proxy Manager - ten si přes vestavěný Let's Encrypt (klidně také přes DNS challenge s Cloudflare pluginem) certifikát vyžádá a obnovuje sám.

Princip je následující:

  • Home Assistant běží bez SSL na portu 8123 (sekci http: s ssl_certificate/ssl_key tedy vynecháte).
  • NPM stojí před HA, přijímá HTTPS provoz na portu 443, terminuje TLS a předává požadavky na http://<ip-home-assistantu>:8123.
  • V Home Assistantu je potřeba nastavit, že za ním stojí proxy, jinak by HA viděl všechny požadavky, jako by přicházely z IP proxy:
configuration.yaml
http:
use_x_forwarded_for: true
trusted_proxies:
- <ip-adresa-nginx-proxy-manageru>
tip

Detailní klik-po-kliku nastavení NGINX Proxy Manageru je téma na samostatný článek (chystám ho). Tady jde hlavně o princip: certifikát řeší proxy, HA běží bez SSL a jen mu řeknete, komu má věřit přes trusted_proxies. Do trusted_proxies doplňte IP adresu, ze které k HA proxy přistupuje.

Automatická obnova a ověření

Certifikáty Let's Encrypt platí 90 dní, ale obnova je automatická - addon certifikát obnoví zhruba 30 dní před expirací. Nemusíte nic dělat, jen mít addon funkční.

Jak ověřit, že je vše v pořádku:

  • 🔍 V prohlížeči klikněte na ikonku zámku v adresním řádku a zobrazte detail certifikátu - uvidíte vydavatele (Let's Encrypt) i datum platnosti.
  • 📋 Zkontrolujte Log addonu - po obnově tam najdete záznam o vydání nového certifikátu.
  • ⏱️ Pokud vás zajímá přesná expirace z příkazové řádky, můžete použít openssl proti vaší doméně a portu 443.

Řešení potíží

Chyba "Selected DNS Provider: null" Nejčastější příčina je špatný název providera - typicky chybějící prefix dns-. Musí být dns-cloudflare, ne cloudflare. Rozhodně to neznamená chybějící plugin - addon má providery zabudované přes lego.

Certifikát se nevydá nebo neobnoví Zkontrolujte oprávnění API tokenu. U Cloudflare musí mít token oprávnění Zone → DNS → Edit pro danou zónu. Bez práva zapisovat DNS záznamy addon nedokáže vytvořit ověřovací TXT záznam.

Ověření vyprší / timeout u pomalejšího providera Někteří DNS provideři rozšiřují TXT záznamy pomaleji. Odkomentujte a zvyšte propagation_seconds (např. u Netcupu na 630 i více), ať Let's Encrypt počká, než se záznam rozšíří.

Prohlížeč pořád hlásí nedůvěryhodný certifikát Ověřte, že jste po vydání certifikátu restartovali Home Assistant a že v configuration.yaml míří ssl_certificate/ssl_key na správné soubory v /ssl/.

Související články

Zhodnocení

Získat platný HTTPS certifikát pro Home Assistant je dnes zdarma a hlavně udržitelné bez ruční práce - jednou nastavíte a Let's Encrypt se stará o zbytek. DNS-01 challenge je podle mě pro domácí použití nejuniverzálnější volba: funguje i za CGNAT, nepotřebuje otevřený port a jako jediná umí wildcard.

Pokud řešíte jen Home Assistant, sáhněte po Let's Encrypt addonu s DNS-01 přímo na HA - je to nejpřímější cesta. Jakmile ale máte víc služeb, dává větší smysl reverzní proxy typu NGINX Proxy Manager, kterou sám používám a která vám certifikáty i přístup sjednotí na jedno místo. A když se s certifikáty párat vůbec nechcete, tady je Home Assistant Cloud pořád nejpohodlnější volbou. 💚

Líbí se vám tento článek?

Vaše podpora pomáhá tvořit nejlepší české návody o chytré domácnosti!

Podpořit jednorázově

Komentáře