Un Cloudflare Tunnel te permite exponer una app autoalojada a internet sin abrir ni un solo puerto del firewall, sin una IP estática y sin pagar por nada. En lugar de redirigir puertos en tu router, ejecutas en tu servidor un agente ligero llamado cloudflared; este abre una conexión saliente hacia el edge de Cloudflare, y el tráfico público viaja de vuelta a tu app por esa misma conexión. Esta guía recorre la configuración completa de Cloudflare Tunnel de dos formas (panel y CLI) y después explica cuándo un túnel es la herramienta equivocada.
¿Qué es un Cloudflare Tunnel y por qué usarlo?
Un Cloudflare Tunnel es un enlace persistente y únicamente saliente entre tu servidor de origen y la red de Cloudflare. Como la conexión se inicia desde tu lado, no hay puertos entrantes que abrir ni nada que un escáner de puertos pueda encontrar. El tráfico hacia app.yourdomain.com llega primero a Cloudflare y luego baja por el túnel existente hasta cloudflared, que lo entrega a tu servicio local, por ejemplo en localhost:8080. Obtienes gratis el certificado TLS de Cloudflare, su protección DDoS y su WAF por delante de la app, y la IP real de tu servidor permanece oculta. Según la documentación de Cloudflare Tunnel, los túneles funcionan en todos los planes, incluido el gratuito, sin límite en la cantidad que puedes crear. Esa combinación —cero puertos expuestos más un edge gestionado y gratuito— es la razón por la que quienes tienen un homelab y los equipos pequeños lo prefieren frente al clásico reenvío de puertos.
Antes de empezar: qué necesitas
La configuración es breve, pero tres requisitos son innegociables:
- Un dominio en Cloudflare. Los servidores de nombres de tu dominio deben apuntar a Cloudflare para que este pueda crear los registros DNS que enrutan hacia tu túnel. El dominio en sí puede ser barato; la cuenta de Cloudflare es gratuita.
- Un servicio en ejecución que exponer. Cualquier cosa que responda en un puerto local: una app de Node en
:3000, Nextcloud en:80, un panel en:8080. Si aún no tienes una máquina, empieza por nuestra guía de la primera hora segura en un VPS. cloudflaredinstalado en ese servidor. Es un único binario de Go disponible para Linux, macOS y Windows, empaquetado paraapt,brewy Docker a través del repositorio oficial de cloudflared.
Eso es todo. Sin regla de firewall entrante, sin configuración del router, sin arrendar una IPv4 pública.
Método 1: el túnel gestionado desde el panel (remote-managed)
Para la mayoría de la gente esta es la vía más rápida, y en 2026 Cloudflare dirige a los nuevos usuarios hacia aquí porque la configuración vive en la nube en vez de en un archivo que tengas que vigilar.
- Ve al panel de Zero Trust (
one.dash.cloudflare.com) → Networks → Tunnels → Create a tunnel → elige Cloudflared. - Ponle nombre al túnel y copia después el comando de instalación que genera Cloudflare. Incluye un token largo y tiene el aspecto de
sudo cloudflared service install <TUNNEL_TOKEN>. - Pega y ejecuta ese comando en tu servidor. Registra un servicio de
systemd(o un trabajo delaunchden macOS), arranca en el inicio y se reinicia tras un fallo. De vuelta en el panel, un estado verde Healthy significa que la conexión está activa. - Abre la pestaña Public Hostname → Add a public hostname. Define el subdominio (
app), el dominio y el servicio local (http://localhost:8080), y pulsa Save. Cloudflare crea automáticamente el CNAMEapp.yourdomain.com → <uuid>.cfargotunnel.com.
Visita https://app.yourdomain.com y ya estarás sirviendo por HTTPS con un certificado emitido por Cloudflare. Tu máquina local no necesita ninguna configuración de TLS.
Método 2: el túnel gestionado por CLI (locally-managed)
Si prefieres la configuración como código, quieres tenerlo todo en el control de versiones o vas a enrutar varios servicios por un mismo túnel, usa el flujo gestionado localmente. Los nombres de comando de abajo son los verbos estables y documentados de cloudflared:
# 1. Autenticar esta máquina (abre un navegador para elegir tu dominio)
cloudflared tunnel login
# 2. Crear un túnel con nombre: escribe un .json de credenciales e imprime un UUID
cloudflared tunnel create my-tunnel
# 3. Apuntar un hostname al túnel (crea el CNAME de DNS por ti)
cloudflared tunnel route dns my-tunnel app.yourdomain.com
Después describe tu enrutamiento en ~/.cloudflared/config.yml:
tunnel: my-tunnel
credentials-file: /home/user/.cloudflared/<UUID>.json
ingress:
- hostname: app.yourdomain.com
service: http://localhost:8080
- hostname: files.yourdomain.com
service: http://localhost:80
- service: http_status:404 # regla catch-all obligatoria, debe ir la última
Todo archivo de configuración debe terminar con una regla catch-all (la línea http_status:404), o cloudflared se negará a arrancar. Pruébalo en primer plano con cloudflared tunnel run my-tunnel, y una vez que funcione, instálalo como servicio para que sobreviva a los reinicios:
sudo cloudflared service install
sudo systemctl enable --now cloudflared
sudo systemctl status cloudflared # confirmar que está activo
sudo journalctl -u cloudflared -f # seguir los logs
Este es el enfoque que encaja limpiamente con un stack de autoalojamiento; consulta nuestra guía paso a paso para autoalojar en un VPS para integrarlo junto a Docker.
Pruébalo en 30 segundos con un quick tunnel
Antes de comprometerte con nada de lo anterior, puedes demostrar el concepto sin cuenta y sin DNS en absoluto:
cloudflared tunnel --url http://localhost:8080
Esto imprime una URL aleatoria https://<words>.trycloudflare.com que enruta directamente a tu puerto local y muere cuando detienes el proceso. Tiene límite de tasa y está pensada para demos, pruebas de webhooks y momentos de "¿puede un compañero ver esto ahora mismo?": no para producción. Pero es la forma más rápida de confirmar que tu app es accesible a través del edge de Cloudflare.
Cloudflare Tunnel frente a las alternativas
Un túnel no es la única manera de llegar a una app autoalojada. Así se compara con las opciones habituales en 2026:
| Método | ¿Puertos abiertos? | ¿IP pública necesaria? | Coste | Ideal para |
|---|---|---|---|---|
| Cloudflare Tunnel | No | No | Gratis | Apps web públicas tras un dominio |
| Reenvío de puertos + reverse proxy | Sí | Sí | Gratis (+ dominio) | Control total, sin terceros en la ruta |
| Tailscale / WireGuard | No | No | Nivel gratuito | Acceso privado solo para ti y tu equipo |
| ngrok | No | No | Nivel gratuito, de pago para dominios propios | Demos rápidas, webhooks de desarrollo |
| IP estática + reglas de firewall | Sí | Sí | Recargo del ISP | Servicios heredados o no HTTP |
En resumen: si quieres algo accesible públicamente en tu propio dominio con un edge gestionado por delante, gana un túnel. Si solo necesitas que tú llegues a la máquina, una VPN de malla como Tailscale es más sencilla y mantiene el tráfico privado de extremo a extremo.
Cuándo NO usar un Cloudflare Tunnel
Los túneles son excelentes, pero no son universales:
- Medios pesados que no son HTML. Las condiciones de Cloudflare restringen servir grandes volúmenes de vídeo o descargas de archivos que no formen parte de un sitio web. Un Plex o servidor de archivos autoalojado con muchos medios puede chocar con eso; un reverse proxy en tu propia IP evita el problema.
- Cloudflare ve tu tráfico. El TLS termina en el edge de Cloudflare, así que técnicamente pueden inspeccionar las peticiones. Para la mayoría de quienes autoalojan ese compromiso está bien; para configuraciones de confianza cero hacia terceros, no lo está.
- Necesitas un dominio en Cloudflare. No tener dominio, o un DNS que no puedas mover a Cloudflare, significa que los túneles con nombre no son una opción (los quick tunnels siguen funcionando para pruebas).
- Los protocolos sensibles a la latencia o no HTTP pueden ser más complicados y a veces requieren el producto de pago Spectrum de Cloudflare en lugar de un túnel simple.
Protégelo con Cloudflare Access
Exponer una app públicamente y autenticarla son dos tareas distintas. Un túnel se encarga del transporte; para controlar quién puede llegar a la app, coloca Cloudflare Access por delante del mismo hostname. Pone una página de inicio de sesión (Google, GitHub, PIN de un solo uso por correo) antes de tu app, y el plan Zero Trust de Cloudflare es gratuito para hasta 50 usuarios. Para un panel de administración o una interfaz de base de datos como la de nuestra guía para autoalojar Supabase, esa barrera de inicio de sesión importa más que el propio túnel.
Preguntas frecuentes
¿Puedo usar Cloudflare Tunnel gratis?
Sí. Los túneles están incluidos en todos los planes de Cloudflare, incluido el nivel gratuito, sin límite en el número de túneles ni de servicios enrutados. Solo necesitas un dominio (de pago) y una cuenta gratuita de Cloudflare. Las funciones de Zero Trust que añaden autenticación también son gratuitas para hasta 50 usuarios.
¿Cuál es el sentido de un Cloudflare Tunnel?
Permite que un servidor alcance internet público sin exponer ningún puerto entrante ni una IP pública. El servidor marca hacia Cloudflare, y las peticiones entrantes viajan de vuelta por esa conexión saliente. Obtienes HTTPS, protección DDoS y una IP de origen oculta sin tocar tu firewall ni tu router.
¿Puedo usar Cloudflare Tunnel sin un dominio?
Para un túnel permanente y con nombre, no: necesitas un dominio cuyo DNS gestione Cloudflare. Para pruebas desechables puedes ejecutar un quick tunnel (cloudflared tunnel --url ...), que te entrega una URL aleatoria de trycloudflare.com sin dominio ni cuenta.
¿Para qué puedes usar los Cloudflare Tunnels?
Para publicar apps autoalojadas (paneles, wikis, Nextcloud, servicios de homelab), exponer un servidor de desarrollo local para probar webhooks, dar acceso remoto por SSH o RDP a través de Cloudflare y poner un edge gestionado y gratuito por delante de cualquier servicio HTTP que corra en hardware que controles.
Sources
- Cloudflare — Cloudflare Tunnel documentation: qué es un túnel, que es únicamente saliente y que funciona en el plan gratuito.
- Cloudflare — Set up Cloudflare Tunnel: el comando
cloudflared service instally la opción--urldel quick tunnel. - Cloudflare — Tunnel configuration file: las reglas de ingress y la regla catch-all obligatoria.
- Cloudflare — Cloudflare One / Zero Trust: autenticación con Access por delante de un túnel.
- GitHub — cloudflare/cloudflared: el cliente del túnel, los paquetes de instalación y las plataformas compatibles.
Waqas Ahmed Waseer
Waqas Ahmed Waseer es desarrollador y creador de automatizaciones con más de 8 años construyendo sistemas en producción que usan más de 100.000 personas. Crea SaaS multiinquilino a medida, automatización con IA (n8n, flujos LLM, bots de WhatsApp) e infraestructura de hosting (WHM/cPanel, CloudLinux), y es el creador de WaSphere, FlowMaticX y la marca de hosting WaseerHost. Más de 100 proyectos entregados para pymes, agencias y startups financiadas.



