Gli spunti per questo articolo li ho presi sempre qui: indomus.it-collegarsi-da-remoto
Abbiamo due aspetti per poter accedere ad Home Assistand dall'esterno della nostra rete domestica :
1) riuscire ad arrivarci
2) fare in modo che l'accesso sia il piu protetto possibile
Partiamo dal primo.
Avendo l'ADSL o fibra che sia, l'operatore telefonico potrebbe, e lo fà, a sua discrezione cabire l'indirizzo IP assegnato al router casalingo;
quindi quando navighiamo abbiamo di volta in volta indirizzi ip differenti.
Per renderse conto basta travare un sito come https://www.mio-ip.eu che mostra l'indirizzo IP del proprio accesso ad internet.
Quando si naviga, poco male.. il problema è quando qualcuno (noi) dall'esterno vuole conttarci, ma noi abbiamo cambiamo "indirizzo" ...
Scordiamoci di avere un ip Fisso (costa parecchio farselo assegnare fisso...), a noi basta che ci sia un sitema mnemonico per raggiungere la nostra Rete; per fare questo utilizzeremo Duck DNS https://www.duckdns.org
a cui dovremo accedere/registrarci e creare un nostro sottodominio (in questo caso ipotizziamo "casamia")
in modo da poter navigare ad un indirizzo del tipo
casamia.duckdns.org
All’interno della vostra sezione privata di DuckDNS troviamo anche un campo chiamato “token“ simile a questo:
e3ff465f-c6d6-acb1-4416-44b2af152111
Ora implementiamo su Home Assistant un elemento che, a fronte del cambiamento dell’IP Internet del proprio modem/router, comunichi tale variazione a DuckDNS, in modo da aggiornare la 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 di dominio definito sul servizio DuckDNS (inteso come terzo livello, quindi nel caso sopra solo “casamia“) |
access_token | toker definito da DuckDNS |
Una volta inserita questa configurazione e rilanciato Home Assistant, DuckDNS conoscerà l’IP del vostro modem/router ma questo solo in caso di riavvio di Home Assistant
sudo systemctl restart home-assistant@homeassistant
Quel che faremo ora è definire un processo automatico che, una volta ogni tot, invii la richiesta di (eventuale) aggiornamento verso DuckDNS.
creeremo uno script ...
mkdir duckdns
cd duckdns
sudo nano duck.sh
inserendo la seguente stringa (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 (guardando immagine sopra di DuckDNS):
- <tuo-dominio> è il nome del tuo dominio, inteso come terzo livello, quindi nel caso sopra solo "casamia";
- <tuo-token> è il token assegnato al proprio dominio.
Una volta formattata opportunamente la stringa, è necessario copia-incollarla dentro l’editor.
Successivamente, salvare, uscire (CTRL+X, Y, Invio) e cambiare i permessi del file appena generato con:
sudo chmod 777 duck.sh
Per automatizzare, dovremo usare il contab, un servizio di sistema unix che esegue comandi secondo una certa logica temporale.
Lanciamo il crontab in edit usando come editor "nano".
export VISUAL=nano; crontab -e
andiamo in fondo al file che si apre, ed inseriamo la riga:
*/60 * * * * ~/duckdns/duck.sh >/dev/null 2>&1
che dice al crontab di eseguire lo script dai noi creato (duck.sh) ogni 60 minuti. Per maggiori dettagli riguardo alla sintassi di crontab consiglio il sito https://crontab.guru
Infine dovremo far partire/installare il servizio di crontab:
sudo service cron start
Ora testiamo che l'aggiornamento dell'Ip pe ril nostro dominio funzioni correttamente:
cat duck.log
Se apparirà “OK“, signfica che la comunicazione verso DuckDNS è stata effettuata e l’aggiornamento richiesto correttamente.
Attivare il port forwarding sul router
Per accedere, dalla rete esterna, al nostro Home Assistant è ora necessario configurare il router in modo che qualsiasi chiamata esterna verso la porta (8123, o altra) venga girata direttamente all’IP statico del Raspberry sulla porta 8123, ovvero quella di Home Assistant.
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 Raspberry Pi (assegnato in precedenza);
- Porta esterna: 8123 (a meno che non vogliate usarne un’altra, è lo stesso);
- Porta interna: 8123
per la gestione della crittografia, rimando al prossimo articolo