Home Assistant - collegamento da remoto (SSL) con il servizio Duckdns - Domotica DIY (2024)

INTRODUZIONE

Questa guida permetterà di far si che possiate collegarvi al pannello web del vostro Home Assistant (oppure utilizzare l’app dedicata: link al playstore) anche senza dover essere connessi sotto la stessa rete locale in cui è collegato il Raspberry. Che voi siate a lavoro, in viaggio o da qualsiasi altra parte, vi basterà una qualsiasi connessione internet per poter gestire tutto l’apparato domotico di casa vostra.

Per poter effettuare questa “magia” ci affideremo al servizio gratuito chiamato DuckDNS.

Colleghiamoci all’indirizzo internet https://www.duckdns.org , registriamoci e creiamo un nostro dominio con nome a piacere che rappresenterà l’url a cui collegarci da qualsiasi parte del mondo per accedere al nostro Home Assistant di casa. In questa guida utilizzeremo come esempio il seguente dominio:

lamiacasa.duckdns.org

Nel pannello di controllo di DuckDNS quindi vi verrà assegnato un token segreto simile a questo:

42983afc23-c9cc-ffb2-3281-66409ea728

Tenetevelo copiato da qualche parte perchè tra poco lo useremo. Inutile dire che questo token NON deve essere pubblicato da nessuna parte per richieste di aiuto su forum ecc… è un token segreto e dovete tenerlo tale!

CONFIGURARE DUCKDNS SU HOME ASSISTANT

Passiamo ora al settaggio dei dati DuckDNS in nostro possesso, sul nostro Home Assistant. Questa configurazione farà in modo che ci sia sempre una sincronizzazione tra il nostro dominio lamiacasa.duckdns.org e il nostro IP Internet (in quanto l’IP internet fornito dal nostro provider, a meno che non ne abbiamo richiesto uno fisso, cambia ad ogni riconnessione da parte del nostro router).

Apriamo quindi il file configuration.yaml di Home Assistant (che si trova all’interno del nostro Raspberry in: home/homeassistant/.homeassistant) e aggiungiamo il seguente codice:

duckdns: domain: lamiacasa access_token: il-tuo-token-duckdns

dove:

domain: è il nome scelto per il vostro dominio

access_token: è il vostro token segreto di DuckDNS appuntato poco fa

Salvate e riavviate ora Home Assistant.

ATTIVAZIONE DEL PORT FORWARDING SUL NOSTRO ROUTER

Per poter accedere dall’esterno al nostro Home Assistant, dobbiamo configurare il nostro router in modo che dirotti le chiamate esterne sulla porta 8123 (quella di default utilizzata da H.A.) all’indirizzo IP statico e porta 8123 del Raspberry su cui gira il nostro Home Assistant.

Apriamo di nuovo il file configuration.yaml e sotto la sezione http (se non esiste, creiamola) inseriamo tale codice:

http: base_url: lamiacasa.duckdns.org:8123

Salvare e riavviare Home Assistant.

Ora il nostro Home Assistant è raggiungibile sempre dal nostro indirizzo internet http://lamiacasa.duckdns.org:8123 anche in caso di cambio improvviso di indirizzo IP internet di casa.

DEHYDRATED: INSTALLAZIONE E CONFIGURAZIONE

Per poter far funzionare alcuni componenti e integrazioni aggiuntive di Home Assistant è necessario avere una connessione protetta https tramite SSL, altrimenti tali servizi si rifiuteranno di partire. Un servizio che richiede tali caratteristiche, ad esempio, è Haaska per integrare l’assistente vocale Alexa ad Home Assistant in forma completamente gratuita! Ma la lista è lunga!

Vediamo quindi come ricevere un certificato SSL gratuito e come rinnovarlo periodicamente in modo automatico.

Colleghiamoci tramite SSH al nostro Raspberry e una volta loggati, cambiamo l’utente in uso da pi a homeassistant:

sudo su -s /bin/bash homeassistant

posizionamoci nella cartella:

cd /home/homeassistant

ed eseguiamo:

git clone https://github.com/lukas2511/dehydrated.git

Entriamo nella cartella dehydrated e creiamo un file vuoto con il comando nano, chiamato domains.txt:

cd dehydrated/nano domains.txt

inseriamoci all’interno:

lamiacasa.duckdns.org

