Configurando un Cloudflare Tunnel con Docker
Cloudflare Tunnel permite exponer servicios internos a Internet de manera segura sin necesidad de abrir puertos en el firewall. En este tutorial, aprenderemos a crear un Cloudflare Tunnel, instalar un contenedor Docker con Cloudflared y conectar un servicio web simple utilizando Nginx o Apache.
Prerrequisitos
Antes de comenzar, asegúrate de tener:
Una cuenta en Cloudflare
Un dominio configurado en Cloudflare
Docker y Docker Compose instalados en el servidor
Paso 1: Crear el Cloudflare Tunnel
Ingresa a la Consola de Cloudflare.
Ve a Zero Trust > Tunnels y haz clic en Create a tunnel.
Asigna un nombre al tunnel y haz clic en Save tunnel.
Descarga el token de autenticación que se proporcionará.
Paso 2: Crear un contenedor Docker con Cloudflared
Crea un archivo docker-compose.yml
con el siguiente contenido:
version: '3'
services:
cloudflared:
image: cloudflare/cloudflared:latest
container_name: cloudflared
restart: unless-stopped
command: tunnel --no-autoupdate run --token <AQUI_EL_TOKEN>
Reemplaza <AQUI_EL_TOKEN>
con el token de autenticación obtenido en el paso anterior.
Luego, inicia el contenedor ejecutando:
docker-compose up -d
Esto conectará el servidor al tunnel de Cloudflare.
Paso 3: Configurar un servicio web con Nginx
Para probar el tunnel, vamos a desplegar un servicio web con Nginx. Crea un archivo docker-compose.yml
actualizado:
version: '3'
services:
nginx:
image: nginx:latest
container_name: nginx
restart: unless-stopped
ports:
- "8080:80"
volumes:
- ./html:/usr/share/nginx/html
cloudflared:
image: cloudflare/cloudflared:latest
container_name: cloudflared
restart: unless-stopped
command: tunnel --no-autoupdate run --token <AQUI_EL_TOKEN>
Crea una carpeta llamada html
y dentro de ella un archivo index.html
con contenido básico:
<!DOCTYPE html>
<html>
<head>
<title>Bienvenido</title>
</head>
<body>
<h1>Cloudflare Tunnel con Docker</h1>
</body>
</html>
Inicia los contenedores:
docker-compose up -d
Paso 4: Configurar el DNS en Cloudflare
Ve a Zero Trust > Tunnels y selecciona el tunnel creado.
Agrega una nueva configuración de Public Hostname.
Ingresa un subdominio (por ejemplo,
tunnel.midominio.com
).Configura el servicio en
http://nginx:80
.Guarda los cambios y prueba accediendo a
https://tunnel.midominio.com
en tu navegador.
Conclusión
Con estos pasos, hemos desplegado un Cloudflare Tunnel utilizando Docker y configurado un servicio web accesible de forma segura a través de Cloudflare. Este método permite exponer servicios internos sin abrir puertos en el firewall, mejorando la seguridad y facilidad de gestión.
Comentarios
Publicar un comentario