Caddy Reverse Proxy: SSL Automático y Configuración Simple para Homelab 2025

📋 TL;DR (Resumen Ejecutivo)

Caddy es un reverse proxy moderno que automatiza completamente la gestión de certificados SSL, eliminando la necesidad de configurar Certbot o herramientas similares. A diferencia de Traefik (que requiere labels complejas) o Nginx Proxy Manager (que necesita configuración manual por servicio), Caddy obtiene y renueva certificados SSL automáticamente con una configuración mínima en un simple archivo Caddyfile. En esta guía completa aprenderás a instalar Caddy desde cero, configurar múltiples servicios con SSL automático, implementar autenticación y headers de seguridad, e integrar Caddy con tu stack de homelab.

Lo que conseguirás:

  • ✅ Reverse proxy con SSL automático sin configuración manual
  • ✅ Configuración simple con archivo Caddyfile intuitivo
  • ✅ Soporte nativo para HTTP/3 y QUIC
  • ✅ Integración con Docker Compose
  • ✅ Autenticación básica y forward auth con Authelia

Tiempo de lectura: ~20 minutos | Nivel: Intermedio

📚 Tabla de Contenidos

  1. Introducción
  2. ¿Qué es Caddy y Por Qué Usarlo?
  3. Comparativa: Caddy vs Traefik vs Nginx Proxy Manager
  4. Instalación Paso a Paso
  5. Configuración del Caddyfile
  6. Casos de Uso Prácticos
  7. Integración con Stack de Homelab
  8. Troubleshooting Común
  9. Mejores Prácticas
  10. Preguntas Frecuentes
  11. Conclusión

> 📅 Última actualización: Noviembre 2025

> ✅ Verificado con: Caddy v2.7 – Noviembre 2025

> 🔄 Próxima revisión: Febrero 2026

