Home Assistant: DuckDNS en SSL🌐

In deze tutorial gaan we onze Home Assistant toegankelijk maken van buiten af (dus van eender waar op de wereld) en dit op een veilige manier. Ik heb op Youtube hier al eens een video over gemaakt, maar dat is intussen niet helemaal meer up-to-date, dus gaan we hier nog eens een artikel over maken (en steeds aanpassen wat er in de toekomst nog zal veranderen).

De bedoeling is om onze Home Assistant bereikbaar te maken buiten je netwerk. Hiervoor gebruiken we gebruik maken van enkele add-ons.

Voorbereidingen

We gaan er van uit dat je voor deze tutorial het volgende reeds gedaan hebt:

  • Installatie van Home Assistant (de vroegere Hass.io, waar je add-ons in kunt installeren ofwel de Home Assistant Supervised) – Vereist
  • Je Home Assistant kan best werken met een vast (lokaal) IP adres – Vereist
  • Toegang tot de configuratie bestandan van je Home Assistant (Dit kan via de Samba add-on of via de File editor add-on) – Vereist
  • De log-in gegevens van je router.

Bij een nieuwe installatie is de Home Assistant webinterface bereikbaar op http://homeassistant.local:8123 (Bij een oudere installatie kan dit nog http://hassio.local:8123 zijn) of via het ip adres: http://192.168.0.10:8123 (dit ip adres is afhankelijk van je eigen netwerk en kan dus anders zijn).

Vast IP adres voor je Home Assistant

Door een van de recentere updates van de Supervisor (ik gok 245 of 246) is het mogelijk om eindelijk een vast IP adres toe te wijzen via de webinterface 🥳. Het was natuurlijk al langer beschikbaar via de console, maar Home Assistant heeft weer een goede stap gezet in het gebruiksvriendelijker te maken van hun product voor iedereen 😉.

Van zodra je de installatiewizard hebt doorlopen, kan je in het menu naar het item Supervisor gaan, en bovenaan kies je het tabblad System. Naast de vertrouwde blokken met info over de Supervisor en de logs, is er dus sinds kort een extra blok, waar je dus via de interface de hostname en het IP adres van je Home Assistant kan instellen.

Standaard zal hier het IP staan dat je Home Assistant van je router heeft gekregen. Als je op “change” klikt, krijg je een pop-up waar je dus een static (vast) ip kan gaan instellen. In dit voorbeeld stel ik 192.168.0.10 in als IP adres en klik daarna op de update knop.

Je zal merken dat de Home Assistant pagina niet meer verder doet en ook niet meer zal reageren. Dit komt omdat die nu op het nieuw ingestelde IP adres zit. Gebruik dus nu je nieuwe IP adres om terug naar je Home Assistant te gaan: http://192.168.0.10:8123

DuckDNS add-on 🦆 met let’s encrypt 🔑

De DuckDNS add-on zorgt er voor dat je WAN (extern IP adres van je internetverbinding) automatisch geupdate zal worden naar een duckdns.org domein die je aanmaakt. Dit is vooral handig en aangeraden als je internet provider je geen vast WAN IP adres geeft. Dit is meestal het geval bij internet abonnement voor thuis gebruik. Na het aanmaken van een account bij DuckDNS kan je een subdomein aanmaken zoals mijnhomeassistant.duckdns.org en de add-on gaat je WAN IP om de ingestelde tijd synchroniseren.

Een ander voordeel van deze add-on is dat deze automatisch ook de nodige SSL certificaten gaat aanvragen bij let’s encrypt en dit is volledig gratis. Deze certificaten zijn telkens 3 maanden geldig, maar worden steeds tijdig vernieuwd door de add-on.

De configuratie van de duckdns add-on is redelijk eenvoudig. Je moet zoals je kan zien in onderstaand voorbeeld je duckdns token, je domein invullen en je akkoord geven over de let’s encrypt voorwaarden zodat hij ook de certificaten gaan aanvragen:

lets_encrypt:
  accept_terms: true
  certfile: fullchain.pem
  keyfile: privkey.pem
token: sdfj-2131023-dslfjsd-12321
domains:
  - mijnhomeassistant.duckdns.org
aliases: []
seconds: 300

De volledige uitleg van de DuckDNS add-on kan je hier vinden. Na het saven van deze config, kan je de add-on starten – of herstarten als je hem al had laten starten 😁. Als je in het tab logs gaat kijken kan je zien dat hij het ip adres gaat updaten indien nodig en ook de SSL certificaten aanvragen.
Info: Voor deze stap is het nog niet nodig om een poort open te zetten op je router, de let’s encrypt challenge gebeurd via DNS, en niet via http.

Je hebt nu dus al je benodigde certificaten voor je https verbinding en je zal via je duckdns domein altijd op het juiste installatie terecht komen. Maar momenteel is je Home Assistant nog niet toegankelijk van buitenaf en werkt hij op je lokaal netwerk nog steeds via de standaard poort 8123 via http verkeer en nog niet beveiligd.

