community italiana di domotica personale
 
Collegarsi da remoto a Home Assistant OS (HassOS/HASSIO)

Collegarsi da remoto a Home Assistant OS (HassOS/HASSIO)

7 minuti di lettura
SCOPI DELLA GUIDA:
  • Fornire al proprio Home Assistant OS  il più alto grado possibile di sicurezza per la connessione remota via Internet
  • Livello di difficoltà: medio/basso
CONCETTI AFFRONTATI:
  • Installazione e configurazione software
  • Configurazione modem/router
COMPONENTI SOFTWARE UTIlIZZATE:
PREREQUISITI:
DISPOSITIVI FISICI UTILIZZATI:
GUIDA indicatA per UTENTI:

Ambiente HassOS

Note e disclaimer
  • qualsiasi eventuale modifica agli impianti domestici dev'essere progettata ed realizzata SOLO da personale qualificato;
  • qualsiasi modifica attuata in proprio è a propria responsabilità personale nonché a proprio rischio e pericolo (i contenuti della presenta pagina hanno puro scopo didattico);
  • qualsiasi modifica attuata in proprio a un dispositivo ne fa decadere garanzia, omologazioni e certificazioni di qualità.
Revisione guida: 2.1
GUIDE Alternative:

Abstract

Come spiegato anche durante un episodio del nostro podcast, la sicurezza in ambito domotico non è mai troppa. Non la è mai in assoluto, ma quando si corre il rischio di esporre a eventuali malintenzionati le nostre componenti domotiche (poco male quando si tratta di illuminazione, va peggio quando si parla di allarmi, di serrature o altro) è necessario dotarsi di un sistema il più possibile sicuro.

Per coloro che abbiano saggiamente deciso di adottare l’HUB personale Home Assistant, uno degli scogli più importanti da affrontare è quello di renderlo raggiungibile dall’esterno del propio ambiente domotico.

Home Assistant offre di suo la possibilità di inibire l’accesso tramite una gestione vera e propria di utenze che abbiano diritto all’accesso. Quel che rimane scoperto (di base) è l’uso della crittografia per la trasmissione dei dati, la quale se implementata ci tutela a fronte di eventuali reti non sicure nelle quali qualcuno “in ascolto” potrebbe intercettare i dati in transito, credenziali di accesso incluse.

In questa guida riassumiamo i passi operativi per dotare Home Assistant OS (aka HassOS, o HASSIO) delle configurazioni e del supporto SSL crittografico (e del meccanismo automatico di rinnovo certificati) al fine di potersi collegare in sicurezza da remoto. Si consiglia, prima di procedere, di leggere con attenzione la pagina dedicata al concetto e al funzionamento del “controllo remoto” in domotica.

Home Assistant - Security

ATTENZIONE: questa guida illustra la procedura più semplice e funzionale per ottenere lo scopo di una connessione efficace e sicura. Se, per motivi propri o per semplice gusto dell’avventura, si predilige l’adozione di un reverse proxy per il proprio Home Assistant e per i servizi della propria rete, la guida corretta è questa.

Si parte

Assunti

L’intera guida si basa sull’assunto che l’installazione di Home Assistant sia basata sulla distribuzione HassOS (non la sola Core, quindi), indipendentemente dal sistema ospitante (che sia un Raspberry Pi oppure altro) o dall’eventuale strato di virtualizzazione sottostante (per esempio, HassOS installato su Docker su Raspberry Pi).

N.b. Questa guida implementa l’add-on “DuckDNS“, del quale illustra installazione e configurazione. Si tratta di un add-on incluso nella lista degli add-on imprescindibili da installare sul proprio HUB, quando per l’appunto installato in distribuzione Home Assistant OS.

Servizio DuckDNS

Affinché sia raggiungibile dall’esterno, il punto di accesso esterno alla rete domestica (interfaccia WAN del modem) deve possedere un nome univoco (chiamato FQDN o dominio, anche se è improprio chiamarlo così) il quale veda l’IP ad esso associato aggiornarsi automaticamente ad ogni variazione, dato che quello assegnato al vostro modem/router cambia ciclicamente. Per fare questo interviene il servizio Dynamic DNS (o DDNS), ovvero un servizio che tenga traccia dell’ultima variazione e risponda, ai sistemi che chiedano la risoluzione (traduzione) del nome DNS, l’ultimo IP conosciuto, ovvero quello attuale.

DuckDNS è il servizio che abbiamo scelto per questa funzione.

Collegarsi quindi al servizio tramite l’indirizzo https://www.duckdns.org e, una volta registrati creare un proprio nome dominio che, univocamente, rappresenterà il vostro  modem collegato ad Internet. Il suffisso è sempre lo stesso (“.duckdns.org“) mentre ciò che cambia e va scelto è il suffisso (per esempio “casamia“).

Per questa guida, daremo per assunto di aver creato il seguente FQDN:

casamia.duckdns.org

