¿Cómo instalar Caddy Server en Ubuntu?
⚠️ Leer el aviso del princio del post⚠️
📝NUEVO: Revisa el tutorial de ¿Cómo instalar Caddy v2 en Ubuntu? Sirve para cualquier versión de Ubuntu.
⚠️Este tutorial es para la versión v1 de Caddy, por ahora aún se puede seguir usando pero es mejor que instales la versión v2 que tiene grandes cambios y mejoras al respecto en comparación con la versión v1.
Antes de empezar tenemos que instalar los siguiente paquetes:
apt install libcap2-bin
Empezamos descargando Caddy Server
curl https://getcaddy.com | bash -s personal
Con ese comando ya tenemos Caddy descargado en nuestro servidor, se guarda en la ruta /usr/local/bin/. Para comprobar si Caddy se encuntra en esa carpeta escribimos:
which caddy
Y nos tiene que devolver la ruta /usr/local/bin/caddy
Preparando Caddy
Como vimos, no instalamos Caddy mediante un paquete, por lo que no tenemos ningún servicio o archivo de configuración para nuestro servidor web. En esta sección vamos a crear archivos de configuración de Caddy, establecer sus permisos y finalmente crear un servicio para nuestro Servidor web.
Directorios necesarios para Caddy
Antes que nada, tenemos que establecer el permiso del archivo binario como "root" y hacerlo ejecutable con los siguientes comandos:
chown root:root /usr/local/bin/caddy
chmod 755 /usr/local/bin/caddy
Ejecutando el siguiente comando permitimos que el archivo binario del Caddy escuche las peticiones en el puerto preferido:
setcap CAP_NET_BIND_SERVICE=+eip /usr/local/bin/caddy
Ahora crearemos el usuario y el grupo Caddy:
groupadd caddy
Y después copiamos todo el siguiente código tal cual y lo pegamos en la terminal:
useradd \ -g caddy \ --home-dir /var/www --no-create-home \ --shell /usr/sbin/nologin \ --system caddy
Creamos el directorio principal de Caddy (donde configuraremos el servidor) y configuramos el propietario y el permisos adecuados con los siguientes comandos:
mkdir /etc/caddy
touch /etc/caddy/Caddyfile
chown -R root:caddy /etc/caddy
chown caddy:caddy /etc/caddy/Caddyfile
chmod 444 /etc/caddy/Caddyfile
Ahora creamos el directorio SSL para almacenar sus configuraciones SSL:
mkdir /etc/ssl/caddy
chown -R caddy:root /etc/ssl/caddy
chmod 770 /etc/ssl/caddy
A continuación creamos el directorio raíz de Caddy (es la carpeta donde pondrás los archivos de tú sitio web):
mkdir /var/www
Caddy Service
En esta sección, vamos a bajarnos el archivo "caddy.service" para poder ejecutar el servidor caddy desde systemd y así tendremos el servidor siempre activo. Para ello usamos uno de los siguientes comandos dependiendo de la versión de Ubuntu que estemos usando:
Ubuntu 16.04:
sudo curl -s https://raw.githubusercontent.com/danielperez9430/MyCaddyFiles/master/linux-systemd/ubuntu%2016.04/caddy.service -o /etc/systemd/system/caddy.service
Ubuntu 18.04:
sudo curl -s https://raw.githubusercontent.com/danielperez9430/MyCaddyFiles/master/linux-systemd/ubuntu%2018.04/caddy.service -o /etc/systemd/system/caddy.service
Establezca el propietario y los permisos para el archivo Caddy Service:
chown root:root /etc/systemd/system/caddy.service
chmod 644 /etc/systemd/system/caddy.service
Ahora ejecuta el siguiente comando para que se apliquen los cambios:
systemctl daemon-reload
Ahora vas a poder iniciar, detener y habilitar el servicio Caddy con los siguientes comandos:
systemctl start caddy
systemctl enable caddy
systemctl status caddy
Poner todos los comandos anteriores en la terminal para arrancar Caddy, activar caddy para que se inicie cada vez que reiniciamos el Vps y para ver su estado actual.
⚠️ Si veis que Caddy no arranca o no os llega a funcionar poner en la terminal el siguiente comando para que os muestre el error: journalctl -f -u caddy
Permitir conexiones HTTP y HTTPS
Debido a que Caddy no se instaló usando APT (administrador de paquetes de Ubuntu), UFW no tiene forma de saber cómo administrar las reglas para ello. Agregaremos esas reglas manualmente aquí.
Caddy sirve sitios web utilizando protocolos HTTP y HTTPS, por lo que debemos permitir el acceso a los puertos apropiados para que Caddy esté disponible en Internet.
sudo ufw allow http
sudo ufw allow https
Ambos comandos, cuando se ejecutan, mostrarán los siguientes mensajes de éxito:
UFW output
Rule added
Rule added (v6)
Esto permitirá a Caddy servir los sitios web a los visitantes libremente.
Configurar los dominios y como usar http o https en Caddy
Empezamos haciendo la prueba con http, para ello tenemos que tener nuestro dominio apuntando a la ip de nuestro servidor. Una vez tenemos el dominio apuntando a nuestro servidor editamos el archivo de configuración de Caddy para probar su funcionamiento:
nano /etc/caddy/Caddyfile
Dentro del archivo escrimos algo parecido a esto, cambiando "dominio.es" por el nombre de nuestro dominio o subdominio.
dominio.es:80 {
tls [email protected]
root /var/www/
gzip
}
Después guardamos y reiniciamos el servicio Caddy de la siguiente menera:
systemctl restart caddy
Importante poner algún index.html en "/var/www" que es la carpeta de nuestro dominio. Si la carpeta está vacia nos aparecera en la pantalla "404 Not Found".
Ahora vamos a usar htpps en Caddy, para ello volvemos a editar el Caddyfile:
nano /etc/caddy/Caddyfile
Y ahora borramos el puerto 80, así Caddy instala los certificados https y nuestra web pasa a usar https por defecto:
dominio.es {
tls [email protected]
root /var/www/
gzip
}
Por último volvemos a reiniciar el servicio Caddy para que se apliquen los cambios y listo con el siguiente comando:
systemctl restart caddy
Tip
Cuando veis que no arranca o algo es porque lo más seguro es que escribisteis algo mal en el Caddy File. Para revisar que todo esta bien lo que teneis que hacer es usar el comando:
systemctl status caddy