Introducción
Cloudflare Tunnel permite publicar de forma segura sus servicios locales en Internet, sin abrir puertos y sin gestionar HTTPS manualmente. En esta guía, aprenderá a configurar un túnel en combinación con Docker Compose para proxificar automáticamente el acceso a los contenedores deseados, como si fuera un sitio web público normal.
¿Por qué es necesario?
- No tienes una IP pública — y no la necesitas.
- Sin reenvío de puertos en el router o firewall.
- Cloudflare proporciona HTTPS, WAF, protección contra DDoS y bots.
- Todo se puede ejecutar en contenedores — sin configuración adicional de nginx, certbot, etc.
Ejemplo: publicando una aplicación web a través de un túnel
Supongamos que tenemos un contenedor my-app que se ejecuta en http://my-app:3000. Queremos que sea accesible a través de https://app.example.com.
Paso 1. Preparación de Cloudflare
-
Regístrese y agregue su dominio en Cloudflare.
-
Instale
cloudflaredlocalmente y realice la autenticación:
1cloudflared login
- Cree un túnel:
1 cloudflared tunnel create my-tunnel
- Enrute el DNS:
1 cloudflared tunnel route dns my-tunnel app.example.com
- Copie el archivo
.jsoncon las credenciales (generalmente ubicado en~/.cloudflared/) al directorio del proyecto, por ejemplo,./cloudflared.
Paso 2. Estructura del proyecto
1proyecto/
2├── docker-compose.yml
3├── cloudflared/
4│ ├── config.yml
5│ └── <aquí su tunnel-id>.json
6
Paso 3. config.yml — configuración del túnel
1tunnel: my-tunnel
2credentials-file: /etc/cloudflared/<aquí su tunnel-id>.json
3
4ingress:
5 - hostname: app.example.com
6 service: http://my-app:3000
7 - service: http_status:404
Paso 4. docker-compose.yml
1version: '3.8'
2
3services:
4 my-app:
5 image: your-image
6 container_name: my-app
7 expose:
8 - 3000
9 networks:
10 - app-network
11
12 cloudflared:
13 image: cloudflare/cloudflared:latest
14 container_name: cloudflared
15 restart: always
16 command: tunnel --config /etc/cloudflared/config.yml run
17 volumes:
18 - ./cloudflared:/etc/cloudflared
19 networks:
20 - app-network
21
22networks:
23 app-network:
24 driver: bridge
Paso 5. Lanzamiento
1docker compose up -d
Ahora, al acceder a https://app.example.com, llegará a su contenedor my-app, sin abrir puertos hacia el exterior.
Conclusión
El uso de Cloudflare Tunnel en combinación con Docker Compose permite:
- Simplificar la publicación de servicios.
- Eliminar la necesidad de configuración manual de HTTPS.
- Aumentar la seguridad sin complicaciones con
iptablesy nginx.
Todo funciona en contenedores — transparente y sin trucos. Es una excelente manera de proxificar interfaces de administración, paneles o APIs que no desea exponer directamente.