Als we nu poort 8123 op onze router zouden open zetten naar het IP adres van onze Home Assistant, kan je – als alles goed is – van eender waar verbinden met je Home Assistant via http://mijnhomeassistant.duckdns.org:8123, maar dit is niet veilig om zo te gebruiken, aangezien dit over http gaat en dus geen beveiligde verbinding is!

NGINX SSL Proxy

De volgende add-on die we gaan installeren is de NGINX Home Assistant SSL Proxy add-on. Deze zal er voor zorgen dat de Home Assistant gaat werken via een beveiligde verbinding op https met de gegenereerde certificaten uit de DuckDNS add-on via een proxy server. De installatie en configuratie hiervan is ook vrij eenvoudig, je moet hier enkel je duckdns domein hier aanpassen, en je kan de add-on starten:

domain: mijnhomeassistant.duckdns.org
certfile: fullchain.pem
keyfile: privkey.pem
hsts: "max-age=31536000; includeSubDomains"
customize:
  active: false
  default: "nginx_proxy_default*.conf"
  servers: "nginx_proxy/*.conf"
cloudflare: false

De overige opties moet je niet veranderen, maar als je hier meer info over wil, kan je de hele uitleg hier vinden.

TIP: Deze add-on is heel eenvoudig in gebruik en doet verder alle configuratie zelf zodat je dit meer hoeft te doen. Wil je echter meer controle of heb je meerdere website’s of applicaties op je netwerk draaien die je wil toegankelijk wil maken van buitenaf en ook voorzien van Let’s encrypt certicicaten? Gebruik dan de Nginx Proxy Manager add-on (binnenkort komt hier ook een tutorial over).

Port-forwarding

In deze stap gaan we poort 443 openen in je router. Al het verkeer dat dan binnenkomt op je router op poort 443 zal naar je Home Assistant gestuurd worden over een beveiligde verbinding.

Hoe dit precies moet ingesteld worden is natuurlijk afhankelijk van je router die je hebt, maar in principe moet je dus het volgende instellen (Dit is een voorbeeld van op een Unifi controller):

Van zodra deze instelling is toegepast is op je router is je Home Assistant vanaf nu bereikbaar van buitenaf via https://mijnhomeassistant.duckdns.org

Opmerking: Je hoeft hier in de URL geen :443 toe te voegen, aangezien https verkeer standaard altijd via deze poort loopt en dus niet moet toegevoegd worden hier.
In uitzonderlijke gevallen kan het gebeuren dat als je dit test op je eigen netwerk, dit niet zal werken. Probeer dan zeker eens te verbinden via je mobile data connectie op je smartphone of op een ander wifi netwerk.

config.yaml aanpassen

Ook al zal je wel kunnen verbinden met je Home Assistant via je (duckdns) domein van buiten af, je moet toch nog even een aanpassing doen aan je config file. Deze stap is zeker vereist als je wil gebruik maken van een connectie met andere externe services zoals Spotify en Google.

In je config staat al een blok met de naam ‘http’ die in commentaar staat. Pas deze blok aan en verwijder het # symbool om de lijn actief te maken en vul je eigen domein hier in zoals hieronder:

Vergeet natuurlijk de wijzigen niet op te slaan, en herstart dan je volledige Home Assistant.

Update: Sinds versie 0.110 is het niet meer nodig om hiervoor een aanpassing te doen in je config.yaml bestand, omdat de optie base_url niet meer in gebruik is en vervangen door external_url en internal_url, maar je dat dit nu ook via de webinterface instellen.

Als je al Home Assistant al had draaien, is deze instelling automatisch geupdate en heb je dit al verwijderd uit je config.yaml. Als het om een nieuwe installatie gaat, kan je deze aanpassen bij “Instellingen” en dan bij “Algemeen”.

Als je deze twee opties niet ziet staan, moet je de geavanceerde modus activeren. Dit doe je door onderaan op je profiel te klikken, en daar de optie “Geavanceerde modus” aan te zetten.

4 gedachten over “Home Assistant: DuckDNS en SSL🌐

  1. Thijs Beantwoorden

    Dank voor de update! Ik probeerde het via je youtubefilmpjes, maar dat eindigde dus steeds in tranen, tot ik de comments las.

  2. Robert Prins Beantwoorden

    Mijn dank voor deze aanvulling op je tutorial. Alleen de http aanwijzing voor config.yaml is al weer achterhaald door een verandering in homeassistant(ik heb versie 0.114.4). Er is geen http spec meer in commentaar vorm, die je actief kan maken. Simpel toevoegen van jouw regel bleek voldoende om het te laten werken. Fijn om zo een duidelijke handleiding in het Nederlands op internet aan te treffen!

    • Sam Bericht auteurBeantwoorden

      Bedankt voor je reactie 🙂. Ik heb het artikel geupdate en het stuk van in het config bestand aangepast.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *

Deze website gebruikt Akismet om spam te verminderen. Bekijk hoe je reactie-gegevens worden verwerkt.