Come Condividere il Tuo Sito WordPress o Drupal Locale con Cloudflare Tunnel (Gratuito)
Quando si sviluppa in locale con DDEV, potrebbe essere necessario condividere il proprio lavoro con i clienti, testare webhook da servizi esterni o collaborare con membri del team remoti. Cloudflare Tunnel fornisce un modo sicuro e semplice per esporre i siti di sviluppo locali a Internet senza aprire porte del firewall o gestire configurazioni di rete complesse.
Cos'è Cloudflare Tunnel?
Cloudflare Tunnel (precedentemente Argo Tunnel) fa parte della soluzione di rete Zero Trust di Cloudflare. Crea una connessione sicura, solo in uscita, dalla tua macchina locale alla rete edge di Cloudflare, che quindi instrada il traffico pubblico ai tuoi servizi locali. Questo significa:
- Nessuna porta in ingresso aperta - Il tuo firewall rimane sicuro
- Nessun IP pubblico richiesto - Funziona dietro NAT e firewall aziendali
- Gratuito per uso di sviluppo - I tunnel rapidi di Cloudflare sono gratuiti
- HTTPS per impostazione predefinita - Crittografia SSL/TLS automatica
- Configurazione semplice - Basta un comando per iniziare
Cos'è DDEV?
DDEV è un ambiente di sviluppo locale basato su Docker che semplifica la configurazione di progetti PHP (Drupal, WordPress, Laravel, ecc.) con una configurazione minima. Fornisce:
- Container preconfigurati per web, database e altri servizi
- Supporto per più versioni di PHP
- Certificati SSL integrati per HTTPS locale
- Strumenti da riga di comando per attività di sviluppo comuni
Usare DDEV con Cloudflare Tunnel ti permette di eseguire il tuo sito in locale e condividerlo pubblicamente quando necessario.
Prerequisiti
Prima di iniziare, assicurati di avere:
- Una macchina Mac, Linux o Windows con Docker installato
- DDEV installato e configurato (guida all'installazione ufficiale o consulta la mia guida alla configurazione di DDEV per WordPress e Drupal)
- Un progetto DDEV funzionante (useremo siti di esempio come
myproject.ddev.site
eclient-site.ddev.site
) - Familiarità di base con la riga di comando
- Nessun account Cloudflare richiesto per i tunnel rapidi (il metodo trattato in questa guida)
Nota: Se desideri URL persistenti con domini personalizzati (trattati più avanti), avrai bisogno di un account Cloudflare gratuito.
Passaggio 1: Installare Cloudflared
Il demone cloudflared
è il client che crea la connessione tunnel. L'installazione varia in base alla piattaforma:
macOS (Homebrew)
brew install cloudflared
Linux (Debian/Ubuntu)
wget -q https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb
sudo dpkg -i cloudflared-linux-amd64.deb
Linux (RHEL/CentOS)
wget -q https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-x86_64.rpm
sudo rpm -i cloudflared-linux-x86_64.rpm
Windows
Scarica il programma di installazione dalla pagina dei download di Cloudflare o usa Chocolatey:
choco install cloudflared
Verifica l'installazione:
cloudflared --version
Passaggio 2: Avviare il Sito DDEV
Assicurati che il tuo progetto DDEV sia in esecuzione. Naviga nella directory del tuo progetto e avvia DDEV:
cd /percorso/al/tuo/progetto
ddev start
Il tuo sito sarà disponibile in locale all'indirizzo, ad esempio, https://tuoprogetto.ddev.site
. Verifica che funzioni aprendolo nel browser.
Passaggio 3: Creare un Cloudflare Tunnel per il Sito DDEV
Qui le cose si fanno interessanti. Esegui un comando e cloudflared crea un tunnel con un URL pubblico automaticamente. Nessuna configurazione di account, nessuna autenticazione, nessuna configurazione richiesta. La sintassi di base è:
cloudflared tunnel --url <url-locale> --http-host-header <nome-host>
Esempio 1: Sito del Mio Progetto
cloudflared tunnel --url https://myproject.ddev.site/ --http-host-header myproject.ddev.site
Esempio 2: Sito del Cliente
cloudflared tunnel --url https://client-site.ddev.site/ --http-host-header client-site.ddev.site
Dopo aver eseguito questo comando, vedrai un output simile a:
2025-10-14T10:30:15Z INF Grazie per aver provato Cloudflare Tunnel. Farlo, senza un account Cloudflare, è un modo rapido per sperimentare e provare. Tuttavia, sii consapevole che questi Tunnel senza account non hanno garanzia di uptime. Se intendi utilizzare i Tunnel in produzione, dovresti utilizzare un tunnel denominato pre-creato seguendo: https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/
2025-10-14T10:30:15Z INF Richiesta di un nuovo Tunnel rapido su trycloudflare.com...
2025-10-14T10:30:16Z INF +--------------------------------------------------------------------------------------------+
2025-10-14T10:30:16Z INF | Il tuo Tunnel rapido è stato creato! Visitalo a (potrebbe volerci del tempo per essere raggiungibile): |
2025-10-14T10:30:16Z INF | https://randomly-generated-subdomain.trycloudflare.com |
2025-10-14T10:30:16Z INF +--------------------------------------------------------------------------------------------+
Copia l'URL generato (ad esempio, https://randomly-generated-subdomain.trycloudflare.com
) e condividilo con chiunque abbia bisogno di accedere al tuo sito locale!
Comprensione dei Parametri del Comando
Analizziamo cosa fa ciascun parametro:
--url
: L'URL locale dove è in esecuzione il tuo sito DDEV. Usa HTTPS se il tuo sito DDEV utilizza SSL (cosa che fa per impostazione predefinita).--http-host-header
: Questo è fondamentale per DDEV. Indica a cloudflared di inoltrare il nome host corretto nell'header Host HTTP. DDEV instrada le richieste in base a questo header, quindi senza di esso, otterrai un "404 Not Found" o vedrai il sito sbagliato.
Perché è Necessario --http-host-header?
Il router di DDEV utilizza l'hosting virtuale, il che significa che più siti possono essere eseguiti sullo stesso indirizzo IP e porta. Il router determina quale sito servire in base all'header Host
nella richiesta HTTP.
Quando il traffico arriva tramite Cloudflare Tunnel, l'header Host sarebbe normalmente il dominio generato da Cloudflare (come randomly-generated-subdomain.trycloudflare.com
). Specificando --http-host-header myproject.ddev.site
, sovrascriviamo questo e assicuriamo che DDEV veda il nome host corretto.
Utilizzo di Tunnel Denominati per URL Persistenti
Il metodo del tunnel rapido sopra è perfetto per la condivisione ad hoc, ma l'URL cambia ogni volta che esegui il comando e non c'è garanzia di uptime. Se hai bisogno di un URL persistente con il tuo dominio personalizzato (come myproject.example.com
), puoi creare un tunnel denominato. Questo richiede un account Cloudflare gratuito.
1. Autenticazione con Cloudflare
cloudflared tunnel login
Questo aprirà un browser per l'autenticazione con il tuo account Cloudflare.
2. Creare un Tunnel Denominato
cloudflared tunnel create my-ddev-tunnel
Questo genera un ID tunnel e un file di credenziali.
3. Creare un File di Configurazione
Crea ~/.cloudflared/config.yml
:
tunnel: <ID-TUNNEL>
credentials-file: /Users/tuonomeutente/.cloudflared/<ID-TUNNEL>.json
ingress:
- hostname: mysite.example.com
service: https://myproject.ddev.site
originRequest:
httpHostHeader: myproject.ddev.site
noTLSVerify: true
- service: http_status:404
Nota: noTLSVerify: true
è necessario perché DDEV utilizza certificati autofirmati.
4. Instradare il Dominio
cloudflared tunnel route dns my-ddev-tunnel mysite.example.com
5. Eseguire il Tunnel
cloudflared tunnel run my-ddev-tunnel
Il tuo sito è ora accessibile all'indirizzo https://mysite.example.com
con un URL persistente!
Casi d'Uso Comuni
1. Demo per Client
Condividi siti in fase di sviluppo con i clienti senza distribuirli su server di staging:
cloudflared tunnel --url https://client-demo.ddev.site/ --http-host-header client-demo.ddev.site
Invia l'URL generato al tuo cliente per un feedback immediato.
2. Test dei Webhook
Testa webhook da servizi come Stripe, GitHub o Twilio che richiedono un URL pubblico:
cloudflared tunnel --url https://webhooks.ddev.site/ --http-host-header webhooks.ddev.site
Configura il webhook nel servizio esterno affinché punti al tuo URL Cloudflare.
3. Test su Dispositivi Mobili
Testa i tuoi design responsive su dispositivi mobili reali senza essere sulla stessa rete:
cloudflared tunnel --url https://mobile-test.ddev.site/ --http-host-header mobile-test.ddev.site
Apri l'URL Cloudflare sul tuo telefono per testare su dispositivi reali.
4. Collaborazione Remota
Condividi il tuo ambiente di sviluppo con i membri del team remoti:
cloudflared tunnel --url https://team-collab.ddev.site/ --http-host-header team-collab.ddev.site
Il tuo team può accedere al sito come se lo stesse eseguendo in locale.
Risoluzione dei Problemi
Si ottiene un 404 o il Sito Sbagliato
Assicurati di utilizzare il parametro --http-host-header
con il nome host DDEV corretto:
cloudflared tunnel --url https://mysite.ddev.site/ --http-host-header mysite.ddev.site
Errori del Certificato SSL
Se stai utilizzando un tunnel denominato con un file di configurazione, aggiungi noTLSVerify: true
alla sezione richiesta di origine poiché DDEV utilizza certificati autofirmati.
Il Tunnel Non Si Avvia
Verifica se cloudflared è già in esecuzione:
ps aux | grep cloudflared
Termina eventuali processi esistenti se necessario:
pkill cloudflared
Il Sito DDEV Non È Accessibile in Locale
Verifica che il tuo sito DDEV sia in esecuzione:
ddev describe
Assicurati che l'URL che stai utilizzando corrisponda all'output.
Considerazioni sulla Sicurezza
Sebbene Cloudflare Tunnel sia sicuro per progettazione, tieni a mente questi punti:
- Non esporre database di produzione - Tunnel solo siti di sviluppo con dati non sensibili
- I tunnel rapidi sono temporanei - Gli URL scadono e non dovrebbero essere considerati per la produzione
- Usa l'autenticazione - Per progetti sensibili, aggiungi l'autenticazione Cloudflare Access ai tuoi tunnel denominati
- Monitora l'accesso al tunnel - Controlla Cloudflare Analytics per vedere chi sta accedendo ai tuoi tunnel
- Spegni i tunnel quando hai finito - Usa Ctrl+C per interrompere il tunnel quando hai finito
Alternativa: Comando Share Integrato di DDEV
DDEV ha anche un comando integrato ddev share
che utilizza ngrok. Tuttavia, Cloudflare Tunnel offre diversi vantaggi:
- Gratuito senza limiti di frequenza (livello gratuito di ngrok ha limitazioni)
- Migliori prestazioni grazie alla rete globale di Cloudflare
- Integrazione con Cloudflare Zero Trust per funzionalità avanzate
- Tunnel denominati persistenti con domini personalizzati
Detto questo, ddev share
è ancora più semplice se hai solo bisogno di qualcosa di veloce e non vuoi installare strumenti aggiuntivi.
Semplificare il Processo con ddev-share-cf
Per rendere questo processo ancora più semplice, ho creato l'addon DDEV ddev-share-cf. Questo addon integra Cloudflare Tunnel direttamente in DDEV, consentendoti di condividere i tuoi siti locali con un semplice comando senza gestire manualmente cloudflared o file di configurazione.
Installazione
Installa l'addon con un singolo comando:
ddev get davo20019/ddev-share-cf
Utilizzo
Una volta installato, esegui semplicemente:
ddev share-cf
L'addon gestisce automaticamente tutta la configurazione del tunnel, rendendolo semplice come il comando share integrato di DDEV ma con tutti i vantaggi di Cloudflare Tunnel.