Appearance
Caddy Server
Un servicio de servidor web, como Apache y Nginx, es la pieza fundamental para la operación de tus aplicaciones web. Con Caddy tienes una alternativa eficiente y mas sencilla que los comunmente usados.
Caddy está escrito en lenguaje Go y facilita el uso de certificados seguros. Su archivo de configuración es legible y sencillo. Aunque Nginx pueda ser el rey en rendimiento, si buscas una opción equilibrada con mejor experiencia de uso para tu aplicación web, Caddy es una buena opción.
También tiene característica de Proxy Inverso, función usada frecuentemente en aplicaciones web y contenedores. Si piensas en Kubernetes quizás existan otras opciones más enfocadas en ese contexto (Cloud Native), pero si se trata de un entorno de desarrollo también puedes combinar Caddy con contenedores.
Ejemplo esencial de Caddyfile
El archivo de configuración para Caddy se denomina Caddyfile. Para dar un ejemplo inicial, podríamos definir algo como lo siguiente:
groovy
localhost:9443 {
root * /usr/share/caddy
file_server
tls internal
}Se indica el dominio, luego en el bloque la ruta del sitio por defecto, con
file_serverse habilita el uso de archivos estáticos (Por ejemplo, un Blog o Sitio con unindex.html), ytls internalpara certificados auto-firmados.
Instalación de Caddy
Caddy bajo macOS
Para instalar en macOS, se puede ejecutar:
bash
brew install caddyCaddy bajo Windows
Si bien puedes descargar el instalador para Windows desdel el sitio de Caddy, como alternativa puedes usar Chocolatey (de estar instalado), ejecutando:
bash
choco install caddyDe modo semejante también disponible para Scoop ejecutando:
scoop install caddy
Caddy bajo Linux Ubuntu
Para instalar con Linux Ubuntu puedes usar los siguientes comandos:
bash
sudo apt update
sudo apt install -y caddyCaddy bajo Docker
Para instalar usando Docker, se puede ejecutar:
bash
mkdir -p conf
vim conf/Caddyfile
docker pull docker.io/caddy
docker network create localnet
docker run -d -p 9443:9443 \
-v $PWD/conf:/etc/caddy \
-v caddy_data:/data \
--network localnet \
--name caddy \
caddyAntes de ejecutar
docker run ..., usa el ejemplo inicial del archivoCaddyfilepara crear el archivo en la carpetaconfy apuntar usar el puerto interno9443
Usando Caddy como Proxy inverso para una aplicación web
Para ilustrar el uso de Caddy como Proxy inverso con una aplicación web, podemos usar, por ejemplo, n8n. Para ello se edita el archivo Caddyfile agregando un bloque, veamos:
groovy
localhost:9443 {
root * /usr/share/caddy
file_server
handle_path /n8n/* {
reverse_proxy n8n:5678
}
tls internal
}Con
handle_pathse puede usar la ruta/n8ny luego se traduce al puerto5678
Se requiere el contenedor ejecutando, por ejemplo:docker run -d --network localnet --name n8n n8nio/n8n
De este modo podrías probar consultar n8n desde el navegador, o probar ejecutando:
bash
curl https://localhost:9443/n8nSi algo ha fallado prueba:
curl http://localhost:5678
También podría usarse dominio y subdominio, dependiendo de la configuración de tu servidor. Por ejemplo:
groovy
mydomain.vm:9443 {
root * /usr/share/caddy
file_server
tls internal
}
n8n.mydomain.vm:5678 {
reverse_proxy n8n:5678
tls internal
}Con
reverse_proxyse configura el subdominio del bloque