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.
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.
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.
| Metoda | Uživatelská přívětivost | Cena | Vlastní doména | Otevírání portů | Složitost |
|---|---|---|---|---|---|
| Home Assistant Cloud (Nabu Casa) | Velmi vysoká | $6.50 / měsíc | ❌ | ❌ | Velmi nízká |
| DuckDNS + Let's Encrypt addon | Střední | Zdarma | ❌ (subdoména DuckDNS) | ✅ (pro vzdálený přístup) | Střední |
| Let's Encrypt addon (DNS-01) | Střední | Zdarma | ✅ | ❌ | Střední |
| Reverzní proxy (NPM / Traefik / Caddy) | Střední | Zdarma | ✅ | Podle scénáře | Vyšší |
| Cloudflare Tunnel | Vysoká | Zdarma | ✅ | ❌ | Stř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_proxiesause_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.
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:
- Přihlaste se do Cloudflare dashboardu a otevřete My Profile → API Tokens.
- Klikněte na Create Token a použijte šablonu Edit zone DNS, nebo vytvořte vlastní token.
- Nastavte oprávnění přesně na Zone → DNS → Edit.
- V Zone Resources omezte token na konkrétní zónu (vaši doménu) - ne na všechny.
- Token vytvořte a zkopírujte si ho (zobrazí se jen jednou).
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.
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
- V Home Assistantu přejděte do Nastavení → Doplňky → Obchod s doplňky.
- Vyhledejte Let's Encrypt (oficiální addon) a klikněte na Instalovat.
- 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: dnspřepíná addon do režimu DNS-01 (bez portů). - ✅ Název providera musí mít prefix
dns-- tedydns-cloudflare. Bez prefixu addon providera nenajde (viz řešení potíží níže). - ✅
cloudflare_api_tokenje scoped token z kroku 1. - ✅
propagation_secondsje 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í.
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
- Uložte konfiguraci a addon spusťte.
- 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.
- 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:
http:
ssl_certificate: /ssl/fullchain.pem
ssl_key: /ssl/privkey.pem
Na internetu koluje spousta chybných konfigurací. Držte se přesně toho, co je výše:
- ❌ Klíč
ssl_redirectneexistuje - nepoužívejte ho. - ❌
trusted_proxiesause_x_forwarded_forsem nepatří - ty se týkají výhradně scénáře s reverzní proxy, ne přímého certifikátu na HA. - ❌
hass: trueaninginx: truenejsou 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:sssl_certificate/ssl_keytedy 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:
http:
use_x_forwarded_for: true
trusted_proxies:
- <ip-adresa-nginx-proxy-manageru>
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
opensslproti 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
- Vzdálený přístup k Home Assistantu - srovnání Home Assistant Cloud, Cloudflare Tunnel a veřejné IP
- Amazon Alexa - vyžaduje veřejný přístup na portu 443 s platným certifikátem
- Terminal & SSH - správa Home Assistantu přes příkazový řádek
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ě