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 – Aangeraden, maar niet verplicht
  • 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).

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
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 onderaan in de 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.

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:

# Uncomment this if you are using SSL/TLS, running in Docker container, etc.
http:
  base_url: https://mijnhomeassistant.duckdns.org

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

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.