Skip to main content

Implementación de Cloudflare en Caddy


Caddy es un servidor web que gestiona automáticamentecertificados lasHTTPS conexionesde HTTPS.forma Sinautomática, embargo,pero alsi integrarlo conusas Cloudflare como DNS, puedes añadirmejorar unala capa extra de protecciónseguridad y rendimiento para tu dominio, como mitigación de ataques DDoS, ocultación deocultar la IP del servidor y cacheo opcional de contenidotu estático.

servidor.

EnPara estaeso, guía, aprenderás apuedes configurar el ACME DNS Challenge, conque permite validar tus dominios usando Cloudflare en Caddy,lugar integrandodel eltípico tokenchallenge necesario tanto en el Caddyfile como en tu entorno.HTTP.


1.

Requisitos Preparar el entorno

Antes de comenzar, asegúrate de tener lo siguiente:

previos
  • Un dominioDominio gestionado en Cloudflare.Cloudflare.
  • Caddy Caddy instalado en tu servidor.instalado.
  • AccesoUn alAPI panel de controlToken de Cloudflare paracon generarpermisos unDNS APIsobre Token.tu dominio.

2.

Paso Generar1: Crear el Cloudflare API Token

Paraen integrar Caddy con Cloudflare, necesitarás un API Token con permisos para gestionar los registros DNS.

Pasos para crear el token:

Cloudflare
  1. Inicia sesión

    Accede ena Cloudflare Dashboard.

En tu cuentaperfil, de Cloudflare.

Veentra a API Tokens. en tu perfil. Haz clic

Crea enun Createtoken Custom Token.

Configura los permisos:con:
  • Zone: DNS: Edit: Permite a Caddy realizar los ajustes necesarios en los registros DNS.
Limita los permisos(limitado al dominio que vayas a usar. Crea el token y cópialo. ¡Mantenlo privado y seguro!

Ejemplo de token (ficticio):
xyz123abc-LJkdfF3Hd8Fg12jMNkjh55vQP0Z


3. Configurar el ACME DNS Challenge en el Caddyfile

Para integrar Cloudflare al inicio de tu configuración de Caddy, añade este bloque al principio del Caddyfile:

# ACME DNS Challenge with Cloudflare
{
    acme_dns cloudflare xyz123abc-LJkdfF3Hd8Fg12jMNkjh55vQP0Z
    email admin@example.com
}

Explicación:

    acme_dns cloudflare: Indica a Caddy que use Cloudflare para manejar los desafíos DNS. Token: Sustituye xyz123abc-LJkdfF3Hd8Fg12jMNkjh55vQP0Z por el token que generaste. Email: Correo para notificaciones relacionadas con Caddy.

    4. Variables de entorno en cuestión).bashrc o .zshrc

    Para mayor seguridad y flexibilidad, es recomendable que guardes tu API Token como una variable de entorno en lugar de escribirlo directamente en el Caddyfile. Sigue estos pasos:

      Edita el archivo de configuración de tu shell, dependiendo de cuál uses:

        Para Bash:
        nano ~/.bashrc
        
        Para Zsh:
        nano ~/.zshrc
        

        AñadeGuarda lael siguientetoken líneaen alun finalsitio del archivo:seguro.

        # Environment variables
        export CLOUDFLARE_AUTH_TOKEN=xyz123abc-LJkdfF3Hd8Fg12jMNkjh55vQP0Z
        

        Aplica los cambios:

        source ~/.bashrc
        # o
        source ~/.zshrc
        

        De


        esta

        Paso forma,2: Añadir el token estaráal disponibleentorno

        Guarda el token como una variable de entorno ypara no necesitarásevitar escribirlo directamente en el Caddyfile.

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

        5.

        Paso 3: Configurar dominios en el Caddyfile

        ABloque continuación,global uncon ejemplosoporte sencillo de cómo configurar tus dominios en el Caddyfile, utilizando el ACMEpara DNS Challenge conusando Cloudflare:

        # ACME DNS Challenge with Cloudflare
        {
            acme_dns cloudflare xyz123abc-LJkdfF3Hd8Fg12jMNkjh55vQP0Z
            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
        }
        

        Explicación:

          El

          token Bloquese global: Configura Cloudflare como proveedortoma de DNSla Challengevariable conde elentorno tokenCLOUDFLARE_AUTH_TOKEN.

          Paso 4: Validar y el correo electrónico correspondiente.

          example.com y subdomain.example.com: Dominios que gestionará Caddy. reverse_proxy: Redirige las solicitudes a las IPs y puertos internos de tus servicios.

          6. Recargar la configuración derecargar Caddy

          Después de realizar los cambios, valida y recarga Caddy:

            Valida el archivo de configuración:

            caddy validate --config /etc/caddy/Caddyfile
            

            Recarga el servicio:

            sudo systemctl reload caddy
            

            7. Ventajas

            Beneficios de integrar Cloudflare

            Aunque Caddy ya gestiona los certificados HTTPS automáticamente, integrarusar Cloudflare añadecon importantes beneficios, como:

            Caddy
            • Ocultas Protecciónla DDoS:IP Cloudflarereal filtra tráfico malicioso antes de que llegue a tudel servidor.
            • Añades Ofuscaciónmitigación contra ataques DDoS.
            Puedes aprovechar el cacheo de la IP del servidor: Tu IP pública queda oculta, dificultando ataques directos. Mejora de rendimiento: Cloudflare puede cachear contenido estático, reduciendo la carga en tu servidor.estático.

            NotaDetalles finaladicionales

              • Modo SSL en Cloudflare: activa "Full (Strict)" para que Cloudflare acepte los certificados de Caddy.
            Compilar Caddy con módulos personalizados
            Si necesitas compilar Caddy con módulos personalizados, como el soporte paraDNS Cloudflare,personalizado: puedessi consultarno usas un binario precompilado, consulta esta guíaguía: detallada:
            👉 Usar binario de Caddy customizado

            Configurar el modo SSL en Cloudflare
            Para que los certificados generados por Caddy funcionen correctamente con Cloudflare, debes configurar el modo SSL adecuado. En el panel de configuración de Cloudflare, selecciona la opción "Full (Strict)" en la sección de SSL/TLS.

              "Full (Strict)": Garantiza encriptación de extremo a extremo y valida los certificados del servidor origen (como los de Caddy). Si tienes problemas, prueba entre "Strict (SSL-Only Origin Pull)" y "Full", aunque "Full (Strict)" es la opción recomendada. Así lo tengo configurado yo y funciona perfectamente para mis páginas gestionadas con Caddy.