Alternativa a Ducksdns con NGROK

HassioHelp

Alternativa a Ducksdns con NGROK

.

Argomento: NGROK

Livello: Esperto (Novizio,Esperto, Pro)

Difficoltà: Bassa (Bassa, Media, Alta)

Home Assistant: v. 0.105.2




Grazie al nostro utente Telegram https://t.me/@MaGiDeL per aver realizzato e testato questa guida.

Questo nuova guida sull’argomento alternativa a Duckdns è già stato in precedenza trattato nell’articolo Alternativa a DuckDNS con SERVEO utilizzando appunto il servizio SERVEO; ma essendo già da un po’ il servizio offline, quindi inutilizzabile, ho cercato un’alternativa valida per ottenere lo stesso risultato. Ripropongo perciò lo stesso articolo ma utilizzando il servizio NGROK che spero rimanga attivo per un bel po’.

Introduzione

Parlando di domotica, oggi giorno, non sorprende sentire che alcune persone accostano questo termine alla possibilità di gestire con un semplice comando dallo smartphone o da un comando vocale o addirittura da remoto, i propri dispositivi di casa quali illuminazione, gestione di carichi e automatismi in generale.

Tutto lecito, sia ben chiaro, e anche molto “cool”, ma personalmente preferisco pensare alla domotica come ad un sistema “chiuso”, non dipendente da server sparsi chissà dove e al quale, anche da remoto, posso accedere senza troppe difficoltà.
Circa quest’ultimo aspetto, ci sono svariati modi per accedere da remoto al nostro hub preferito (Home Assistant / Hassio), tutti validi e più o meno semplici.
Il più usato, DuckDNS (qui la guida Configurazione DuckDNS) prevede l’apertura di una porta sul router per creare il redirect sulla porta del nostro sistema, la creazione di certificati per validare la comunicazione e il servizio di DuckDNS al quale viene aggiornato il proprio indirizzo IP pubblico.

Vorrei mostrarvi, invece, con questo articolo, una diversa modalità di connessione da remoto.
Di necessità virtù, diceva un detto, ed infatti questo metodo è stato messo in piedi per necessità, dato che l’attuale connessione ad internet in casa non si basa su ADSL/Fibra/RetiRadio…ma su una semplice SIM in 4G.

Non entrerò nel merito della connessione internet e come questa viene distribuita in tutta casa, non è il fine di questo articolo.
Si sappia, soltanto, che come per le “normali” connessioni, non si avrà un indirizzo pubblico statico, ma si andrà in internet sotto NAT.

Il setup e lo scopo

Di seguito la configurazione di partenza:

  • Presenza di connessione 4G attraverso operatore telefonico, quindi router/chiavetta/modem con SIM dell’operatore.
  • Raspberry + SSD
  • Raspbian + Docker + hassio