Introducción {#introduccion}

¿Cansado de configurar Certbot, gestionar certificados SSL manualmente y lidiar con renovaciones que fallan? Si has usado Nginx tradicional o incluso Traefik, sabes que configurar SSL automático puede ser complicado. Necesitas configurar acme.sh, Certbot, o labels complejas en Traefik, y aún así las renovaciones pueden fallar silenciosamente.

El problema: Configurar un reverse proxy con SSL automático en homelabs tradicionalmente requiere:

  • Configurar herramientas externas (Certbot, acme.sh)
  • Gestionar renovaciones de certificados manualmente
  • Configuración compleja en archivos de texto o labels Docker
  • Troubleshooting cuando los certificados expiran

La solución: Caddy es un servidor web y reverse proxy escrito en Go que automatiza completamente la gestión de certificados SSL. Con un simple archivo Caddyfile, Caddy obtiene, renueva y gestiona certificados SSL automáticamente usando Let’s Encrypt, sin necesidad de herramientas adicionales.

En esta guía completa aprenderás:

  • Instalar Caddy en sistema o con Docker Compose
  • Configurar múltiples servicios con SSL automático usando un simple Caddyfile
  • Implementar autenticación básica y forward auth con Authelia
  • Configurar headers de seguridad y optimizaciones de rendimiento
  • Integrar Caddy con tu stack de homelab existente
  • Troubleshooting de errores comunes

Ya seas un entusiasta de homelab que busca simplicidad, un sysadmin que quiere menos mantenimiento, o un desarrollador que prefiere configuración declarativa, esta guía te dará todo lo necesario para implementar Caddy como reverse proxy con SSL automático.

¿Qué es Caddy y Por Qué Usarlo? {#que-es-caddy}

Robot punk configurando Caddy reverse proxy con SSL automático en homelab 2025

Definición

Caddy es un servidor web y reverse proxy de código abierto escrito en Go, lanzado en 2015. Se caracteriza por su enfoque en la simplicidad, automatización y seguridad. A diferencia de Nginx (que requiere configuración manual de SSL) o Traefik (que necesita labels complejas), Caddy está diseñado para ser «zero-config» en muchos aspectos, especialmente en la gestión de certificados SSL/TLS.

Características principales:

  • HTTPS Automático: Obtiene y renueva certificados SSL/TLS automáticamente mediante Let’s Encrypt sin configuración adicional
  • Configuración Sencilla: Utiliza un archivo Caddyfile con sintaxis intuitiva y legible
  • HTTP/2 y HTTP/3 nativos: Soporte completo para protocolos modernos, incluyendo QUIC
  • Arquitectura modular: Extensible mediante plugins y módulos
  • Escrito en Go: Alto rendimiento y eficiencia de recursos
  • Fair-Code License: Open source con algunas restricciones comerciales

¿Por Qué Caddy para Homelabs?

Ventajas específicas para homelabs:

  1. SSL Automático sin Configuración

– No necesitas configurar Certbot, acme.sh o herramientas similares

– Renovación automática de certificados sin intervención

– Soporte para wildcard certificates con DNS challenge

– Certificados válidos desde el primer arranque

  1. Configuración Minimalista

– Un solo archivo Caddyfile para toda la configuración

– Sintaxis clara y legible (más simple que Nginx o Traefik)

– Menos líneas de código que alternativas

– Ideal para usuarios que no quieren aprender sintaxis compleja

  1. Rendimiento Adecuado

– Escrito en Go (compilado, eficiente)

– Soporte HTTP/3 y QUIC (mejor latencia, especialmente en móviles)

– Suficiente para tráfico de homelab (no necesita optimización extrema)

  1. Integración con Docker

– Imagen oficial de Docker disponible

– Fácil de integrar en docker-compose

– Volúmenes para configuración y certificados

Cuándo Elegir Caddy

Elige Caddy si:

  • ✅ Quieres SSL automático sin configuración
  • ✅ Prefieres configuración simple (Caddyfile) sobre UI o labels complejas
  • ✅ No necesitas descubrimiento automático de servicios
  • ✅ Buscas HTTP/3 nativo
  • ✅ Tu homelab es estático o semi-estático

NO elijas Caddy si:

  • ❌ Necesitas descubrimiento automático de servicios Docker (mejor Traefik)
  • ❌ Prefieres interfaz web sobre archivos de configuración (mejor Nginx Proxy Manager)
  • ❌ Tienes servicios que cambian constantemente (mejor Traefik)
  • ❌ Necesitas load balancing muy avanzado

Comparativa: Caddy vs Traefik vs Nginx Proxy Manager {#comparativa}

Al considerar opciones para un reverse proxy en un homelab, es útil comparar Caddy con otras soluciones populares. Esta tabla te ayudará a decidir cuál se adapta mejor a tus necesidades:

CaracterísticaCaddyTraefikNginx Proxy Manager
SSL Automático✅ Totalmente automático (Let’s Encrypt)✅ Automático (requiere labels/config)✅ Automático (UI)
ConfiguraciónCaddyfile (simple)Labels Docker/YAML (complejo)Interfaz Web (fácil)
Curva de Aprendizaje⭐⭐ Baja⭐⭐⭐⭐ Alta⭐⭐ Baja
HTTP/3 Support✅ Nativo⚠️ Parcial (solo cliente)❌ No
HTTP/2 Support✅ Nativo✅ Nativo✅ Nativo
Descubrimiento Automático❌ Manual✅ Docker/K8s labels❌ Manual (UI)
Load Balancing✅ Básico✅ Avanzado✅ Básico
Rate Limiting✅ Con plugins✅ Nativo⚠️ Limitado
Autenticación✅ Basic Auth, Forward Auth✅ Forward Auth, OAuth✅ Basic Auth
Rendimiento⭐⭐⭐ Bueno⭐⭐⭐ Bueno⭐⭐⭐⭐ Excelente
Recursos (RAM)~50-100MB~100-200MB~100-150MB
Comunidad⭐⭐⭐ Media⭐⭐⭐⭐ Grande⭐⭐⭐⭐ Grande
Documentación⭐⭐⭐⭐ Excelente⭐⭐⭐⭐ Excelente⭐⭐⭐ Buena
Ideal paraSimplicidad, SSL fácilEntornos dinámicos, K8sUsuarios que prefieren UI

Análisis Detallado

Caddy – Ventajas:

  • SSL automático sin configuración adicional
  • Sintaxis Caddyfile muy simple y legible
  • HTTP/3 nativo (mejor latencia)
  • Menor consumo de recursos

Caddy – Desventajas:

  • Sin descubrimiento automático de servicios
  • Load balancing básico
  • Comunidad más pequeña que Traefik/Nginx

Traefik – Ventajas:

  • Auto-descubrimiento de servicios Docker/Kubernetes
  • Load balancing avanzado
  • Middlewares potentes
  • Ideal para entornos dinámicos

Traefik – Desventajas:

  • Curva de aprendizaje más pronunciada
  • Configuración más compleja (labels, YAML)
  • Sin HTTP/3 completo

Nginx Proxy Manager – Ventajas:

  • Interfaz web intuitiva
  • Fácil de usar para principiantes
  • Gestión visual de certificados

Nginx Proxy Manager – Desventajas:

  • Sin HTTP/3
  • Limitado en características avanzadas
  • Requiere configuración manual por servicio

Recomendación por Caso de Uso

Usa Caddy si:

  • Tienes servicios estáticos o semi-estáticos
  • Priorizas simplicidad sobre características avanzadas
  • Quieres SSL automático sin complicaciones
  • Prefieres configuración declarativa simple

Usa Traefik si:

  • Tienes muchos servicios que cambian frecuentemente
  • Necesitas auto-descubrimiento de servicios
  • Usas Kubernetes o Docker extensivamente
  • Necesitas load balancing avanzado

Usa Nginx Proxy Manager si:

  • Prefieres interfaz web sobre archivos de configuración
  • No te sientes cómodo editando archivos de texto
  • Quieres gestión visual de certificados
  • No necesitas características avanzadas

Instalación Paso a Paso {#instalacion}

Robot punk configurando Caddy reverse proxy con SSL automático en homelab 2025

Requisitos Previos

Antes de comenzar, asegúrate de tener:

  • Docker instalado y funcionando (para instalación con Docker)
  • O sistema Linux (Debian/Ubuntu) para instalación nativa
  • Dominio con acceso a DNS (para SSL automático)
  • Puertos 80 y 443 disponibles
  • Conocimientos básicos de línea de comandos

Opción 1: Instalación con Docker (Recomendado)

La instalación con Docker es la más sencilla y recomendada para homelabs. Crea un archivo docker-compose.yml:

version: '3.8'

services:
  caddy:
    image: caddy:latest
    container_name: caddy
    restart: unless-stopped
    ports:
      - "80:80"
      - "443:443"
      - "443:443/udp"  # Para HTTP/3 QUIC
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile
      - caddy_data:/data
      - caddy_config:/config
    networks:
      - homelab

volumes:
  caddy_data:
  caddy_config:

networks:
  homelab:
    driver: bridge

Crea un archivo Caddyfile básico:

example.com {
    reverse_proxy servicio:8080
}

Inicia Caddy:

docker-compose up -d

Opción 2: Instalación en Sistema (Debian/Ubuntu)

Si prefieres instalar Caddy directamente en el sistema:

# Actualizar sistema
sudo apt update && sudo apt upgrade -y

# Instalar dependencias
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https

# Añadir repositorio oficial de Caddy
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | \
  sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg

curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | \
  sudo tee /etc/apt/sources.list.d/caddy-stable.list

# Instalar Caddy
sudo apt update
sudo apt install caddy

# Verificar instalación
caddy version

Configura Caddy como servicio:

sudo systemctl enable caddy
sudo systemctl start caddy

Verificación de Instalación

Verifica que Caddy está funcionando:

# Con Docker
docker logs caddy

# En sistema
sudo systemctl status caddy

Deberías ver logs indicando que Caddy está escuchando en los puertos 80 y 443.

Configuración del Caddyfile {#configuracion-caddyfile}

Sintaxis Básica

El Caddyfile es el archivo de configuración principal de Caddy. Su sintaxis es simple y declarativa:

dominio.com {
    directiva valor
    directiva {
        opción valor
    }
}

Configuración Básica

Ejemplo mínimo:

example.com {
    reverse_proxy localhost:8080
}

Esta configuración:

  • Obtiene automáticamente un certificado SSL para example.com
  • Redirige todas las peticiones a localhost:8080
  • Gestiona la renovación del certificado automáticamente

Configuración Avanzada

Múltiples servicios:

{
    email admin@example.com
    log {
        output file /var/log/caddy/access.log
        format json
    }
}

# Portainer
portainer.example.com {
    reverse_proxy portainer:9000
    encode gzip
    header {
        X-Content-Type-Options "nosniff"
        X-Frame-Options "DENY"
    }
}

# n8n
n8n.example.com {
    reverse_proxy n8n:5678
    encode gzip
}

# Grafana
grafana.example.com {
    reverse_proxy grafana:3000
    encode gzip
    header {
        Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
    }
}

Directivas Comunes

Compresión:

encode gzip zstd

Headers de seguridad:

header {
    X-Content-Type-Options "nosniff"
    X-Frame-Options "DENY"
    X-XSS-Protection "1; mode=block"
    Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
}

Logging:

log {
    output file /var/log/caddy/access.log
    format json
    level INFO
}

Redirección HTTP a HTTPS (automático, pero puedes forzarlo):

example.com {
    redir https://{host}{uri} permanent
}

Casos de Uso Prácticos {#casos-uso}

Robot punk configurando Caddy reverse proxy con SSL automático en homelab 2025

Caso 1: Reverse Proxy Básico para Servicios Docker

Escenario: Tienes múltiples servicios Docker y quieres exponerlos con SSL automático.

docker-compose.yml:

version: '3.8'

services:
  caddy:
    image: caddy:latest
    container_name: caddy
    restart: unless-stopped
    ports:
      - "80:80"
      - "443:443"
      - "443:443/udp"
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile
      - caddy_data:/data
      - caddy_config:/config
    networks:
      - homelab

  portainer:
    image: portainer/portainer-ce:latest
    container_name: portainer
    restart: unless-stopped
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - portainer_data:/data
    networks:
      - homelab

  n8n:
    image: n8nio/n8n:latest
    container_name: n8n
    restart: unless-stopped
    volumes:
      - n8n_data:/home/node/.n8n
    networks:
      - homelab

volumes:
  caddy_data:
  caddy_config:
  portainer_data:
  n8n_data:

networks:
  homelab:
    driver: bridge

Caddyfile:

portainer.example.com {
    reverse_proxy portainer:9000
}

n8n.example.com {
    reverse_proxy n8n:5678
}

Caso 2: Autenticación Básica

Escenario: Quieres proteger un servicio con usuario/contraseña.

Generar hash de contraseña:

docker run --rm caddy:latest caddy hash-password
# Introduce tu contraseña cuando se solicite

Caddyfile:

private.example.com {
    basicauth {
        usuario $2a$14$hashedpasswordhere
    }
    reverse_proxy servicio:8080
}

Caso 3: Forward Auth con Authelia

Escenario: Integración con Authelia para SSO en múltiples servicios.

Caddyfile:

{
    email admin@example.com
}

# Authelia (debe estar accesible)
authelia.example.com {
    reverse_proxy authelia:9091
}

# Servicios protegidos con Authelia
portainer.example.com {
    forward_auth authelia:9091 {
        uri /api/verify?rd=https://authelia.example.com/
        copy_headers Remote-User Remote-Groups Remote-Name Remote-Email
    }
    reverse_proxy portainer:9000
}

n8n.example.com {
    forward_auth authelia:9091 {
        uri /api/verify?rd=https://authelia.example.com/
        copy_headers Remote-User Remote-Groups Remote-Name Remote-Email
    }
    reverse_proxy n8n:5678
}

Caso 4: Load Balancing

Escenario: Balancear carga entre múltiples instancias del mismo servicio.

Caddyfile:

app.example.com {
    reverse_proxy servicio1:8080 servicio2:8080 servicio3:8080 {
        lb_policy round_robin
        health_uri /health
        health_interval 10s
        health_timeout 5s
    }
}

Caso 5: Headers de Seguridad

Escenario: Añadir headers de seguridad a todos tus servicios.

Caddyfile:

servicio.example.com {
    header {
        X-Content-Type-Options "nosniff"
        X-Frame-Options "DENY"
        X-XSS-Protection "1; mode=block"
        Referrer-Policy "strict-origin-when-cross-origin"
        Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
        Content-Security-Policy "default-src 'self'"
    }
    reverse_proxy servicio:8080
}

Caso 6: Wildcard Subdomain

Escenario: Múltiples subdominios dinámicos.

Caddyfile:

*.example.com {
    reverse_proxy {
        to servicio:8080
        header_up Host {host}
        header_up X-Real-IP {remote}
    }
}

Integración con Stack de Homelab {#integracion-homelab}

Stack Completo con Docker Compose

Aquí tienes un ejemplo completo de stack de homelab con Caddy:

version: '3.8'

services:
  caddy:
    image: caddy:latest
    container_name: caddy
    restart: unless-stopped
    ports:
      - "80:80"
      - "443:443"
      - "443:443/udp"
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile
      - caddy_data:/data
      - caddy_config:/config
    networks:
      - homelab

  portainer:
    image: portainer/portainer-ce:latest
    container_name: portainer
    restart: unless-stopped
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - portainer_data:/data
    networks:
      - homelab

  n8n:
    image: n8nio/n8n:latest
    container_name: n8n
    restart: unless-stopped
    volumes:
      - n8n_data:/home/node/.n8n
    networks:
      - homelab

  grafana:
    image: grafana/grafana:latest
    container_name: grafana
    restart: unless-stopped
    volumes:
      - grafana_data:/var/lib/grafana
    networks:
      - homelab

volumes:
  caddy_data:
  caddy_config:
  portainer_data:
  n8n_data:
  grafana_data:

networks:
  homelab:
    driver: bridge

Caddyfile correspondiente:

{
    email admin@example.com
    log {
        output file /var/log/caddy/access.log
        format json
    }
}

portainer.example.com {
    reverse_proxy portainer:9000
    encode gzip
    header {
        X-Content-Type-Options "nosniff"
        X-Frame-Options "DENY"
    }
}

n8n.example.com {
    reverse_proxy n8n:5678
    encode gzip
}

grafana.example.com {
    reverse_proxy grafana:3000
    encode gzip
    header {
        Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
    }
}

Integración con Authelia

Para integrar Caddy con Authelia para SSO, consulta nuestra guía completa de Authelia + LLDAP: SSO y Gestión de Usuarios para tu Homelab.

Robot punk automatizando navegadores web con n8n Playwright nodo nativo 2025

Troubleshooting Común {#troubleshooting}

Robot punk configurando Caddy reverse proxy con SSL automático en homelab 2025

Error: «Certificate not obtained»

Problema: Caddy no puede obtener certificado SSL.

Soluciones:

  1. Verificar DNS:
dig example.com
   # Debe apuntar a tu IP pública
  1. Verificar puertos abiertos:
sudo ufw allow 80/tcp
   sudo ufw allow 443/tcp
  1. Verificar acceso desde Internet:
curl -I http://example.com
   # Debe responder (aunque sea HTTP)
  1. Usar DNS challenge (para wildcards):
{
        email tu@email.com
        acme_dns cloudflare {
            api_token tu_token
        }
    }
    
    *.example.com {
        reverse_proxy servicio:8080
    }

Error: «Connection refused» al backend

Problema: Caddy no puede conectar con el servicio backend.

Soluciones:

  1. Verificar que el servicio está corriendo:
docker ps | grep servicio
  1. Verificar red Docker:
docker network inspect homelab
   # Caddy y el servicio deben estar en la misma red
  1. Usar nombre de contenedor en lugar de localhost:
# ❌ Incorrecto
   reverse_proxy localhost:8080
   
   # ✅ Correcto (si están en misma red Docker)
   reverse_proxy servicio:8080

Error: «Too many redirects»

Problema: Bucle de redirecciones.

Soluciones:

  1. Verificar configuración de redirección:
# ❌ Puede causar bucle
   example.com {
       redir https://example.com permanent
   }
   
   # ✅ Mejor: dejar que Caddy maneje HTTPS automáticamente
   example.com {
       reverse_proxy servicio:8080
   }
  1. Verificar headers del backend:

– El backend no debe forzar HTTPS si Caddy ya lo maneja

Error: «502 Bad Gateway»

Problema: Caddy no puede comunicarse con el backend.

Soluciones:

  1. Verificar salud del backend:
curl http://servicio:8080/health
  1. Aumentar timeout:
example.com {
       reverse_proxy servicio:8080 {
           transport http {
               dial_timeout 10s
               response_header_timeout 30s
           }
       }
   }
  1. Verificar logs:
docker logs caddy

Certificados no se renuevan

Problema: Certificados expiran.

Soluciones:

  1. Verificar logs de renovación:
docker logs caddy | grep -i certificate
  1. Forzar renovación manual:
docker exec caddy caddy reload --config /etc/caddy/Caddyfile
  1. Verificar almacenamiento de certificados:
docker volume inspect caddy_data
   # Los certificados se guardan en /data/caddy/certificates

HTTP/3 no funciona

Problema: HTTP/3 (QUIC) no está activo.

Soluciones:

  1. Verificar puerto UDP 443:
ports:
     - "443:443/udp"  # Necesario para QUIC
  1. Verificar firewall:
sudo ufw allow 443/udp
  1. Verificar en navegador:

– Chrome: chrome://net-internals/#quic

– Debe mostrar conexiones QUIC activas

Mejores Prácticas {#mejores-practicas}

Seguridad

  1. Headers de Seguridad:
header {
       X-Content-Type-Options "nosniff"
       X-Frame-Options "DENY"
       Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
   }
  1. Rate Limiting:

– Implementar rate limiting para APIs públicas (requiere plugin)

– Prevenir ataques DDoS básicos

  1. Autenticación:

– Usar forward_auth con Authelia para SSO

– Basic auth solo para servicios internos

  1. Logging:
log {
       output file /var/log/caddy/access.log
       format json
       level INFO
   }

Rendimiento

  1. Compresión:
encode gzip zstd
  1. Caché (si aplica):
header Cache-Control "public, max-age=3600"
  1. HTTP/3:

– Habilitar QUIC para mejor latencia

– Especialmente útil para conexiones móviles

Mantenimiento

  1. Backups:
# Backup de certificados y configuración
   docker run --rm -v caddy_data:/data -v $(pwd):/backup \
     alpine tar czf /backup/caddy_backup_$(date +%Y%m%d).tar.gz /data
  1. Actualizaciones:
# Actualizar imagen de Caddy
   docker-compose pull caddy
   docker-compose up -d caddy
  1. Monitoreo:

– Monitorear logs de acceso

– Alertar sobre errores de certificados

– Monitorear uso de recursos

Robot punk automatizando navegadores web con n8n Playwright nodo nativo 2025

Preguntas Frecuentes {#faq}

¿Caddy es mejor que Traefik?

Depende de tus necesidades. Caddy es mejor si priorizas simplicidad y SSL automático sin configuración. Traefik es mejor si necesitas auto-descubrimiento de servicios y entornos dinámicos. Consulta la comparativa detallada en este artículo.

¿Funciona Caddy sin dominio?

Sí, pero con limitaciones. Caddy puede generar certificados autofirmados para IPs o dominios locales, pero los navegadores mostrarán advertencias de seguridad. Para SSL válido, necesitas un dominio real que apunte a tu IP.

¿Cómo renuevo certificados manualmente?

Caddy renueva certificados automáticamente. Si necesitas forzar una renovación:

docker exec caddy caddy reload --config /etc/caddy/Caddyfile

¿Puedo usar Caddy con Kubernetes?

Sí, Caddy tiene soporte para Kubernetes mediante el plugin caddy-kubernetes. Sin embargo, Traefik está más optimizado para Kubernetes con auto-descubrimiento nativo.

¿Caddy soporta HTTP/3?

Sí, Caddy soporta HTTP/3 y QUIC de forma nativa. Solo necesitas exponer el puerto UDP 443 en tu configuración Docker.

¿Cómo configuro autenticación?

Caddy soporta autenticación básica y forward auth. Para autenticación básica, usa basicauth. Para SSO, usa forward_auth con Authelia u otro proveedor. Consulta los casos de uso en este artículo.

¿Caddy es más rápido que Nginx?

En la mayoría de casos, Nginx es ligeramente más rápido en rendimiento puro. Sin embargo, Caddy ofrece mejor latencia con HTTP/3/QUIC, especialmente en conexiones móviles. Para homelabs, la diferencia es imperceptible.

¿Puedo usar Caddy con Docker Swarm?

Sí, Caddy funciona con Docker Swarm. Sin embargo, necesitarás configurar manualmente los servicios en el Caddyfile, ya que no tiene auto-descubrimiento como Traefik.

¿Cómo hago backup de certificados?

Los certificados se almacenan en el volumen caddy_data en la ruta /data/caddy/certificates. Haz backup del volumen completo:

docker run --rm -v caddy_data:/data -v $(pwd):/backup \
  alpine tar czf /backup/caddy_backup.tar.gz /data

¿Caddy funciona con Cloudflare?

Sí, Caddy funciona perfectamente con Cloudflare. Puedes usar Cloudflare como proxy (orange cloud) o como DNS simple. Para wildcard certificates, puedes usar el DNS challenge de Cloudflare.

¿Puedo usar Caddy con múltiples IPs?

Sí, puedes configurar múltiples IPs en el Caddyfile usando bloques separados o configurando bindings específicos. Consulta la documentación oficial para casos avanzados.

¿Cómo monitoreo Caddy?

Caddy expone métricas en el endpoint /metrics (si está habilitado) y puedes configurar logging detallado. También puedes usar herramientas como Prometheus para monitoreo avanzado.

¿Caddy soporta WebSockets?

Sí, Caddy soporta WebSockets de forma nativa. No necesitas configuración adicional, simplemente usa reverse_proxy y Caddy manejará la actualización del protocolo automáticamente.

¿Puedo usar Caddy con Let’s Encrypt wildcard?

Sí, Caddy soporta certificados wildcard de Let’s Encrypt usando DNS challenge. Necesitas configurar el proveedor DNS (Cloudflare, Route53, etc.) en el Caddyfile.

¿Cómo migro de Nginx a Caddy?

La migración es relativamente sencilla. Traduce las directivas de Nginx al Caddyfile. La sintaxis de Caddy es más simple, así que la mayoría de configuraciones se simplifican. Consulta la documentación oficial para guías de migración.

Robot punk configurando Caddy reverse proxy con SSL automático en homelab 2025

Conclusión {#conclusion}

Caddy es una excelente opción para homelabs que buscan simplicidad y SSL automático sin complicaciones. Su configuración minimalista con el archivo Caddyfile, junto con la gestión automática de certificados SSL, lo convierte en una herramienta valiosa para mejorar la seguridad y accesibilidad de servicios en entornos domésticos.

Puntos clave a recordar:

  • ✅ Caddy automatiza completamente la gestión de certificados SSL
  • ✅ La configuración con Caddyfile es simple e intuitiva
  • ✅ Soporte nativo para HTTP/3 y QUIC mejora la latencia
  • ✅ Ideal para homelabs con servicios estáticos o semi-estáticos
  • ✅ Integración sencilla con Docker Compose

Próximos pasos recomendados:

  1. Descarga nuestros ejemplos: Visita nuestro repositorio de ejemplos en GitHub para configuraciones listas para usar
  2. Integra con Authelia: Consulta nuestra guía de Authelia + LLDAP para SSO completo
  3. Explora características avanzadas: Rate limiting, load balancing, y más en la documentación oficial de Caddy

Artículos relacionados:

¿Tienes dudas sobre Caddy o quieres compartir tu experiencia? Únete a nuestra comunidad y comparte tus configuraciones.

📦 Descargar Ejemplos

Todos los ejemplos de este artículo están disponibles en nuestro repositorio de GitHub:

👉 https://github.com/ziruelen/learningaiagents/tree/main/caddy

Incluye:

  • Docker Compose completo
  • Múltiples Caddyfiles de ejemplo
  • Configuración con Authelia
  • Guía de troubleshooting

Por ziru

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x
El Diario IA
Resumen de privacidad

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.