¿Cómo instalar Caddy Server en Debian 9?
⚠️ Tutorial Anticuado⚠️
📝Revisa el tutorial para la versión v2: ¿Cómo instalar Caddy v2 en Debian? Sirve para cualquier versión de Debian
Antes de empezar tenemos que instalar los siguiente paquetes:
sudo apt-get install curl
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 crear un archivo "caddy.service" para tener la capacidad de controlar nuestro servidor web.
nano /etc/systemd/system/caddy.service
Pegue el siguiente script en el archivo, luego guárdelo y salga:
[Unit]
Description=Caddy HTTP/2 web server
Documentation=https://caddyserver.com/docs
After=network-online.target
Wants=network-online.target systemd-networkd-wait-online.service
[Service]
#Restart=on-failure
StartLimitInterval=864000
StartLimitBurst=500
; User and group the process will run as.
User=caddy
Group=caddy
; Letsencrypt-issued certificates will be written to this directory.
Environment=CADDYPATH=/etc/ssl/caddy
; Always set "-root" to something safe in case it gets forgotten in the Caddyfile.
ExecStart=/usr/local/bin/caddy -log stdout -agree=true -conf=/etc/caddy/Caddyfile -root=/var/tmp
ExecReload=/bin/kill -USR1 $MAINPID
; Limit the number of file descriptors; see `man systemd.exec` for more limit settings.
LimitNOFILE=1048576
; Unmodified caddy is not expected to use more than that.
LimitNPROC=64
; Use private /tmp and /var/tmp, which are discarded after caddy stops.
PrivateTmp=true
; Use a minimal /dev
PrivateDevices=true
; Hide /home, /root, and /run/user. Nobody will steal your SSH-keys.
ProtectHome=true
; Make /usr, /boot, /etc and possibly some more folders read-only.
ProtectSystem=full
; … except /etc/ssl/caddy, because we want Letsencrypt-certificates there.
; This merely retains r/w access rights, it does not add any new. Must still be writable on the host!
ReadWriteDirectories=/etc/ssl/caddy
; The following additional security directives only work with systemd v229 or later.
; They further restrict privileges that can be gained by Caddy. Uncomment if you like.
; Note that you may have to add capabilities required by any plugins in use.
CapabilityBoundingSet=CAP_NET_BIND_SERVICE
AmbientCapabilities=CAP_NET_BIND_SERVICE
;NoNewPrivileges=true
[Install]
WantedBy=multi-user.target
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.
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 admin@dominio.es
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 admin@dominio.es
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
Siguiente Parte: Como instalar php 7.1 en Caddy Server (Debian 9)