Lo scopo è quello di poter creare “on the fly” una connessione sicura da remoto verso il proprio raspberry utilizzando un reverse tunnel in SSH (https://en.wikipedia.org/wiki/Reverse_connection).
Questo canale permetterebbe di accedere da remoto alla schermata di Hassio e gestire l’intera domotica, compreso il codice, come fossimo in locale!
Una volta conclusa la sessione, poter chiudere la connessione con la stessa facilità con la quale l’abbiamo aperta, per evitare ogni problema di sicurezza.

 

Da settembre 2019 il servizio https://serveo.net/ non è più raggiungibile a causa di phishing. Si è cercato quindi un’alternativa dell’alternativa, trovandola in https://ngrok.com/.

Bisogna registrarsi a questo indirizzo, generare il proprio token così da legare il proprio account (per l’occasione si è utilizzato l’account gratis) al proprio Hassio.

Procedura

La diffusione di Hassio ha avuto un buon successo anche grazie ai suoi addons, che permettono, con semplici operazioni, di installare tutte le funzionalità di cui necessita l’utente finale.

Oltre agli addons ufficiali e a quelli della community, ci sono addons di terze parti.

Tra questi si trova il “client ngrok”, attraverso il seguente repository:

https://github.com/ThePicklenat0r/hassio-addons

Per installare l’addon basta aggiungere il repository nella sezione degli addons.

Aggiunto il repository, si passa ad installare il client ngrok:

Installato il client, nella sezione della configurazione , si aggiungerà l’authtoken appena generato dal proprio account su ngrok.net.

 

Package

Si passa quindi all’analisi del package che potete scaricare da questo Link.

La prima modifica da fare nel package è l’indirizzo di Hassio nella propria rete/LAN (esempio: 192.168.1.10 al posto di XXX.XXX.XXX.XXX).

##################
### ngrok SENSOR
##################
sensor:
  - platform: rest
    resource: http://XXX.XXX.XXX.XXX:4040/api/tunnels/hass
    name: ngrok url
    value_template: '{{ value_json.public_url }}'

Questo sensore verrà aggiornato con l’indirizzo pubblico con il quale raggiungere da remoto la UI (User Interface) di Hassio.

Telegram

Si passa a Telegram, programma che ci permette di creare “on the fly” il reverse tunnel con ngrok
Grazie alla programmazione delle richieste da bot telegram (Bot Telegram) si ha l’opportunità di attivare e disattivare la creazione di questo canale ssh.
Le automazioni del package, infatti, vengono utilizzate per creare i “bottoni” su telegram per gestire la connessione a ngrok.

La prima automazione risponde ad un callback centrale alla quale si arriva da una home:

  - alias: Button Bot ngrok
    initial_state: 'on'
    trigger:
      - platform: event
        event_type: telegram_callback
        event_data:
          data: /ngrok
    action:
      - service: notify.telegram
        data_template:
          message: |-
            
            {{ "\u26D3\ufe0f" }} *ngrok Service*
            
            PublicURL: {{ states('sensor.ngrok_url') }}
            
          data:
            inline_keyboard:
            - '{{ "\u2705\ufe0f" }} ngrokON:/ngrokon, {{ "\u274c\ufe0f" }} ngrokOFF:/ngrokoff'
            - '{{ "\u21a9\ufe0f" }} Home:/home'

Di seguito un’immagine del bot telegram

La seconda automazione risponde al tastino “ngrokON” che attiva l’addon del client ngrok, aprendo la connessione. L’altra modifica da fare è il nome dell’addon. Sostituire XXXXXXX_ngrok con il nominativo del proprio addon. Questo si trova entrando nell’addon stesso da Hassio e vedendo sulla barra degli indirizzi:o.

L’automazione per attivare la connessione ngrok:

  - alias: Telegram ngrok ON
    initial_state: 'on'
    trigger:
      - platform: event
        event_type: telegram_callback
        event_data:
          data: /ngrokon
    action:
      - service: hassio.addon_start
        data:
          addon: "XXXXXXX_ngrok"
      - delay: '00:00:03'
      - service: notify.telegram
        data_template:
          title: '*START ngrok*'
          message: |-
            
            PublicURL: {{ states('sensor.ngrok_url') }}
            Datetime {{ now().strftime('%Y-%m-%d %H:%M:%S') }}
          data:
            inline_keyboard:
              - '{{ "\u2b06\ufe0f" }} UpLevel:/ngrok, {{ "\u21a9\ufe0f" }} Home:/home'

Anche nella terza automazione bisogna modificare il nome dell’addon. Quest’ultima risponde al tastino “ngrokOFF” che disattiva l’addon del client ngrok, chiudendo la connessione:

  - alias: Telegram ngrok OFF
    initial_state: 'on'
    trigger:
      - platform: event
        event_type: telegram_callback
        event_data:
          data: /ngrokoff
    action:
      - service: hassio.addon_stop
        data:
          addon: "XXXXXXX_ngrok"
      - delay: '00:00:03'
      - service: notify.telegram
        data_template:
          title: '*STOP ngrok*'
          message: |-
            
            PublicURL: {{ states('sensor.ngrok_url') }}
            Datetime {{ now().strftime('%Y-%m-%d %H:%M:%S') }}
          data:
            inline_keyboard:
              - '{{ "\u2b06\ufe0f" }} UpLevel:/ngrok, {{ "\u21a9\ufe0f" }} Home:/home'

Tutte le automazioni notificano su telegram l’azione appena compiuta.

Creata la connessione la notifica ci riporterà l’indirizzo URL pubblico creato da ngrok.

Da tener presente che una volta creato la connessione con ngrok, il sensore impiega qualche secondo per aggiornarsi, non è istantaneo! Quindi comparirà il sensore come “unavailable”, come si vede qui sotto. Il client ngrok è partito, ma non c’è niente come PublicURL:

Conclusioni

In questo modo si attiva e disattiva un reverse tunnel così da accedere da remoto, visualizzare la propria home, modificare codice e una volta finito, chiudere il canale, il tutto attraverso telegram.

In realtà il sensore è valorizzato. Infatti basta risalire al bot di ngrok e verrà visualizzato l’indirizzo creato ad hoc:

Conclusioni

In questo modo si attiva e disattiva un reverse tunnel così da accedere da remoto, visualizzare la propria home, modificare codice e una volta finito, chiudere il canale, il tutto attraverso telegram.

 

6 risposte

  1. Avatar Antonio Montenegro ha detto:

    Io uso noip o dyndns senza sbattimenti

  2. Avatar MaGiDeL ha detto:

    Ciao Antonio.
    Anche io all’inizio pensavo ad un servizio noip, ma probabilmente sotto NAT in 4G non avrei avuto fortuna.
    Se invece hai realizzato un’altra cosa….ti propongo di scriverci su una guida, tutti cercano sempre un’alternativa…anche all’alternativa!!! ^__^

    Non contento del noip, ho anche pensato ad un VPS con tanto di ssh con reverse tunnel, ma con un certo sbattimento sotto, con servizi e quant’altro.
    Ovviamente sono tutte soluzioni a pagamento ed io cercavo qualcosa di totalmente free, come nello spirito di questa comunità….anche perchè il servizio a pagamento è bello e pronto con Hassio cloud. 😉

    Cmq con la scusa di risponderti, lascio a te e a tutti il link al forum per la discussione di questa guida:
    https://forum.hassiohelp.eu/showthread.php?tid=542

    Attendo i vostri suggerimenti!
    Grazie

  3. Avatar fabrizio ha detto:

    ho seguito la guida, tutto ok, tranne che non visualizzo mai l’indirizzo…

  4. Avatar Rikoxxl ha detto:

    Salve
    Premettendo che telegram funziona a dovere
    Ho gia configurato il pannello di controllo
    Una volta che inserisco il pkg-ngrok nella cartella automazioni
    Riavvio Hassio
    scrivo /start
    ma mi esce solo il pannello di controllo e non i comandi per ngrok
    mi potreste aiutare

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *