Jednou z nejužitenějších vlastností, které můžeme pro HomeAssistent nastavit je vzdálený přístup, tak abychom mohli mít přehled a ovládat svou domácnost v podstatě odkudkoliv. Zároveň to ale znamená určité bezpečnostní riziko.
V dnešním článku si ukážeme krok za krokem jak tuto funkcionalitu nastavit a to hned ve dvou možnostech – použití domény třetího řádu, kterou nevlastníme tak i v případě využití naší vlastní domény.
Tři kroky k vzdálenému přístupu do Hass.io z Internetu:
- Volba domény
- DDNS – dynamické DNS
- Hass.io Addon – Nginx Proxy Manager
1. Volba domény
První věc kterou potřebujeme, je nějaká internetová adresa pro vzdálený přístup. Možnosti máme v základě dvě:
1.1 Hass.io na vlastní doméně
Bude nás stát nějaký roční poplatek za doménu, ale zároveň zjednodušuje adresu.
Jedná se o tzv. doménu druhého řádu, tj. text v adrese před tečkou, tj. například tento blog má doménu 2.řádu vyoralek.cz
1.2 Doména třetího řádu, kterou nevlastníme
Tato možnost je zpravidla součástí služby dynamického DNS a bývá velice často zdarma. Příkladem domény třetího řádu může být například adresa vyoralek.myddns.rocks
– níže si ukážeme jak ji získat.
?Pokud ještě vlastní doménu nevlastníte, tak zejména pro prvotní odkoušení se není potřeba bát využít i domény třetího řádu. Z dlouhodobého hlediska pak zřejmě budeme tíhnout spíše k variantě provozování Hass.io na doméně vlastní.
2. DDNS – dynamické DNS
Pokud nemáme přidělenou veřejnou pevnou IP adresu od našeho poskytovatele připojení k Internetu, budeme potřebovat rozchodit tzv. dynamické DNS ? pokud IP adresu máte pevnou, můžete tuto kapitolu přeskočit.
Jedná se o službu, která na jedné straně zpravidla běží uvnitř vaší lokální sítě a je schopna zjistit naší aktuální veřejnou IP adresu, kterou pak je schopna aktualizovat přímo ve veřejných DNS záznamech naší domény.
Firem poskytující dynamické DNS existuje více. Já vám dnes představím jednu z nich – dynu.com, která má jak variantu zdarma tak i rozšířenou placenou verzi.
? Rozdíl mezi placených a účtem zdarma na dynu.com, je pro naše účely zejména v počtu domén a počtu DNS záznamů pod jednou doménou. Na úplně základní nastavení si vystačíte s verzi zdarma. Pokud však budete svou doménu používat naplno pak bude potřeba využít verzi placenou, která však není nikterak drahá – cca. 10USD za rok.
2.1 Registrace uživatelského účtu
Než začneme s nastavením, je potřeba si vytvořít na dynu.com účet. To můžeme udělat buď kliknutím na Create Account v horním pravém rohu a nebo na tomto odkazu.
2.2 Vytvoření DDNS služby
Po přihlášení klikneme na ikonku s modrou vlajkou – DDNS Service.
.. a kikneme na ikonku vpravo Add
Nyní bychom měli vidět dvě možnosti, které korespondují s první kapitolou – tj. můžeme buď:
- vytvořit službu Dynamického DNS třetího řádu pod „cizí“ doménou – Option 1: Use Our Domain Name – adresa pak bude obsahovat náš vlastní prefix kombinovaný s jednou z dostupných domén, tj. například já si vytvořil záznam
vyoralek.myddns.rocks
, kdevyoralek
odpovídá části hostname amyddns.rocks
je jedna z domén se seznamu Top Level. - nebo službu Dynamického DNS druhého řádu po naší doménou – Option 2: User Your Domain Name. Dále budu rozepisovat pouze první možnost, nicméně takhle druhá se liší jen v jedné věci a to, že budeme potřebovat převést veřejné DNS záznamy po služby dynu.com
Pro .cz domény můžeme použít již definovaný NSSET s názvem DYNU
2.3 Instalace a konfigurace služby ddclient
Jakmile máme aktivní záznam v Dynamic DNS na dynu.com je potřeba zajistit propopisování naší veřejné IP adresy do DNS záznamů na dynu.com.
K tomu budeme potřebovat doinstalovat na náš lokální počítač – ideálně na tentýž kde máme Hass.io – službu ddclient.
V případě Linux distribucí Ubuntu/Armbian/Debian je instalace jednoduchá – stačí zadat příkaz:
apt-get install ddclient
a po instalaci bude potřeba upravit konfigurační soubor, který najdeme v /etc/ddclient.conf
# Configuration file for ddclient generated by debconf
#
# /etc/ddclient.conf
daemon=60
syslog=yes
protocol=dyndns2
use=web, web=checkip.dynu.com/, web-skip='Current IP Address: '
server=api.dynu.com
ssl=yes
login=<NAHRADTE_UZIVATELSKYM_JMENEM_PRO_DYNU_COM>
password=<NAHRARTE_UZIVATELSKYM_HESLEM_PRO_DYNU_COM>
vyoralek.myddns.rocks
Pokud máme vlastní doménu a chceme aktualizovat DNS pro záznam třetího řádku pak řádek v konfiguraci bude vypadat takto:
<VASE_DOMENA>&alias=<TRETI_RAD>
#tj. např. pro hassio.vyoralek.cz by to bylo:
vyoralek.cz&alias=hassio
V případě, že jsme použili SSL komunikaci bude potřeba doinstalovat ještě pár dalších balíčků:
apt-get install libio-socket-ssl-perl
Restartujeme pomocí service ddclient restart
a DNS záznam by se měl aktualizovat automaticky každých 5 minut v případě změny naší veřejné IP adresy.
Pokud si nejsme jistí konfigurací, můžeme klienta spustit v debug módu pomocí:
ddclient -daemon=0 -debug -verbose -noquiet
3. Hass.io Addon – Nginx Proxy Manager
Instalace Nginx Proxy Manageru nám přináší dvě základní funkcionality:
- možnost provozovat proxy (bránu) na portu 80, resp. 443 (https) pro více služeb běžících na různých portech podle domény.
- získávat SSL certifikáty a šifrovat provoz směrem k internetu
Dle schématu výše si pak můžeme představit, že na lokálním počítači máme dvě služby – jednu na portu xxx (např. hassio) a druhou na portu yyyy (např. Ubiquiti Controller).
Zároveň máme dvě domény xxx.cz a yyy.cz a chceme, že pokud kdekoliv na světe zadáme do prohlížeče adresu xxx.cz abychom se dostali na hassio a pokud yyy.cz tak na ubiquiti. Pokud bychom nepoužili proxy pak bychom museli služby i z internetu odlišovat portem, jelikož na úrovni routeru můžeme jeden port přesměrovat jen na jeden počítač. Pokud však máme proxy tak router nastavíme na tuto proxy a samotné přesměrování dle domény už nastavíme na proxy.
Dost bylo teorie jdeme si to ukázat podrobnosti na našem příkladu domény a hassia.
3.1 Instalace a nastavení addonu
Přihlásíme se do HomeAssistenta a najdeme si položku Hass.io -> Add-on store -> Community Hass.io Add-ons -> Nginx Proxy Manager a addon nainstalujeme.
Po instalaci není potřeba přidávat nebo měnit cokoliv konfiguraci a tak můžeme rovnou addon spustit. Po kliknutí na Open Web UI bychom měli být přesměrování na port 80 a vidět následující obrazovku:
a vyplníme přihlašovací údaje: [email protected]
/ changeme
. Bezprostředně po přihlášení budeme vyzvání k změně přihlašovácích údajů a poté i hesla.
3.2 Nastavení proxy
Veškeré proxy se nastavují v záložce Hosts a přes položky Proxy Hosts.
Nejrpve si vyzkoušíme variantu bez SSL, tj. zmáčkneme Add Proxy Host a nastavíme pouze Details záložku dle obrázku:
Na routeru si nastavíme přesměrování pro port 80 na počítač, kde běží nginx proxy a stejný port 80.
Nyní už můžeme v prohlížeči zkusit zadat novou adresu, tj. v našem příkladu vyoralek.myddns.rocks
.
Pokud nám naskočila obrazovka s přihlášením do Home Assistenta tak už máme napůl vyhráno.
Můžeme se tedy vrhnout na konfiguraci včetně SSL. Otevřeme si konfiguraci proxy z předchozí části a přepneme se do záložky SSL, kde v sekci SSL Certificate vybereme volbu Request a new SSL Certificate.
Vrátíme se do nastavení routeru a přidáme přesměrování pro port 443.
Nyní můžeme zkusit refreshnout stránku HomeAssistenta v prohlížeči a automaticky bychom měli být přesměrování na https.
Alternativa pro doménu třetího řádu
Pokud neplánujete používat více domén/subdomén můžete použít řešení bez Nginx Proxy Manageru a pak nejjednodušší variantou je využití služby DuckDNS, který má plugin přímo v Hassio Add-on storu.
Plugin obsahuje také generování SSL certifikátu, takže je takové all-in-one řešení, které má však omezení, že lze použít pouze pro doménu třetího řádu od DuckDNS a nelze použít více domén najednou.
Na routeru je pak potřeba nastavit přesměrování na DuckDNS addon, tj. velice podobně jako pro Nginx Proxy Manager.
Kompletní série o HomeAsistantovi obsahuje následující články:
- 1. část – Instalace HomeAsisstent
- 2. část –
Integrace Sonoff s firmware Sonoff-Tasmota - 3. část –
Integrace Homekit - 4. část –
Integrace Sonoff s firmware Sonoff-Tasmota – 2 část - 5. část –
Integrace s Wemos D1 asenzory teploty - 6. část –
Integrace Sonoff s firmware ESPHome - 7. část –
Integrace Sonoff POW s firmware ESPHome - 8. část –
Integrace LED Magic Home s firmware ESPHome - 9. část –
Integrace Xiaomi Mijia a Aqara - 10. část – Integrace vlastní Zigbee gateway
- 11. část – Vzdálený přístup do Hass.io z Internetu
- 12. část – zobrazení senzorových data pomocí InfluxDB a Grafany
- 13. část – Hass.io Add-ony, které používám
- 14. část – Integrace Xiaomi Mi Flora
- 15. část – Integrace Withings (Nokia)
- 16. část – náhrada SQLite databází MySQL
- 17. část – HACS Add-ony – instalace a konfigurace
- 18. část – Integrace Sonoff s firmware eWeLink
- 19. část – nová integrace Sonoff pro HA
- 20. část – měření spotřeby
- 21. část – automatické zálohy a obnovení ze zálohy
- 22. část – napojení hlasového asistenta Amazon Alexa
- 23. část – automatické zálohy na síťový sdílení disk (Samba)
- 24. část – Bluetooth zařízení a ESPHome proxy
- 25. část – nefunkční aktualizace HomeAssistanta
- 26. část – integrace SwitchBot produktů
- 27. část – integrace fotovoltaiky Growatt
Chapu to dobre, ze to resi jen problem dynamicke verejne IP, ale neni to nic jak vyresit pristup bez verejne IP ze?
No já nevím, ale četl jsem ten návod celý a už na začátku jsem se dověděl toto:
„Pokud nemáme přidělenou veřejnou pevnou IP adresu od našeho poskytovatele připojení k Internetu, budeme potřebovat rozchodit tzv. dynamické DNS ? pokud IP adresu máte pevnou, můžete tuto kapitolu přeskočit.“
Obecně nějakou veřejnou IP adresu mít budete. Otázka je, zda bude na úrovni vašeho routeru a nebo o úroveň výše, kdy poskytovatel připojení routuje veřejný trafic už na jeho úrovni. Pak návod s největší pravděpodobností fungovat nebude, jelikož byste musel napsal provideru o nastavení přesměrování portů na vnitřní adresy o kterém píšu u routeru. Na druhou stranu je zde ještě jedna možnost použití Cloudu od HomeAssistenta, který by myslím mohlo fungovat i bez veřejné IP. Nicméně nemám zatím vyzkoušeno a jedná se o placenou službu.
Děkuji za skvělé články. Sám jsem případ, kdy poskytovatel má pod veřejnou IP adresou své klienty a DDns bohužel nefunguje. Většinou za veřejnou a statickou IP adresu chce poskytovatel příplatek. Teď otázka, jestli se tedy peníze nevyplatí dát za Cloud Home Asistent. Co jsem četl, mělo by to být 5$ měsíčně. Prozatím zkouším variantu měsíc zdarma a naprostá spokojenost.
Záleží kolik si za pevnou IP adresu účtuje Tvůj provider.
Pokud to bude takový zloděj jako O2 s cenou 245,- Kč/měs, pak Cloud HA je jasná volba.
Pokud, ale budeš u poskytovatele, který chce za pevnou IP adresu srandovních 44,- Kč/měs, pak je volba taky jasná – pevná IP a vše mít pěkně doma.
A svou pevnou IP adresu ještě dál využiješ na cokoliv.
Je tu ještě jedna zajímavější možnost TOR
https://www.home-assistant.io/blog/2017/11/12/tor/
https://www.home-assistant.io/docs/ecosystem/tor/
přístup i přes NAT, běží mi měsíc bez problémů
Jakým způsobem je třeba nastavit přesměrování portu pro DuckDNS? Setkal jsem se s přesměrováním 8123 na 8123, 443 na 8123 s IP, kde běží HA. Ani jeden způsob mi nefunguje 🙁
Na jedné takové pomocné instanci HA používám DuckDNS a mám tam zřízenou veřejnou IP adresu.
Přesměrovávám 443 na 8123 s IP kde běží HA.
V configuration.yaml mám ještě tento zápis:
http:
base_url: https://mojejmeno.duckdns.org
ssl_certificate: /ssl/fullchain.pem
ssl_key: /ssl/privkey.pem
A takto se k tomuto HA připojuji adresou https://mojejmeno.duckdns.org
Důležité je, aspoň u mně to tak je vždy, poprvé zadat kompletní adresu, čili:
https://mojejmeno.duckns.org – pozor na https!
Pak už stačí zadávat pouze mojejmeno.duckdns.org
Po istalaci Nginx proxy manažeru verze 0.5 nejde spustit.
V návodu autora čtu, že vyžaduje MarinaDB.
Nainstaloval jsem a zprovoznil, ale stále nejde spustit.
Neví co s tím.
V HomeAssistentovi a sekci s addony je potřeba se podívat do toho pro Nginx Proxy Manager a v záložce log by mělo být vidět co je špatně, resp. proč to nejde spustit.
Nginx Proxy Manager v záložce log není nic, žádný záznam.V Dockeru Synology NAS není addon vidět aby se dál spustit. V HomeAssistentovi a sekci s addony pro Nginx Proxy Manager je nainstalovaný a po stisku start jen blikne a nespustí se.
Oh, tak to bude skutečně asi někdy úplně na začátku. Z nějakého důvodu se zřejmě vůbec nespustí Docker container s addonem, ale divný, že říkáte že ho ani v seznamu nevidíte. Obávám se, že vám takhle neporadím, jelikož Synology s Dockerem nemám a netuším takhle na dálku co by tam mohlo být špatně. Ale třeba se najde někdo s podobnou konfigurací. Je to taková zoufalost trochu, ale ještě mě napadá kouknout se přes Addon Portainer, ale nevím jeslti vám to přinese nějaké nové informace.
Jen bych dodal, že je k takovému řešení třeba modemu/routeru, který podporuje NAT loopback alias Hairpin mode, což defacto žádný z těch „obyčejných/standardních“ prostě nemá, myslím, že by si spousta lidí ušetřila x hodin testování a googlu pro řešení, stejně jako já.
momentálně je nutné ke spuštění Nginx Proxy Manager nainstalovat i addon MariaDB
Dostal jsem se skoro do cíle, ale když chci uložit nastavení SSL tak mi vyskočí chyba Internal Error, nejaká rada? díky
Podíval bych se do logu addonu jestli jsou tam nějaké detaily
Zdravím, mám stejný problém. Tady je log (mail a doménu jsem si teď přepsal, aby nebylo viditelné):
Error: Command failed: /usr/bin/certbot certonly –non-interactive –config „/etc/letsencrypt.ini“ –cert-name „npm-20“ –agree-tos –email „[email protected]“ –preferred-challenges „dns,http“ –domains „xxx.xxxx.cz“
Saving debug log to /data/logs/letsencrypt/letsencrypt.log
Plugins selected: Authenticator webroot, Installer None
Performing the following challenges:
http-01 challenge for xxx.xxxx.cz
Using the webroot path /data/letsencrypt-acme-challenge for all unmatched domains.
Waiting for verification…
Challenge failed for domain xxx.xxxx.cz
http-01 challenge for xxx.xxxx.cz
Cleaning up challenges
Some challenges have failed.
at ChildProcess.exithandler (child_process.js:308:12)
at ChildProcess.emit (events.js:315:20)
at maybeClose (internal/child_process.js:1048:16)
at Process.ChildProcess._handle.onexit (internal/child_process.js:288:5)