dove “duckdns.org” è la parte fissa mentre casamia è il nome dominio da noi creato a mo’ di esempio.

All’interno della vostra sezione privata di DuckDNS troverete anche un campo importante chiamato “token“, il quale appare analogo a questo:

e3ff465f-c6d6-acb1-4416-44b2af152111

Appuntarselo da una parte, tornerà utile a breve.

Aggiornamento di DuckDNS

Ora è necessario implementare su Home Assistant un elemento che, a fronte dell’eventuale cambiamento dell’IP Internet sull’interfaccia WAN del proprio modem/router, comunichi tale variazione a DuckDNS, in modo da aggiornare la conseguente risoluzione dell’FQDN.

Per far questo è sufficiente seguire questa breve guida:

Aggiornare il proprio record su DuckDNS tramite automazione Home Assistant

N.b. Questo paragrafo non va attuato se sulla propria rete c’è già qualche dispositivo che provveda a tale funzione di associazione dell’IP con il proprio FQDN, come per esempio un modem/router FRITZ!Box o altri modelli/marche in grado di effettuare da sé l’operazione. Se e quando un modem è in grado di provvedere a tale funzione, è sempre buona regola lasciare che sia lui ad aggiornare tale associazione, e non il Raspberry o altri host della propria rete.

Add-on DuckDNS

Questo add-on per Home Assistant OS consente in buona sostanza di associare la propria istanza Home Assistant all’FQDN di cui sopra, condizione minima e necessaria per poter controllare da fuori casa la propria domotica. Inoltre, questo add-on porta in dote la generazione automatica dei certificati crittografici utili alla comunicazione sicura tra la rete internet e Home Assistant al fine di controllare remotamente la nostra domotica personale.

Tale FQDN, quando definito con DuckDNS, è composto dal prefisso (a libera scelta, eg. “casamia“) e da un suffisso “duckdns.org“.

N.b. Questo add-on fa parte della lista degli add-on imprescindibili da installare su Home Assistant OS.

Per installare “DuckDNS” è sufficiente trovarlo nella lista degli add-on disponibili presso lo STORE presente sull’interfaccia web dellHUB (“Supervisor” > “Raccolta di Componenti Aggiuntivi“) e una volta trovato, cliccare su “INSTALLA“.
Una volta completata l’installazione, alla voce “Configuration” impostare come segue:

lets_encrypt:
  accept_terms: true
  certfile: fullchain.pem
  keyfile: privkey.pem
  algo: secp384r1
token: null
domains:
  - null
aliases: []
seconds: 300

dove:

accept_terms Da impostare a “true” (rappresenta l’accettazione dei termini d’uso)
token Il token personale ottenuto tramite DuckDNS (sostituire “null” con il proprio token)
domains L’FQDN della propria istanza Home Assistant (sostituire “null” con il proprio nome, per esempio “casamia.duckdns.org“)

Per definire i propri token e domain collegarsi al servizio DuckDNS e, una volta registrati creare un proprio nome (eg. “casamia.duckdns.org“) che andrà a comporre l’FQDN, il quale rappresenterà il vostro modem collegato ad Internet – e quindi successivamente l’istanza Home Assistant.

Terminata la configurazione, cliccare su “Start“. Da qui in poi l’associazione del vostro nome internet con l’IP del vostro router internet sarà tenuta automaticamente aggiornata dall’add-on:

HASSIO - Duck DNS

N.b. Dopo aver correttamente installato ed eseguito l’add-on DuckDNS non è necessario (anzi, è proprio concettualmente sbagliato) installare dei componenti ad hoc per la generazione dei certificati crittografici (ad esempio Let’s Encrypt), in quanto come precedentemente detto il supporto è già garantito in modo automatico.

Dopo l’avvenuta configurazione ed avvio dell’add-on, verificare in fondo alla pagina che la richiesta dei certificati sia andata a buon fine cliccando su “Refresh” sotto la voce “LOG“. La procedura è completata correttamente quando appare il seguente log (potrebbe volerci qualche istante):

# INFO: Using main config file /data/workdir/config
+ Generating account key...
+ Registering account key with ACME server...
+ Done!
Sat Jul 20 00:36:10 CEST 2019: OK
95.232.225.128
NOCHANGE
# INFO: Using main config file /data/workdir/config
 + Creating chain cache directory /data/workdir/chains
Processing casamia.duckdns.org
 + Creating new directory /data/letsencrypt/casamia.duckdns.org ...
 + Signing domains...
 + Generating private key...
 + Generating signing request...
 + Requesting new certificate order from CA...
 + Received 1 authorizations URLs from the CA
 + Handling authorization for casamia.duckdns.org
 + 1 pending challenge(s)
 + Deploying challenge tokens...
OK + Responding to challenge for casamia.duckdns.org authorization...
 + Challenge is valid!
 + Cleaning challenge tokens...
OK + Requesting certificate...
 + Checking certificate...
 + Done!
 + Creating fullchain.pem...
 + Done!

