🚀 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
🎯 ¿Qué vamos a lograr?
Section titled “🎯 ¿Qué vamos a lograr?”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.locala 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.
🚀 Paso 1: Instalación Rápida
Section titled “🚀 Paso 1: Instalación Rápida”-
Descargar Caddy 2.9.1:
- Ir a GitHub Release v2.9.1
- Descargar
caddy_2.9.1_windows_amd64.zip
-
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 -
Verificar instalación:
Terminal window cd C:\tools\caddy.\caddy.exe version# Debe mostrar: v2.9.1 h1:xxxxx
⚙️ Paso 2: Tu primer Caddyfile
Section titled “⚙️ Paso 2: Tu primer Caddyfile”Crear configuración básica
Section titled “Crear configuración básica”-
Crear archivo HTML de prueba:
Terminal window cd C:\tools\caddy# Crear una página simple para probarecho '<html><body><h1>¡Hola desde Caddy!</h1><p>Tu proxy está funcionando correctamente.</p></body></html>' > index.html -
Crear Caddyfile (¡importante: sin extensión!):
Terminal window # Crear archivo Caddyfile (sin extensión .txt)New-Item -Path "Caddyfile" -ItemType File -
Editar Caddyfile y agregar esta configuración:
Terminal window # Abrir con tu editor favoritonotepad Caddyfile
Configuración inicial (copiar y pegar en Caddyfile):
# Configuración global para evitar conflictos con IIS{ auto_https disable_redirects}
# Tu primer sitio localhttps://mi-primer-caddy.local { # Certificado automático para desarrollo tls internal
# Servir archivo HTML simple file_server root * .}🌐 Paso 3: Configurar DNS Local
Section titled “🌐 Paso 3: Configurar DNS Local”Agregar dominio al archivo hosts
Section titled “Agregar dominio al archivo hosts”-
Abrir PowerShell como Administrador
-
Agregar entrada al hosts:
Terminal window Add-Content -Path C:\Windows\System32\drivers\etc\hosts -Value "127.0.0.1 mi-primer-caddy.local" -
Verificar que se agregó:
Terminal window Get-Content C:\Windows\System32\drivers\etc\hosts | Select-String "mi-primer-caddy"
🔧 Paso 4: ¡Ejecutar Caddy!
Section titled “🔧 Paso 4: ¡Ejecutar Caddy!”Momento de la verdad
Section titled “Momento de la verdad”-
Verificar archivos:
Terminal window cd C:\tools\caddydir# Debes ver:# caddy.exe# Caddyfile# index.html -
Ejecutar Caddy:
Terminal window .\caddy.exe run --config .\Caddyfile -
¡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”
- Abrir navegador en:
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✅ Verificación Final
Section titled “✅ Verificación Final”¿Todo funcionó?
Section titled “¿Todo funcionó?”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
¿Si algo no funciona?
Section titled “¿Si algo no funciona?”Error: bind: address already in use
# IIS puede estar usando puerto 443iisreset /stop
# O verificar qué usa el puertonetstat -ano | findstr ":443"Error: https://mi-primer-caddy.local no resuelve
# Verificar archivo hostsGet-Content C:\Windows\System32\drivers\etc\hosts | Select-String "mi-primer-caddy"
# Si no aparece, agregarlo de nuevo como adminAdd-Content -Path C:\Windows\System32\drivers\etc\hosts -Value "127.0.0.1 mi-primer-caddy.local"# Verificar sintaxis del Caddyfile.\caddy.exe validate --config .\Caddyfile
# Ver configuración interpretada por Caddy.\caddy.exe config --config .\Caddyfile
# Test de conectividadTest-NetConnection mi-primer-caddy.local -Port 443
# Verificar DNS localnslookup mi-primer-caddy.local🎉 ¡Felicitaciones!
Section titled “🎉 ¡Felicitaciones!”Has configurado exitosamente:
✅ Caddy como Reverse Proxy
Section titled “✅ Caddy como Reverse Proxy”- Un sitio local con HTTPS automático
- Proxy transparente a tu aplicación
- Base para configuraciones más avanzadas
✅ Entorno de desarrollo mejorado
Section titled “✅ Entorno de desarrollo mejorado”- URLs más profesionales (
https://mi-app.localvshttp://localhost:5000) - HTTPS en desarrollo (simula producción)
- Sin problemas de CORS entre diferentes puertos
✅ Foundation sólida
Section titled “✅ Foundation sólida”- Entiendes cómo funciona el Caddyfile básico
- Sabes cómo agregar dominios locales
- Tienes las herramientas de debugging básicas
🔄 Próximos Pasos
Section titled “🔄 Próximos Pasos”Ahora que tienes lo básico funcionando, la progresión recomendada es:
📚 Para entender el contexto completo:
Section titled “📚 Para entender el contexto completo:”-
🧩 Handlers Generales ⚠️ IMPRESCINDIBLE - Entiende los handlers que necesitarás para proyectos reales con microservicios
-
🧠 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:”- ⚙️ Configuraciones Completas: Templates copy-paste para diferentes tipos de arquitectura
💻 Para uso diario:
Section titled “💻 Para uso diario:”- 🚨 Troubleshooting: Soluciones a problemas comunes específicos
💡 Tips para el Próximo Nivel
Section titled “💡 Tips para el Próximo Nivel”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)
Múltiples sitios en el mismo Caddyfile
Section titled “Múltiples sitios en el mismo Caddyfile”# Agregar más sitios al mismo Caddyfilehttps://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}