Skip to content

🚀 Quick Start - Mi primer sitio con Caddy

Objetivo: En 30 minutos tendrás un sitio funcionando con HTTPS automático y proxy a tu aplicación local.

Prerrequisitos: Windows con PowerShell, una aplicación corriendo en algún puerto local


Al final de este Quick Start tendrás:

  • Caddy 2.9.1 instalado y funcionando
  • Un sitio local con HTTPS (certificado automático)
  • Proxy configurado desde https://mi-app.local a tu aplicación
  • Base sólida para configuraciones más complejas

Ejemplo práctico: Si tienes una app ASP.NET en localhost:5000, podrás accederla via https://mi-app.local con certificado SSL válido.


  1. Descargar Caddy 2.9.1:

  2. Crear estructura y extraer:

    \tools\caddy\
    # Crear directorio (puedes usar cualquier ruta)
    mkdir C:\tools\caddy
    # Asegúrate de que quede: C:\tools\caddy\caddy.exe
  3. Verificar instalación:

    Terminal window
    cd C:\tools\caddy
    .\caddy.exe version
    # Debe mostrar: v2.9.1 h1:xxxxx

  1. Crear archivo HTML de prueba:

    Terminal window
    cd C:\tools\caddy
    # Crear una página simple para probar
    echo '<html><body><h1>¡Hola desde Caddy!</h1><p>Tu proxy está funcionando correctamente.</p></body></html>' > index.html
  2. Crear Caddyfile (¡importante: sin extensión!):

    Terminal window
    # Crear archivo Caddyfile (sin extensión .txt)
    New-Item -Path "Caddyfile" -ItemType File
  3. Editar Caddyfile y agregar esta configuración:

    Terminal window
    # Abrir con tu editor favorito
    notepad Caddyfile

Configuración inicial (copiar y pegar en Caddyfile):

Terminal window
# Configuración global para evitar conflictos con IIS
{
auto_https disable_redirects
}
# Tu primer sitio local
https://mi-primer-caddy.local {
# Certificado automático para desarrollo
tls internal
# Servir archivo HTML simple
file_server
root * .
}

  1. Abrir PowerShell como Administrador

  2. Agregar entrada al hosts:

    Terminal window
    Add-Content -Path C:\Windows\System32\drivers\etc\hosts -Value "127.0.0.1 mi-primer-caddy.local"
  3. Verificar que se agregó:

    Terminal window
    Get-Content C:\Windows\System32\drivers\etc\hosts | Select-String "mi-primer-caddy"

  1. Verificar archivos:

    Terminal window
    cd C:\tools\caddy
    dir
    # Debes ver:
    # caddy.exe
    # Caddyfile
    # index.html
  2. Ejecutar Caddy:

    Terminal window
    .\caddy.exe run --config .\Caddyfile
  3. ¡Probar tu sitio!:

    • Abrir navegador en: https://mi-primer-caddy.local
    • Primera vez: El navegador mostrará advertencia de certificado
    • Hacer clic en “Avanzado”“Continuar a mi-primer-caddy.local”

Logs exitosos que debes ver:

📝 2024/01/10 10:30:00 INFO using provided configuration
📝 2024/01/10 10:30:00 INFO tls.cache.maintenance started background certificate maintenance
📝 2024/01/10 10:30:00 INFO serving initial configuration

Deberías poder:

  • Acceder a tu sitio via https://mi-primer-caddy.local/
  • Ver certificado SSL válido (candado verde en navegador)
  • Caddy corre sin errores en la terminal

Error: bind: address already in use

Terminal window
# IIS puede estar usando puerto 443
iisreset /stop
# O verificar qué usa el puerto
netstat -ano | findstr ":443"

Error: https://mi-primer-caddy.local no resuelve

Terminal window
# Verificar archivo hosts
Get-Content C:\Windows\System32\drivers\etc\hosts | Select-String "mi-primer-caddy"
# Si no aparece, agregarlo de nuevo como admin
Add-Content -Path C:\Windows\System32\drivers\etc\hosts -Value "127.0.0.1 mi-primer-caddy.local"

Has configurado exitosamente:

  • Un sitio local con HTTPS automático
  • Proxy transparente a tu aplicación
  • Base para configuraciones más avanzadas
  • URLs más profesionales (https://mi-app.local vs http://localhost:5000)
  • HTTPS en desarrollo (simula producción)
  • Sin problemas de CORS entre diferentes puertos
  • Entiendes cómo funciona el Caddyfile básico
  • Sabes cómo agregar dominios locales
  • Tienes las herramientas de debugging básicas

Ahora que tienes lo básico funcionando, la progresión recomendada es:

  1. 🧩 Handlers Generales ⚠️ IMPRESCINDIBLE - Entiende los handlers que necesitarás para proyectos reales con microservicios

  2. 🧠 Conceptos Clave: Por qué necesitamos Caddy en nuestro stack y arquitectura distribuida

🔧 Para configurar tu proyecto específico:

Section titled “🔧 Para configurar tu proyecto específico:”
  1. ⚙️ Configuraciones Completas: Templates copy-paste para diferentes tipos de arquitectura
  1. 🚨 Troubleshooting: Soluciones a problemas comunes específicos

Diferencia entre Quick Start vs Proyectos Reales

Section titled “Diferencia entre Quick Start vs Proyectos Reales”

🎓 Lo que acabas de hacer:

  • Proxy simple con archivo HTML estático
  • Perfecto para entender conceptos básicos

🚀 Lo que necesitarás en proyectos reales:

  • Handlers especializados para diferentes microservicios
  • Routing inteligente basado en paths específicos
  • Headers personalizados para integración con APIs
  • Configuraciones multi-tenant (si aplica)
Terminal window
# Agregar más sitios al mismo Caddyfile
https://mi-app.local {
tls internal
reverse_proxy localhost:5000
}
https://mi-api.local {
tls internal
reverse_proxy localhost:7000
}
https://mi-vue.local {
tls internal
reverse_proxy localhost:5173 # Vite dev server
}