(ovviamente sostituite lamiacasa con il vostro dominio). Uscite e salvate con CTRL+X / Y / invio.

Creiamo un secondo file, questa vosta senza estensione, di nome config:

nano config

copiamoci dentro:

# Which challenge should be used? Currently http-01 and dns-01 are supportedCHALLENGETYPE="dns-01"# Script to execute the DNS challenge and run after cert generationHOOK="${BASEDIR}/hook.sh"

usciamo e salviamo con CTRL+X / Y / invio.

Ora creiamo il file hook.sh:

nano hook.sh

copiamoci dentro:

#!/usr/bin/env bashset -eset -uset -o pipefail domain="lamiacasa"token="your-duckdns-token" case "$1" in "deploy_challenge") curl "https://www.duckdns.org/update?domains=$domain&token=$token&txt=$4" echo ;; "clean_challenge") curl "https://www.duckdns.org/update?domains=$domain&token=$token&txt=removed&clear=true" echo ;; "deploy_cert") sudo systemctl restart home-assistant@homeassistant.service ;; "unchanged_cert") ;; "startup_hook") ;; "exit_hook") ;; *) echo Unknown hook "${1}" exit 0 ;;esac

e facciamo le dovute sostituzioni per i campi domain e token con i vostri dati.

Infine uscite salvando con CTRL+X / Y / invio.

Rendiamo lo script eseguibile:

chmod 0777 hook.sh

Generiamo il certificato:

./dehydrated --register --accept-terms

a video comparirà un messaggio simile al termine:

# INFO: Using main config file /home/homeassistant/dehydrated/config+ Generating account key...+ Registering account key with ACME server...+ Fetching account ID...+ Done!

Successivamente lanciamo il comando:

./dehydrated -c

e a video apparirà un risultato simile a questo:

# INFO: Using main config file /home/homeassistant/dehydrated/config
Processing myhome.duckdns.org+ Signing domains...+ Generating private key...+ Generating signing request...+ Requesting challenge for lamiacasa.duckdns.org...
OK
+ Responding to challenge for lamiacasa.duckdns.org...
OK
+ Challenge is valid!
 + Requesting certificate...
+ Checking certificate...+ Done!+ Creating fullchain.pem...+ Walking chain...+ Done!

Nel caso al termine di questa esecuzione venga richiesta la password dell’utente in uso, interrompere con CTRL+C.

RINNOVO AUTOMATICO DEL CERTIFICATO

Il certificato generto ha una durata limitata, e deve essere rinnovato ogni tot di tempo. In questa guida lo aggiorneremo automaticamente ogni 2 settimane alle ore 12:00.

Eseguiamo sempre da SSH:

export VISUAL=nano; crontab -e

Posizionarsi in fondo al file e accodare il seguente codice:

0 12 1,15 * * /home/homeassistant/dehydrated/dehydrated -c | tee /home/homeassistant/dehydrated/update.log

salvare e uscire.
Questa configurazione farà sì che ogni 2 settimane (precisamente il giorno 1 e 15) il certificato si rinnovi automaticamente.

Uscire ora dall’utente homeassistant:

exit

Torniamo al blocco http all’interno del file configuration.yaml e modifichiamo come segue (avendo cura di sostituire lamiacasa con il vostro dominio):

http: ssl_certificate: /home/homeassistant/dehydrated/certs/lamiacasa.duckdns.org/fullchain.pem
 ssl_key: /home/homeassistant/dehydrated/certs/lamiacasa.duckdns.org/privkey.pem
 base_url: lamiacasa.duckdns.org:8123

Salvate e riavviate Home Assistant.

Ora il vostro Home Assistant è raggiungibile dall’indirizzo sicuro (notare che siamo passati da http ad https):

https://lamiacasa.duckdns.org:8123

SENSORE: SCADENZA DEL CERTIFICATO SSL

E’ possibile creare un sensore in Home Assistant per avere sempre sotto controllo la scadenza del certificato SSL e verificare che quindi l’automatismo di rinnovo automatico non si “inceppi” per qualsiasi motivo.

Creiamo quindi un sensore (utilizziamo il file sensors.yaml già presente, oppure potete posizionarlo anche in configuration.yaml se non volete utilizzare la suddivisione delle impostazioni):

