Skip to main content

Implementación de Cloudflare en Caddy


Caddy gestiona certificados HTTPS de forma automática, pero si usas Cloudflare como DNS, puedes mejorar la seguridad y ocultar la IP de tu servidor. Para eso, puedes configurar el ACME DNS Challenge, que permite validar tus dominios usando Cloudflare en lugar del típico challenge HTTP.


Requisitos previos

  • Dominio gestionado en Cloudflare.
  • Caddy instalado.
  • Un API Token de Cloudflare con permisos DNS sobre tu dominio.

Paso 1: Crear el API Token en Cloudflare

  1. Accede a Cloudflare Dashboard.

  2. En tu perfil, entra a API Tokens.

  3. Crea un token con:

    • Zone:DNS:Edit (limitado al dominio en cuestión).
  4. Guarda el token en un sitio seguro.


Paso 2: Añadir el token al entorno

Guarda el token como variable de entorno para evitar escribirlo directamente en el Caddyfile.

# En ~/.bashrc o ~/.zshrc
export CLOUDFLARE_AUTH_TOKEN=tu_token_aqui
source ~/.bashrc  # o ~/.zshrc

Paso 3: Configurar el Caddyfile

Bloque global con soporte para DNS Challenge usando Cloudflare:

{
    acme_dns cloudflare
    email admin@example.com
}

example.com {
    reverse_proxy http://192.168.1.10:8080
}

subdomain.example.com {
    reverse_proxy http://192.168.1.10:8081
}

El token se toma de la variable de entorno CLOUDFLARE_AUTH_TOKEN.


Paso 4: Validar y recargar Caddy

caddy validate --config /etc/caddy/Caddyfile
sudo systemctl reload caddy

Beneficios de usar Cloudflare con Caddy

  • Ocultas la IP real del servidor.
  • Añades mitigación contra ataques DDoS.
  • Puedes aprovechar el cacheo de contenido estático.

Detalles adicionales

  • Modo SSL en Cloudflare: activa "Full (Strict)" para que Cloudflare acepte los certificados de Caddy.
  • Compilar Caddy con soporte DNS personalizado: si no usas un binario precompilado, consulta esta guía: 👉 Usar binario de Caddy customizado