blog.vyoralek.cz

Centrum chytré domácnosti – HomeAssistant (Hass.io) – 11 část – vzdálený přístup do Hass.io

Jak nastavit vzdálený přístup do Hass.io z Internetu pomocí šifrovaného SSL připojení.

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:

  1. Volba domény
  2. DDNS – dynamické DNS
  3. 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.

Vytvoření účtu pro Dynu.com
Vytvoření účtu pro Dynu.com

2.2 Vytvoření DDNS služby

Po přihlášení klikneme na ikonku s modrou vlajkou – DDNS Service.

Ovládací panel účtu
Ovládací panel Dynu.com účtu

.. 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énouOption 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, kde vyoralek odpovídá části hostname a myddns.rocks je jedna z domén se seznamu Top Level.
  • nebo službu Dynamického DNS druhého řádu po naší doménouOption 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
Volba typu domény dynamického DNS
Volba typu domény dynamického DNS

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:

  1. 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.
  2. získávat SSL certifikáty a šifrovat provoz směrem k internetu
Schéma Nginx proxy manažeru
Schéma Nginx proxy manažeru

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.

Nginx proxy manager
Nginx Proxy Manažer jako Add-on Hass.io

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:

Přihlašovací obrazovka Nginx Proxy Manager
Přihlašovací obrazovka Nginx Proxy Manager

a vyplníme přihlašovací údaje: admin@example.com / changeme. Bezprostředně po přihlášení budeme vyzvání k změně přihlašovácích údajů a poté i hesla.

Nastavení účtu pro Nginx Proxy Manager
Nastavení účtu Nginx Proxy Manager

3.2 Nastavení proxy

Veškeré proxy se nastavují v záložce Hosts a přes položky Proxy Hosts.

Nastavení proxy - hlavní obrazovka
Nastavení proxy – hlavní obrazovka

Nejrpve si vyzkoušíme variantu bez SSL, tj. zmáčkneme Add Proxy Host a nastavíme pouze Details záložku dle obrázku:

Nastavení proxy - detaily položky
Nastavení proxy – detaily položky

Na routeru si nastavíme přesměrování pro port 80 na počítač, kde běží nginx proxy a stejný port 80.

Nastavení přesměrování na routeru
Nastavení přesměrování routeru

Nyní už můžeme v prohlížeči zkusit zadat novou adresu, tj. v našem příkladu vyoralek.myddns.rocks.

Přihlášení bez SSL
Přihlášení do HA bez SSL (http)

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.

Nastavení proxy
Nastavení proxy – vytvoření nového SSL certifikátu
Nastavení proxy
Nastavení proxy – odeslání požadavku na SSL certifikát

Vrátíme se do nastavení routeru a přidáme přesměrování pro port 443.

Nastavení přesměrování na routeru
Nastavení přesměrování na routeru

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.

Přihlášení s SSL
Přihlašení do HA s SSL

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.

Addon DuckDNS
DuckDNS – add-on Hass.io

Kompletí série o HomeAsistentovi obsahuje následující články:

  • 1. část – Představení HomeAsisstent – tento článek
  • 2. částIntegrace Sonoff s firmware Sonoff-Tasmota
  • 3. částIntegrace Homekit
  • 4. částIntegrace Sonoff s firmware Sonoff-Tasmota – 2 část
  • 5. částIntegrace s Wemos D1 a senzory teploty
  • 6. částIntegrace Sonoff s firmware ESPHome
  • 7. částIntegrace Sonoff POW s firmware ESPHome
  • 8. částIntegrace LED Magic Home s firmware ESPHome
  • 9. částIntegrace 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

3 komentáře

Napsat komentář

Tato stránka používá Akismet k omezení spamu. Podívejte se, jak vaše data z komentářů zpracováváme..

  • 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 blogerům se to líbí: