Cloudflare Tunnel: publica tus aplicaciones sin abrir un solo puerto

Cloudflare Tunnel: publica tus aplicaciones sin abrir un solo puerto

Hace un tiempo te conté cómo conectar todos tus dispositivos con Tailscale para acceder a tus aplicaciones desde cualquier lugar. Funciona de maravilla… siempre que quien entra seas tú, o alguien de tu red privada.

¿Pero qué pasa cuando quieres que tu aplicación la vea cualquiera, con tu propio dominio, y sigues sin querer abrir puertos en el router? Ahí es donde entra Cloudflare Tunnel. Y créeme, cuando le coges el truco, es de esas herramientas que no entiendes cómo has vivido sin ella.

¿Qué es Cloudflare Tunnel?

La idea es muy sencilla, y por eso es tan potente. En lugar de abrir un puerto en tu router para que internet entre a tu servidor, instalas un pequeño programa, cloudflared, al lado de tu aplicación. Ese programa abre él mismo una conexión saliente hacia Cloudflare y la mantiene abierta.

Cuando alguien visita app.tudominio.com, la petición llega a Cloudflare y viaja por ese túnel hasta tu aplicación. Es decir:

  • No necesitas IP pública (funciona incluso detrás del CG-NAT de muchas operadoras o con una conexión móvil).
  • No abres ningún puerto de entrada. Puedes bloquear todo el tráfico entrante en el firewall. Lo único que necesita cloudflared es salir hacia Cloudflare por el puerto 7844.
  • Tu aplicación queda detrás de la red de Cloudflare, con su CDN, su WAF y su protección contra DDoS aplicadas automáticamente.
  • Cada instancia de cloudflared mantiene 4 conexiones con al menos 2 centros de datos de Cloudflare, así que si uno cae, el túnel sigue vivo.

¿Y cuánto cuesta? Nada. El túnel está disponible en todos los planes, incluido el gratuito. El único requisito es que tu dominio use las DNS de Cloudflare.

La forma rápida: un túnel en 30 segundos (y sin cuenta)

Si solo quieres enseñarle algo a alguien ahora mismo, tienes los Quick Tunnels. No necesitas ni cuenta ni dominio:

cloudflared tunnel --url http://localhost:8000

Te devuelve una URL aleatoria del tipo https://palabras-al-azar.trycloudflare.com. Desde octubre de 2026, además, puedes protegerla con un código por email para que solo entren las personas que tú digas:

cloudflared tunnel --url http://localhost:8000 --allowed-mail alguien@empresa.com

Eso sí, son solo para pruebas: la URL cambia cada vez, no hay garantía de disponibilidad y tienen límites (como un máximo de 200 peticiones simultáneas).

La forma recomendada: un túnel gestionado desde el panel

Para algo que se va a quedar, lo más cómodo es crear el túnel desde el panel de Cloudflare. Desde febrero de 2026 lo tienes en el panel principal, en Networking → Tunnels:

  1. Create a tunnel, le pones un nombre y eliges tu sistema operativo.
  2. El panel te da un comando con un token. Lo ejecutas en tu servidor:
sudo cloudflared service install <TOKEN>

O, si lo tuyo es Docker:

