Cloudflare Tunnel: cos’è e come usarlo con Docker

| |

Immagina di poter mettere in piedi dei servizi su un tuo server (o magari un Raspberry Pi), e renderli pubblicamente raggiungibili via Internet senza la minima necessità di avere un IP pubblico, senza esporlo a rischi inutili, aggiungendo anche una protezione contro i DDoS e delle regole di Zero Trust che permettono una serie di blocchi in base all’utente che sta cercando di raggiungere quei servizi. Software di questo tipo sono generalmente pensati per uno scenario aziendale e per dei budget che non corrispondono – nella maggior parte dei casi – a quelli dell’amatore che tiene in casa le webapp e le alternative ai software commerciali più conosciuti.

Fortunatamente però, da qualche tempo ormai, Cloudflare offre questo tipo di soluzione anche a chi non ha necessità così tanto complesse e si può accontentare di una configurazione tutto sommato base (si fa per dire) per raggiungere lo scopo prefisso. La soluzione si chiama Cloudflare Tunnel ed è descritta nella pagina ufficiale che trovi all’indirizzo cloudflare.com/it-it/products/tunnel.

Cloudflare Tunnel: cos'è e come usarlo con Docker 1

Cloudflare Tunnel è un software di tunneling che ti consente di proteggere e crittografare rapidamente il traffico delle applicazioni verso qualsiasi tipo di infrastruttura, in modo da poter nascondere gli indirizzi IP del tuo server Web, bloccare gli attacchi diretti e tornare a fornire grandi applicazioni.

Non voglio scendere particolarmente in tecnicismi, anche perché – una volta registrati e avviata la prima configurazione del servizio – il sito web di Cloudflare riporta già tutte le informazioni necessarie per l’avvio del tunnel e la configurazione dello stesso. C’è un’area amministrativa ben fatta e divisa in sezioni e voci ben specifiche che ti aiuteranno a costruire il tunnel secondo la tua visione ed esigenza.

In parole povere

Un dominio pubblico (registrato o puntato su Cloudflare), un software che mette in contatto una mia macchina con l’infrastruttura di Cloudflare (che fa il suo lavoro 24 ore su 24, salvo rogne) e tanta sacrosanta pazienza per creare gli host, le regole di protezione, gli utenti abilitati (fino a 50 nell’offerta gratuita) e tutto il necessario per mettere e tenere in piedi l’accesso alle applicazioni che sto facendo girare in casa mia (nel mio specifico caso sul NUC e anche sui due Raspberry Pi che utilizzo) dando loro un vero e proprio indirizzo che chiunque – anche tu che stai leggendo – possa utilizzare senza sapere null’altro.

Un esempio pratico? Ho esposto un’installazione di Stirling-PDF all’indirizzo pdf.gioxx.org. Torna comoda a me, a mia moglie, ai miei parenti e – da adesso – a chiunque altro voglia. L’applicazione gira in un container Docker. Quel container Docker corrisponde – ovviamente – a un nome macchina all’interno della mia rete LAN e una porta ben specifica. Io non ho dovuto fare null’altro che dichiarare un “Public hostname” nel tunnel Cloudflare.

Cloudflared via Docker

Anche Cloudflared (il demone che permette di tenere in piedi la comunicazione tra il tuo server/Raspberry Pi e Cloudflare) può essere fatto girare tramite Docker, rendendo così più semplice la gestione e l’aggiornamento del software ogni volta che si rende necessario. Se vuoi evitare di usare Docker nessun problema, trovi tutte le versioni (per i vari sistemi) di Cloudflared su GitHub: github.com/cloudflare/cloudflared/releases, altrimenti andiamo avanti e scopri quanto è semplice! :-)

L’immagine è quella ufficiale pubblicata da Cloudflare, la trovi all’indirizzo hub.docker.com/r/cloudflare/cloudflared. Esistono diverse altre immagini modificate ma – almeno per partire – ti consiglio di non andare fuori dal seminato e dal conosciuto. Io ho semplicemente messo in piedi un Docker Compose perché via Portainer (del quale ti parlerò spero a breve) è decisamente più comodo.

services:
  cloudflared:
    image: cloudflare/cloudflared:latest
    container_name: cloudflared
    restart: unless-stopped
    command: tunnel run
    environment:
      - TUNNEL_TOKEN=${TUNNEL_TOKEN}

Ti consiglio caldamente – se stai muovendo i primi passi, ma anche se non stai utilizzando già Portainer – di modificare quel ${TUNNEL_TOKEN} con il vero token che ti verrà fornito da Cloudflare all’atto della creazione del tuo tunnel. Salvo errori, riuscirai ad avviare il container Docker senza il minimo problema. Potrai verificare tu stesso dando un’occhiata al log del container, oppure direttamente dall’interfaccia grafica di Cloudlfare Tunnel che ora ti dirà che il tunnel tra le due parti è attivo.

Ho impostato il riavvio automatico del container Docker fino a quando non sarai tu a decidere di spegnerlo per qualche motivo (restart: unless-stopped), ma puoi decidere anche (io generalmente lo sconsiglio) di impostarlo in restart: always per farlo avviare in automatico ogni volta che per qualche motivo cesserà di funzionare e si terminerà, avendo però cura di andare a dare un’occhiata al log quanto prima, perché probabilmente ci sarà un problema che ti toccherà risolvere per poter rimettere in piedi il tunnel tra te e l’infrastruttura di Cloudflare.

Nei prossimi articoli affronteremo insieme un percorso alla scoperta di altri container Docker interessanti, applicazioni e servizi fondamentali per la manutenzione del tuo parco soluzioni e possibili variazioni sul tema del software commerciale contro quello Open Source. Io ho già messo in piedi diverse soluzioni che mi hanno consentito di sostituire alcuni prodotti commerciali a pagamento, che ora girano in versione community in casa, esposti via Cloudflare Tunnel con risultati davvero ottimi. L’area commenti nel frattempo, come già sai, è a tua disposizione per ogni dubbio inerente questo articolo 😄👋

#KeepItSimple

Correzioni, suggerimenti? Lascia un commento nell'apposita area qui di seguito o contattami privatamente.
Ti è piaciuto l'articolo? Offrimi un caffè! ☕ :-)

Condividi l'articolo con i tuoi contatti:
Subscribe
Notify of
guest

This site uses Akismet to reduce spam. Learn how your comment data is processed.

0 Commenti
Oldest
Newest Most Voted
Inline Feedbacks
View all comments