NGROK: COME ESPORRE UN SERVER LOCALE SU INTERNET
Vi sarà certamente capitato di voler esporre uno o più servizi sulla rete Internet in modo da renderli accessibili da remoto. Supponete di essere al lavoro su un progetto in ambito locale ma avete la necessità di mostrarlo a un gruppo di utenti che si collegano a distanza. Per esporre un server locale su Internet sono di norma necessari diversi passaggi. ngrok spazza via tutte le possibili complicazioni.
L’approccio classico consiste nell’annotare il numeri di porta sul quale il server locale si è posto in ascolto quindi attivare il port forwarding sul router. Il sistema sul quale è in esecuzione il modulo server dovrebbe avere un indirizzo IP privato statico e il router, grazie al port forwarding, vi inoltrerà tutto il traffico ricevuto sull’indirizzo IP pubblico (esclusivamente sulla porta in ingresso indicata).
ELENIMARE TUTTE LE COMPLICAZIONI CON NGROK
ngrok è uno strumento potente e versatile utilizzato dagli sviluppatori per esporre server locali dietro NAT e firewall. È particolarmente utile per testare e sviluppare applicazioni Web, consentendo un accesso sicuro e temporaneo ai server locali, senza dover apportare modifiche sulla configurazione di rete o aprire porte specifiche.
Il servizio funziona creando un tunnel sicuro tra il server locale e un sistema remoto, cui è associato un indirizzo pubblico di tipo mnemonico. Di fatto, ngrok è un reverse proxy server multipiattaforma (è disponibile nelle versioni per Linux, macOS e Windows).
Come installare e usare ngrok
Sul sito ufficiale di ngrok, sono disponibili le istruzioni per l’installazione. Con le distribuzioni Linux che supportano la gestione dei pacchetti con Snap, è sufficiente aprire la finestra del terminale e digitare quanto segue per avviare l’installazione di ngrok:
snap install ngrok
Dopo l’installazione, è possibile autenticarsi creando un account su ngrok. Si ottiene così un token personale che permette di accedere a tutta una serie di funzionalità avanzate. Sempre dalla finestra del terminale Linux, basta digitare ngrok config add-authtoken seguito dal lungo token alfanumerico ottenuto consultando la propria area privata sul sito del progetto ngrok.
Supponendo di aver avviato un server locale che apre la porta 3000, essa non sarà raggiungibile per via del NAT e del firewall in esecuzione sul router. Digitando semplicemente il comando che segue, ngrok fornisce un indirizzo IP mnemonico che consente di raggiungere da remoto il servizio in ascolto sulla porta indicata, indipendentemente dalla configurazione della rete e dei dispositivi:
ngrok http 3000
Al posto di 3000, deve ovviamente essere indicato il numero della porta di comunicazione sulla quale il server locale è in ascolto.
L’URL pubblico HTTPS generato da ngrok
In risposta alla richiesta dell’utente, ngrok genera automaticamente un URL pubblico ovvero un indirizzo del tipo ngrok-free.App o similare che reindirizza tutto il traffico in ingresso verso il server locale. L’indirizzo mnemonico visualizzato da ngrok di solito inizia con un prefisso alfanumerico; si prosegue poi con un riferimento esplicito all’IP pubblico dell’utente; si chiude con il nome di dominio. Per maggiori informazioni, suggeriamo di fare riferimento alla struttura degli URL.
A qualunque utente remoto che debba collegarsi con il server locale, basta consegnare l’URL fornito da ngrok in corrispondenza della voce Forwarding. Tale indirizzo è anche cliccabile; inoltre, premendo il tasto destro e selezionando Copia collegamento, è possibile incollarlo con facilità in un’email, in un’applicazione di Messaggistica istantanea e così via.
Principali vantaggi di ngrok
Un servizio come ngrok, che ha alcune limitazioni nel piano free ma che risultano in molti casi accettabili (20.000 richieste al mese gestibili come valore massimo), offre numerosi vantaggi che lo rendono uno strumento indispensabile per molti sviluppatori.
Come abbiamo visto, non richiede configurazioni complesse del router o del firewall, fornisce tunnel sicuri utilizzando HTTPS, mette a disposizione una comoda dashboard Web che permette di ispezionare le richieste HTTP in tempo reale, rendendo il debugging più semplice.
Il servizio, inoltre, permette di testare applicazioni da dispositivi remoti, senza doverle distribuire pubblicamente. Inoltre, facilita lo sviluppo e il test di Webhook, rendendo più semplice l’integrazione con servizi esterni.
ngrok dispone anche di molteplici funzionalità avanzate che possono essere sbloccate, spesso, sottoscrivendo un piano a pagamento. Si possono ad esempio creare e utilizzare sottodomini personalizzati, esporre altri tipi di servizi non basati su HTTP e configurare tunnel persistenti (evitano di generare un nuovo URL ogni volta che si avvia ngrok).
In conclusione, ngrok si pone come uno strumento essenziale per gli sviluppatori che necessitano di esporre server locali su Internet in modo semplice e sicuro, eliminando le complessità legate alla configurazione di rete e ai firewall. Con la sua versatilità e le sue funzionalità avanzate, ngrok si conferma come un alleato prezioso per testare, sviluppare e integrare applicazioni web in modo efficiente e senza intoppi.