Cómo Compartir tu Sitio Local de WordPress o Drupal con Cloudflare Tunnel (Gratis)
Al desarrollar localmente con DDEV, es posible que necesites compartir tu trabajo con clientes, probar webhooks de servicios externos o colaborar con miembros del equipo remotos. Cloudflare Tunnel proporciona una forma segura y sencilla de exponer tus sitios de desarrollo locales a internet sin abrir puertos de firewall ni lidiar con configuraciones de red complejas.
¿Qué es Cloudflare Tunnel?
Cloudflare Tunnel (anteriormente Argo Tunnel) forma parte de la solución de red Zero Trust de Cloudflare. Crea una conexión segura, de solo salida, desde tu máquina local a la red perimetral (edge network) de Cloudflare, que luego enruta el tráfico público a tus servicios locales. Esto significa:
- Sin puertos de entrada abiertos: Tu firewall permanece seguro
- No se requiere IP pública: Funciona detrás de NAT y firewalls corporativos
- Gratis para uso de desarrollo: Los túneles rápidos de Cloudflare son gratuitos
- HTTPS por defecto: Cifrado SSL/TLS automático
- Configuración sencilla: Solo un comando para empezar
¿Qué es DDEV?
DDEV es un entorno de desarrollo local basado en Docker que facilita la configuración de proyectos PHP (Drupal, WordPress, Laravel, etc.) con una configuración mínima. Proporciona:
- Contenedores preconfigurados para web, base de datos y otros servicios
- Soporte para múltiples versiones de PHP
- Certificados SSL integrados para HTTPS local
- Herramientas de línea de comandos para tareas comunes de desarrollo
Usar DDEV con Cloudflare Tunnel te permite ejecutar tu sitio localmente y compartirlo públicamente cuando sea necesario.
Prerrequisitos
Antes de empezar, asegúrate de tener:
- Una máquina Mac, Linux o Windows con Docker instalado
- DDEV instalado y configurado (guía de instalación oficial o consulta mi guía sobre cómo configurar DDEV para WordPress y Drupal)
- Un proyecto DDEV funcional (usaremos sitios de ejemplo como
myproject.ddev.site
yclient-site.ddev.site
) - Familiaridad básica con la línea de comandos
- No se requiere cuenta de Cloudflare para túneles rápidos (el método cubierto en esta guía)
Nota: Si deseas URL persistentes con dominios personalizados (cubierto más adelante), necesitarás una cuenta gratuita de Cloudflare.
Paso 1: Instalar Cloudflared
El demonio cloudflared
es el cliente que crea la conexión del túnel. La instalación varía según la plataforma:
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
Descarga el instalador desde la página de descargas de Cloudflare o usa Chocolatey:
choco install cloudflared
Verifica la instalación:
cloudflared --version
Paso 2: Iniciar tu sitio DDEV
Asegúrate de que tu proyecto DDEV se esté ejecutando. Navega a tu directorio de proyecto e inicia DDEV:
cd /ruta/a/tu/proyecto
ddev start
Tu sitio estará disponible localmente en algo como https://tuproyecto.ddev.site
. Verifica que funciona abriéndolo en tu navegador.
Paso 3: Crear un Cloudflare Tunnel hacia tu sitio DDEV
Aquí es donde se pone interesante. Ejecuta un comando y cloudflared crea un túnel con una URL pública automáticamente. No se requiere configuración de cuenta, autenticación ni configuración. La sintaxis básica es:
cloudflared tunnel --url <url-local> --http-host-header <nombre-host>
Ejemplo 1: Sitio de Mi Proyecto
cloudflared tunnel --url https://myproject.ddev.site/ --http-host-header myproject.ddev.site
Ejemplo 2: Sitio del Cliente
cloudflared tunnel --url https://client-site.ddev.site/ --http-host-header client-site.ddev.site
Después de ejecutar este comando, verás una salida similar a:
2025-10-14T10:30:15Z INF Gracias por probar Cloudflare Tunnel. Hacerlo, sin una cuenta de Cloudflare, es una forma rápida de experimentar y probar. Sin embargo, ten en cuenta que estos Túneles sin cuenta no tienen garantía de tiempo de actividad. Si tienes la intención de usar Túneles en producción, deberías usar un túnel con nombre precreado siguiendo: https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/
2025-10-14T10:30:15Z INF Solicitando nuevo túnel rápido en trycloudflare.com...
2025-10-14T10:30:16Z INF +--------------------------------------------------------------------------------------------+
2025-10-14T10:30:16Z INF | ¡Tu túnel rápido ha sido creado! Visítalo en (puede tardar un tiempo en ser accesible): |
2025-10-14T10:30:16Z INF | https://randomly-generated-subdomain.trycloudflare.com |
2025-10-14T10:30:16Z INF +--------------------------------------------------------------------------------------------+
Copia la URL generada (ej. https://randomly-generated-subdomain.trycloudflare.com
) y compártela con cualquiera que necesite acceso a tu sitio local.
Entendiendo los Parámetros del Comando
Analicemos qué hace cada parámetro:
--url
: La URL local donde se está ejecutando tu sitio DDEV. Usa HTTPS si tu sitio DDEV utiliza SSL (lo cual hace por defecto).--http-host-header
: Esto es crucial para DDEV. Le dice a cloudflared que reenvíe el nombre de host correcto en la cabecera Host de HTTP. DDEV enruta las solicitudes basándose en esta cabecera, por lo que sin ella, obtendrás un "404 No Encontrado" o verás el sitio incorrecto.
¿Por qué es necesario --http-host-header?
El enrutador de DDEV utiliza el alojamiento virtual (virtual hosting), lo que significa que múltiples sitios pueden ejecutarse en la misma dirección IP y puerto. El enrutador determina qué sitio servir basándose en la cabecera Host
en la solicitud HTTP.
Cuando el tráfico llega a través de Cloudflare Tunnel, la cabecera Host normalmente sería el dominio generado por Cloudflare (como randomly-generated-subdomain.trycloudflare.com
). Al especificar --http-host-header myproject.ddev.site
, anulamos esto y aseguramos que DDEV vea el nombre de host correcto.
Uso de Túneles con Nombre para URL Persistentes
El método de túnel rápido anterior es perfecto para compartir ad-hoc, pero la URL cambia cada vez que ejecutas el comando y no hay garantía de tiempo de actividad. Si necesitas una URL persistente con tu propio dominio personalizado (como myproject.example.com
), puedes crear un túnel con nombre. Esto requiere una cuenta gratuita de Cloudflare.
1. Autenticar con Cloudflare
cloudflared tunnel login
Esto abrirá un navegador para autenticarte con tu cuenta de Cloudflare.
2. Crear un Túnel con Nombre
cloudflared tunnel create my-ddev-tunnel
Esto genera un ID de túnel y un archivo de credenciales.
3. Crear un Archivo de Configuración
Crea ~/.cloudflared/config.yml
:
tunnel: <ID-DEL-TUNEL>
credentials-file: /Users/tunombredeusuario/.cloudflared/<ID-DEL-TUNEL>.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
es necesario porque DDEV utiliza certificados autofirmados.
4. Enrutar tu Dominio
cloudflared tunnel route dns my-ddev-tunnel mysite.example.com
5. Ejecutar el Túnel
cloudflared tunnel run my-ddev-tunnel
¡Tu sitio ahora es accesible en https://mysite.example.com
con una URL persistente!
Casos de Uso Comunes
1. Demos para Clientes
Comparte sitios en desarrollo con clientes sin desplegarlos en servidores de staging:
cloudflared tunnel --url https://client-demo.ddev.site/ --http-host-header client-demo.ddev.site
Envía la URL generada a tu cliente para obtener comentarios instantáneos.
2. Pruebas de Webhook
Prueba webhooks de servicios como Stripe, GitHub o Twilio que requieren una URL pública:
cloudflared tunnel --url https://webhooks.ddev.site/ --http-host-header webhooks.ddev.site
Configura el webhook en el servicio externo para que apunte a tu URL de Cloudflare.
3. Pruebas en Dispositivos Móviles
Prueba tus diseños responsivos en dispositivos móviles reales sin estar en la misma red:
cloudflared tunnel --url https://mobile-test.ddev.site/ --http-host-header mobile-test.ddev.site
Abre la URL de Cloudflare en tu teléfono para probar en dispositivos reales.
4. Colaboración Remota
Comparte tu entorno de desarrollo con compañeros de equipo remotos:
cloudflared tunnel --url https://team-collab.ddev.site/ --http-host-header team-collab.ddev.site
Tu equipo puede acceder al sitio como si lo estuviera ejecutando localmente.
Solución de Problemas
Obtener un 404 o el Sitio Incorrecto
Asegúrate de estar utilizando el parámetro --http-host-header
con el nombre de host DDEV correcto:
cloudflared tunnel --url https://mysite.ddev.site/ --http-host-header mysite.ddev.site
Errores de Certificado SSL
Si estás utilizando un túnel con nombre con un archivo de configuración, añade noTLSVerify: true
a la sección de solicitud de origen ya que DDEV utiliza certificados autofirmados.
El Túnel No Inicia
Verifica si cloudflared ya se está ejecutando:
ps aux | grep cloudflared
Termina cualquier proceso existente si es necesario:
pkill cloudflared
El Sitio DDEV No es Accesible Localmente
Verifica que tu sitio DDEV se esté ejecutando:
ddev describe
Asegúrate de que la URL que estás utilizando coincida con la salida.
Consideraciones de Seguridad
Aunque Cloudflare Tunnel es seguro por diseño, ten en cuenta estos puntos:
- No expongas bases de datos de producción: Solo canaliza sitios de desarrollo con datos no sensibles
- Los túneles rápidos son temporales: Las URL caducan y no deben usarse para producción
- Usa autenticación: Para proyectos sensibles, añade autenticación de Cloudflare Access a tus túneles con nombre
- Supervisa el acceso al túnel: Revisa Cloudflare Analytics para ver quién accede a tus túneles
- Apaga los túneles cuando termines: Usa Ctrl+C para detener el túnel cuando hayas terminado
Alternativa: Comando Share Integrado de DDEV
DDEV también tiene un comando integrado ddev share
que utiliza ngrok. Sin embargo, Cloudflare Tunnel ofrece varias ventajas:
- Gratis sin límites de tasa (el nivel gratuito de ngrok tiene límites)
- Mejor rendimiento a través de la red global de Cloudflare
- Integración con Cloudflare Zero Trust para funciones avanzadas
- Túneles con nombre persistentes con dominios personalizados
Dicho esto, ddev share
es aún más sencillo si solo necesitas algo rápido y no quieres instalar herramientas adicionales.
Simplificando el Proceso con ddev-share-cf
Para hacer este proceso aún más fácil, he creado el complemento DDEV ddev-share-cf. Este complemento integra Cloudflare Tunnel directamente en DDEV, lo que te permite compartir tus sitios locales con un simple comando sin gestionar manualmente cloudflared o archivos de configuración.
Instalación
Instala el complemento con un solo comando:
ddev get davo20019/ddev-share-cf
Uso
Una vez instalado, simplemente ejecuta:
ddev share-cf
El complemento gestiona automáticamente toda la configuración del túnel, haciendo que sea tan fácil como el comando share integrado de DDEV pero con todos los beneficios de Cloudflare Tunnel.