sensor: - platform: command_line name: ssl_expiration unit_of_measurement: Giorni scan_interval: 43200 command: "/usr/bin/sudo ssl-cert-check -b -c /home/homeassistant/dehydrated/certs/lamiacasa.duckdns.org/cert.pem | awk '{ print $NF }'"

Nota: scan_interval indica ogni quanto tempo controllare lo stato del certificato, espresso in secondi. Nell’esempio stiamo indicando quindi 12 ore.

Ricordatevi ovviamente di sostituire lamiacasa con il vostro dominio.

Affinché questo sensore funzioni è necessario che ssh-cert-check sia installato.
Installatelo quindi con il comando:

sudo apt-get install ssl-cert-check

A seguire:

sudo nano /etc/sudoers

e aggiungere tale stringa (se non è già presente) al file che si aprirà:

homeassistant ALL=(ALL) NOPASSWD:ALL

Salvare, uscire e riavviare.

Ecco uno screenshot di come vi appare il sensore una volta attivo (nel caso utilizziate la grafica LOVELACE)

Di cui vi lascio un estratto per il file ui-lovelace.yaml

 - icon: mdi:home-assistant title: Sistema cards: - type: glance title: SSL entities: - entity: sensor.ssl_expiration name: Prossimo rinnovo SSL icon: mdi:certificate columns: 1

AGGIORNAMENTO IP AUTOMATICO

Andiamo ora a configurare Home Assistant in modo che comunichi correttamente un eventuale cambiamento di IP da parte del nostro provider di servizi. Questo può accadere ad esempio quando per un qualche motivo il modem si riavvia.

La configurazione attuale infatti, comunica il valore dell’ IP solo all’avvio di Home Assistant e questo non è sufficente.

Colleghiamoci quindi via SSH al nostro Raspberry ed eseguiamo i tre comandi:

mkdir duckdnscd duckdnssudo nano duck.sh

Inseriamo la seguente riga nel file che ci si apre davanti (tutto in una sola riga):

echo url="https://www.duckdns.org/update?domains=<tuo-dominio>&token=<tuo-token>&ip=" | curl -k -o ~/duckdns/duck.log -K -

dove:

  • <tuo-dominio> è il nome del vostro dominio, nel nostro esempio lamiacasa;
  • <tuo-token> è il token assegnato.

Successivamente, salviamo e usciamo (CTRL+X, Y, Invio).

Successivamente inseriamo questi nuovi due comandi:

sudo chmod 777 duck.shexport VISUAL=nano; crontab -e

In fondo all’editor inserire questa stringa:

*/60 * * * * ~/duckdns/duck.sh >/dev/null 2>&1

Questo farà sì che l’aggiornamento avvenga ogni 60 minuti.

Infine, eseguire il comando:

sudo service cron start

per abilitare il cron.

VERIFICA

Per verificare che l’aggiornamento funzioni, eseguire i seguenti due comandi:

cd duckdns./duck.shcat duck.log

Se apparirà OK, significa che tutto funziona a dovere.

CONNESSIONE LOCALE / REMOTA

Siamo arrivati in fondo alla guida. Ora il vostro Home Assistant è correttamente raggiungibile sia il locale (ci mancherebbe altro!) e da remoto. L’unica cosa da ricordare è di non scordare la s in https in quanto ora la connessione è di tipo sicuro tramite certificato SSL.

Quindi i 2 indirizzi:

https://lamiacasa.duckdns.org:8123

e:

https://IP_RASPBERRY:8123

saranno equivalenti: l’unica differenza è che https://IP_RASPBERRY:8123 lo potete usare solamente se siete connessi sotto la stessa rete del Raspberry.

Home Assistant - collegamento da remoto (SSL) con il servizio Duckdns - Domotica DIY (2024)
Top Articles
Latest Posts
Article information

Author: Greg O'Connell

Last Updated:

Views: 5659

Rating: 4.1 / 5 (42 voted)

Reviews: 89% of readers found this page helpful

Author information

Name: Greg O'Connell

Birthday: 1992-01-10

Address: Suite 517 2436 Jefferey Pass, Shanitaside, UT 27519

Phone: +2614651609714

Job: Education Developer

Hobby: Cooking, Gambling, Pottery, Shooting, Baseball, Singing, Snowboarding

Introduction: My name is Greg O'Connell, I am a delightful, colorful, talented, kind, lively, modern, tender person who loves writing and wants to share my knowledge and understanding with you.