¿Qué es Caddy Web Server?
Caddy es un servidor web escrito en el lenguaje de programación Go. Su diseño se centra en la facilidad de uso y en la configuración automática de HTTPS mediante Let’s Encrypt. El archivo de configuración principal se llama Caddyfile y utiliza una sintaxis legible que permite definir sitios, redirecciones y otras directivas en pocas líneas.


Características principales
- Obtención y renovación automática de certificados TLS con Let’s Encrypt (u otras AC).
- Soporte nativo de HTTP/2.
- Servicio de archivos estáticos desde el directorio de trabajo actual.
- Modularidad: funciones como compresión, encabezados personalizados, autenticación y proveedores de DNS se añaden mediante módulos.
- Posibilidad de usar Caddy como biblioteca dentro de aplicaciones Go.
- Ejecutable único que depende únicamente de las bibliotecas estándar del sistema (glibc, etc.).
Instalación en Ubuntu 22.04 o 24.04 LTS
El método recomendado es utilizar el script oficial de instalación, que descarga el binario más reciente de Caddy y lo coloca en /usr/local/bin.
-
Abra una terminal y ejecute:
curl -1sSfL https://getcaddy.com | bash -
El script solicitará su contraseña para copiar el binario a una ubicación con privilegios de root. Al finalizar, verá algo similar a:
Downloading Caddy for linux/amd64... Download verification OK Extracting... Putting caddy in /usr/local/bin (may require password) Successfully installed -
Después de la instalación, el binario está disponible como
caddyen la ruta del sistema.
Configuración básica
Crear la estructura de directorios
Caddy espera ciertos directorios para su funcionamiento como servicio. Los crearemos y ajustaremos sus permisos.
sudo mkdir -p /etc/caddy sudo chown -R root:www-data /etc/caddy sudo mkdir -p /etc/ssl/caddy sudo chown -R www-data:www-data /etc/ssl/caddy sudo chmod 0770 /etc/ssl/caddy sudo mkdir -p /var/www sudo chown www-data:www-data /var/wwwDescargar la unidad systemd
El proyecto Caddy proporciona un archivo de unidad para que el servidor se ejecute como servicio.
sudo curl -s https://raw.githubusercontent.com/caddyserver/dist/master/init/caddy.service -o /etc/systemd/system/caddy.serviceEn este archivo se definen variables importantes:
Environment=CADDYPATH=/etc/ssl/caddyindica dónde se almacenarán los certificados.ExecStart=/usr/local/bin/caddy run --environ --config=/etc/caddy/Caddyfilelanza el proceso usando elCaddyfileubicado en/etc/caddy.
Crear un Caddyfile inicial
Crearemos un archivo de configuración vacío y luego lo poblaremos con un ejemplo básico.
sudo touch /etc/caddy/CaddyfileRecargar systemd y habilitar el servicio
sudo systemctl daemon-reload sudo systemctl enable caddyAbrir puertos en el firewall (ufw)
Si utiliza ufw, permita el tráfico HTTP y HTTPS:
sudo ufw allow http/tcp sudo ufw allow https/tcpEditar el Caddyfile para un sitio de prueba
Abra el archivo con su editor favorito y añada el siguiente bloque, sustituyendo
example.compor el dominio que intente usar (olocalhostpara pruebas locales).example.com { root /var/www encode gzip tls [email protected] }La directiva
tlsindica a Caddy que solicite y renueve automáticamente un certificado Let's Encrypt usando la dirección de correo electrónico proporcionada. Si prefiere no especificar un correo, puede usar simplementetls {}y Caddy utilizará el registro predeterminado de Let's Encrypt.Iniciar el servicio
sudo systemctl start caddyCompruebe su estado:
sudo systemctl status caddyDebería mostrar
active (running).Crear una página de prueba
Para verificar que Caddy sirve contenido, coloque un archivo HTML en el directorio raíz definido anteriormente.
echo '<h1>Sitio de prueba con Caddy</h1>' | sudo tee /var/www/index.htmlAbra un navegador y navegue a
https://example.com(ohttp://localhost:2015si ejecuta Caddy manualmente sin TLS). Debería ver el mensaje “Sitio de prueba con Caddy”.Notas sobre versiones antiguas de Ubuntu
Ubuntu 16.04 y 18.04 alcanzaron su fin de vida (EOL) en abril de 2024. En esas versiones pueden faltar bibliotecas del sistema necesarias para ejecutar el binario actual de Caddy 2.x. Se recomienda utilizar Ubuntu 22.04 LTS o una versión más reciente para garantizar compatibilidad y recibir actualizaciones de seguridad.
Fuentes consultadas
