Collegarsi da remoto a Home Assistant (HASSIO)

7 minuti di lettura
SCOPI DELLA GUIDA:
  • Fornire al proprio Home Assistant (installato in distribuzione HASSIO) 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 HASSIO

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: 1.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 installato in distribuzione 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

Si parte

Assunti

L’intera guida si basa sull’assunto che l’installazione di Home Assistant sia basata sulla distribuzione HASSIO (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, HASSIO installato su Docker su Raspberry Pi).

N.b. Questa guida implementa l’add-on “Duck DNS“, 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 HASSIO.

Servizio Duck DNS

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.

Duck DNS è 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 router 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 Duck DNS 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.

Componente “Duck DNS”

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 Duck DNS, in modo da aggiornare la conseguente risoluzione dell’FQDN.

Per far questo è sufficiente aggiungere al file configuration.yaml di Home Assistant il seguente codice:

duckdns:

  domain: casamia

  access_token: il-tuo-token-duckdns

dove:

domain nome dominio definito sul servizio Duck DNS (inteso come terzo livello, quindi nel caso sopra solo “casamia“)
access_token Il token personale ottenuto tramite Duck DNS (sostituire “null” con il proprio token)

Una volta inserita questa configurazione e rilanciato Home Assistant, Duck DNS conoscerà in tempo reale l’IP del vostro modem/router, e con lui, voi e chi interrogherà tale FQDN.

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 “Duck DNS”

Questo add-on per HASSIO 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 Duck DNS, è 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 HASSIO.

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

lets_encrypt:
  accept_terms: true
  certfile: fullchain.pem
  keyfile: privkey.pem
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 Duck DNS (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 Duck DNS e, una volta registrati creare un proprio nome (eg. “casamia.duckdns.org“) che andrà a comporre l’FQDN, il quale rappresenterà il vostro router 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 Duck DNS 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 HASSIO 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 HASSIO (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 HASSIO, 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 Duck DNS 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 HASSIO 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 uno specifico sensore, aggiungendo al file di configurazione di Home Assistant una configurazione come segue:

sensor:
 - platform: cert_expiry
   host: casamia.duckdns.org
   port: 8123

Sarà chiaramente necessario personalizzare la stringa “host” col proprio FQDN e “port” 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