Wololooo
Posts: 1
Joined: Mon Jul 04, 2016 1:20 pm

Server senza port forwarding

Thu Jan 03, 2019 12:03 pm

Salve a tutti.
Ho a lungo usato questo ed altri forum in caso di problemi e credo sia giunto il momento di fare la mia parte condividendo la mua soluzione ad uno dei problemi che spesso mi si ripropongono: contattare il mio Raspberry dall'esterno (via internet).

Ho incontrato il suddetto problema in uno dei miei ultimi progetti - collegare un termostato al mio assistente Google. Oltre alle varie problematiche, avevo l'aggravante di usare un provider in stile "linkem", che rende difficile - se non impossibile, come nel mio caso - il port forwarding.
Dopo vari giorni di ricerche, arrivo a ngrok.com (che forse alcuni già conosceranno). L'installazione, l'utilizzo e il funzionamento sono abbastanza semplici: basta avviare un programma sul raspberry che apre un tunnel verso un server ngrok e ci restituisce l'indirizzo pubblico. L'unica "pecca" dei servizi come questo (credo ne esistano altri simili) è che nei piani gratuiti l'indirizzo pubblico cambia ad ogni riavvio.

Ecco la mia soluzione:
  • Dopo l'avvio dell'interfaccia di rete viene eseguito uno script che avvia prima il programma ngrok e poi il mio server
  • All'avvio il mio server controlla qual è il nuovo indirizzo pubblico ed effettua una GET ad una function Firebase (potrebbero essere usati servizi simili, come ad esempio Heroku) comunicando il nuovo indirizzo
  • La function Firebase salva l'indirizzo sul database
Così facendo, per contattare il raspberry basta scrivere ed usare una funzione Firebase che non fa altro che leggere l'attuale indirizzo pubblico dal database ed utilizzarlo.

Se a qualcuno può essere utile, posso pubblicare il codice

Return to “Italiano”