# Guía: Instalar y Configurar Caddy Server en Ubuntu 24.04

Si alguna vez has peleado configurando certificados SSL con Nginx o Apache, te va a encantar **Caddy**. Es un servidor web moderno y un proxy inverso increíblemente rápido que incluye una característica estrella: **HTTPS automático y renovaciones automáticas por defecto**.

En este tutorial, vamos a instalar la versión oficial de Caddy en nuestro servidor Ubuntu 24.04 (previamente securizado) y lo dejaremos listo para servir nuestra primera web o aplicación.

* * *

### Paso 1: Instalar dependencias necesarias

Conéctate a tu servidor por SSH con tu usuario administrador (con permisos sudo) y asegúrate de tener instalados los paquetes básicos para poder descargar repositorios externos de forma segura:

```plaintext
sudo apt update
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
```

### Paso 2: Añadir el repositorio oficial de Caddy

Para asegurarnos de tener siempre la última versión estable, vamos a descargar e instalar la llave GPG oficial de Caddy y a añadir su repositorio a nuestro sistema.

Primero, descarga la llave GPG:

```plaintext
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
```

Luego, añade el repositorio a tu lista de fuentes (sources.list):

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

### Paso 3: Instalar Caddy

Ahora que el sistema sabe de dónde descargar Caddy, simplemente actualiza la lista de paquetes e instálalo:

```plaintext
sudo apt update
sudo apt install caddy -y
```

Una vez terminada la instalación, Caddy se inicia automáticamente como un servicio del sistema. Puedes verificar que está corriendo felizmente con:

```plaintext
sudo systemctl status caddy
```

### Paso 4: Abrir los puertos en el Firewall (UFW)

Si seguiste nuestra guía de seguridad anterior, recordarás que cerramos todos los puertos excepto el del SSH. Para que el mundo pueda ver tus páginas web, necesitamos abrir los puertos HTTP (80) y HTTPS (443):

```plaintext
sudo ufw allow 80,443/tcp
sudo ufw reload
```

Si ahora introduces la IP pública de tu servidor en tu navegador web, verás la página de bienvenida por defecto de Caddy. ¡Funciona!

### Paso 5: Conociendo el Caddyfile

Toda la magia de Caddy ocurre en un único archivo de configuración llamado **Caddyfile**. Se encuentra en la ruta `/etc/caddy/Caddyfile`.

Para editarlo, usa tu editor de texto favorito:

```plaintext
sudo nano /etc/caddy/Caddyfile
```

Un ejemplo básico para servir una web estática o hacer un proxy inverso hacia una aplicación (como un bot o una API) sería tan simple como esto:

```plaintext
tudominio.com {
    reverse_proxy localhost:3000
}
```

Con esas tres simples líneas, Caddy generará el certificado SSL gratis, forzará la conexión a HTTPS y redirigirá el tráfico al puerto interno 3000 de tu servidor.

Siempre que modifiques el Caddyfile, recuerda recargar el servicio para aplicar los cambios sin apagar el servidor:

```plaintext
sudo systemctl reload caddy
```

* * *

**¡Y eso es todo!** Tienes un servidor web de última generación funcionando de forma segura. Adiós a las renovaciones manuales de certificados y a las configuraciones interminables.