N.b. Attenzione! Non proseguire oltre senza prima aver concluso con successo questa fase.

Port forwarding

Per accedere dalla rete esterna al nostro Home Assistant è ora necessario configurare il modem/router in modo che qualsiasi chiamata esterna verso la porta (8123, o altra) venga girata direttamente all’IP statico del computer che ospita Home Assistant OS verso la porta 8123, ovvero quella di Home Assistant.

Ribadiamo: tutti i concetti basilari legati a questo tema del controllo remoto sono approfonditi nel dettaglio in quest’altra nostra scheda.

Per effettuare l’attività di configurazione del port forwarding si consiglia la lettura di questo articolo; i dati necessari applicando tale guida sono:

  • IP destinazione: IP statico del computer ospitante Home Assistant OS (assegnato in precedenza);
  • Porta esterna: 8123 (a meno che non vogliate usarne un’altra, è lo stesso);
  • Porta interna: 8123

Riconfigurare Home Assistant

A questo punto è necessario attivare i certificati crittografici su Home Assistant: per farlo è sufficiente effettuare una piccola modifica presso il file di configurazione configuration.yaml presente nella cartella “/config“.

Per farlo è necessario aggiungere un blocco “http: all’interno del file, come segue:

http:

  ssl_certificate: /ssl/fullchain.pem
  ssl_key: /ssl/privkey.pem


dove “ssl_certificate” rappresenterà il percorso del certificato appena creato e “ssl_key” il percorso delle chiavi.

Completata la modifica, salvare, non riavviare ancora Home Assistant ma recarsi presso la voce di menu “Impostazioni” > “Generale“: in basso, alla voce “URL Esterno” (se la voce non appare, attivare la “Modalità avanzata” presso il proprio profilo utente), impostare il proprio URL esterno:

https://casamia.duckdns.org:8123

ovviamente sostituendo casamia col vostro nome dominio precedentemente definito. Salvare e riavviare Home Assistant.

Terminato il riavvio, Home Assistant dovrebbe essere correttamente controllabile da remoto (e in locale) in modo sicuro tramite l’indirizzo appena configurato (quello in verde qui sopra), collegandosi – tramite browser o tramite l’app mobile Home Assistant Companion per iOS o Android – all’indirizzo appena impostato, inclusivo di porta (8123 o quella che sia).

Connessione locale

Quando ci si trova in casa – quindi collegati alla Wi-Fi/LAN domestica – è possibile collegarsi a Home Assistant senza dover necessariamente utilizzare l’indirizzo FQDN esterno: è possibile infatti utilizzare l’indirizzo IP del computer ospitante Home Assistant OS, anche se è poco pratico. L’unica accortezza necessaria sarà quella di utilizzare comunque il protocollo SSL (indicando sempre https://).

N.b. Tra l’altro la cosa risulta particolarmente utile in caso di problemi col servizio DuckDNS e/o con l’aggiornamento del proprio FQDN.

In sostanza, anziché utilizzare:

https://casamia.duckdns.org:8123

oppure, più semplicemente, tramite l’indirizzo IP del computer ospitante:

https://IP_DEL_COMPUTER:8123

dove ovviamente “IP_DEL_COMPUTER” sarà l’indirizzo IP assegnato al proprio computer ospitante Home Assistant OS e già utilizzato per il port forwarding presso il router.

Verificare la scadenza del certificato

È inoltre possibile verificare la durata del certificato in uso tramite l’adozione di una specifica integrazione. Recandosi alla voce “Configurazione” > “Integrazioni” di Home Assistant, oppure direttamente usando il link che segue:

 

è possibile cercare e configurare l’integrazione “Scadenza certificato“. Configurandola:

Home Assistant - Scadenza certificato

sarà sufficiente valorizzare il campo “host” col proprio FQDN e “porta” con la propria porta.

Questa configurazione genererà un’entità sensore chiamata sensor.cert_expiry_casamia_duckdns_org_8123 (il nome varierà in base alle proprie impostazioni) che riporterà la data di scadenza del certificato. A questo punto definiamo un sensore che riporti il numero di giorni mancanti alla scadenza:

sensor:
  - platform: template
    sensors:      
      certificate_expiry:
        friendly_name: "Scadenza certificato"
        value_template: "{{ (( as_timestamp(states('sensor.cert_expiry_timestamp_casamia_duckdns_org_8123')) | int - as_timestamp(now()) | int ) /60/60/24 ) | int }}"
        unit_of_measurement: "Giorni"
        icon_template: mdi:certificate

La configurazione creerà un sensore chiamato sensor.certificate_expiry che riporterà i giorni mancanti alla scadenza. Ovviamente, lo stato di tale sensore sarà anche visualizzabile presso il frontend web Lovelace UI.


Home Assistant Official Logo ATTENZIONE: ricorda che sul nostro community FORUM c'è una sezione ad hoc dedica a Home Assistant, per qualsiasi dubbio, domanda, informazione nel merito specifico di queste componenti.

   
Telegram News Channel