docker run -d --restart unless-stopped cloudflare/cloudflared:latest \
  tunnel --no-autoupdate run --token <TOKEN>
  1. Cuando el túnel aparezca como Healthy, vas a la pestaña Routes → Add route → Published application, eliges el subdominio (por ejemplo, app.tudominio.com) y le dices a qué servicio local apunta (http://localhost:8000).

Y ya está. Cloudflare crea el DNS, pone el certificado HTTPS y tu aplicación está publicada. Un consejo: trata el token como una contraseña. Quien lo tenga puede conectar su propio cloudflared a tu túnel.

Para los que preferimos todo en código: el túnel gestionado en local

Si te gusta tenerlo todo versionado (a mí sí), puedes gestionar el túnel con la línea de comandos y un fichero de configuración:

cloudflared tunnel login                              # te autentica en el navegador
cloudflared tunnel create mi-tunel                    # crea el túnel y sus credenciales
cloudflared tunnel route dns mi-tunel app.tudominio.com
cloudflared tunnel run mi-tunel

Y en ~/.cloudflared/config.yml defines qué se publica y dónde:

tunnel: <UUID>
credentials-file: /root/.cloudflared/<UUID>.json
ingress:
  - hostname: app.tudominio.com
    service: http://localhost:8000
  - hostname: n8n.tudominio.com
    service: http://localhost:5678
  - service: http_status:404   # obligatoria: la regla final para todo lo demás

Con un solo túnel puedes publicar tantas aplicaciones como quieras. Antes de arrancarlo, cloudflared tunnel ingress validate te dice si la configuración está bien.

Lo que lo hace realmente potente: Cloudflare Access

Publicar está muy bien. Pero ¿y si no quieres que cualquiera entre? Imagina el editor de n8n, un Grafana o el panel de administración de algo.

Aquí entra Cloudflare Access: delante de tu aplicación pones una política de acceso, y Cloudflare pide identificarse antes de que la petición llegue siquiera a tu servidor. Puedes permitir:

  • Emails concretos o dominios enteros (*@tuempresa.com).
  • Usuarios de Google, GitHub, Microsoft Entra ID, Okta…
  • O, la opción más simple, un código de un solo uso por email, válido durante 10 minutos.

¿Lo mejor? El plan gratuito de Zero Trust cubre hasta 50 usuarios. Para un equipo pequeño o para tus proyectos personales, es más que suficiente.

Y aún hay más…

  • SSH, VNC o RDP desde el navegador: puedes publicar un acceso SSH a tu servidor y abrirlo desde el navegador, sin cliente, protegido con Access.
  • Redes privadas: con cloudflared tunnel route ip add 10.0.0.0/24 mi-tunel y el cliente de Cloudflare One en tus dispositivos, accedes a toda una red interna. Aquí ya compite directamente con Tailscale.
  • Alta disponibilidad: puedes lanzar varias instancias de cloudflared con el mismo token (en Kubernetes, por ejemplo, con replicas: 2), y Cloudflare reparte y conmuta entre ellas.
  • Terraform: todo (túneles, rutas, políticas de Access) se puede gestionar como código.

Lo que tienes que saber antes de usarlo

No todo es perfecto, y prefiero contártelo:

  • Cloudflare ve tu tráfico. El TLS termina en sus servidores, así que el tráfico se descifra en su red antes de llegar a ti. Para la mayoría de casos no es un problema, pero si manejas datos muy sensibles, tenlo en cuenta. Con Tailscale Funnel, en cambio, el TLS termina en tu propio dispositivo.
  • No es para servir vídeo ni ficheros grandes. Los términos de servicio de los planes no Enterprise piden usar sus productos de pago (Stream, Images…) para eso.
  • Límite de subida: las peticiones de más de 100 MB se rechazan en los planes Free y Pro.
  • Dependes de un solo proveedor: DNS, certificados, autenticación y enrutamiento, todo en Cloudflare. Y cuando Cloudflare cae, como pasó el 18 de noviembre de 2025, lo notas (ese día fallaron los inicios de sesión de Access en medio mundo).

Cloudflare Tunnel, Tailscale o ngrok: ¿cuál uso?

Cloudflare TunnelTailscale (Serve / Funnel)ngrok (gratis)
Para quiénCualquiera en internet (con Access, solo quien tú digas)Serve: solo tu red privada. Funnel: públicoPúblico
Tu propio dominioSí (con las DNS en Cloudflare)No, solo *.ts.netSolo en los planes de pago
Dónde se descifra el tráficoEn CloudflareEn tu dispositivoEn ngrok
ExtrasWAF, DDoS, CDN, SSO, redes privadasVPN mesh, SSH, ACLsInspección de tráfico para desarrollo
Ideal paraPublicar aplicaciones autoalojadas en serioAcceso privado a tus cosasWebhooks y pruebas rápidas

Yo lo uso así: Tailscale para todo lo que solo tengo que ver yo, y Cloudflare Tunnel para lo que tiene que ver otra gente. Y muchas veces, los dos a la vez.

La lección de siempre: no abras puertos

Después de los ciberataques a la refrigeración de los supermercados, creo que no hace falta insistir mucho. Miles de controladores con su panel de administración abierto a internet, visibles en Shodan, a la espera de que alguien probara una contraseña por defecto.

Con un túnel y una política de Access delante, ese panel no tiene un puerto abierto que encontrar, y para llegar a él hay que identificarse primero. Trabajando cada día con infraestructuras críticas en el sector del agua, te aseguro que esto no es una comodidad… es lo mínimo.

Cierro con una reflexión

Durante años, publicar algo desde casa o desde un servidor propio significaba pelearte con el router, la IP dinámica, los certificados y el miedo a dejar algo abierto. Hoy es un comando y un token.

Conclusión: la mejor puerta es la que no existe. Y Cloudflare Tunnel te permite publicar sin abrir ninguna.


Fuentes