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

  1. Ingresa a la Consola de Cloudflare.

  2. Ve a Zero Trust > Tunnels y haz clic en Create a tunnel.

  3. Asigna un nombre al tunnel y haz clic en Save tunnel.

  4. 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

  1. Ve a Zero Trust > Tunnels y selecciona el tunnel creado.

  2. Agrega una nueva configuración de Public Hostname.

  3. Ingresa un subdominio (por ejemplo, tunnel.midominio.com).

  4. Configura el servicio en http://nginx:80.

  5. 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

Entradas más populares de este blog

Cambiar cursor por defecto en ArchLinux o Manjaro

Actualizando Proxmox en un Entorno de Pruebas

Habilitar el Archivado de Correo Electrónico para Usuarios en el Centro de Administración de Microsoft Exchange