Con un ejemplo vamos a configurar Filebrowser y Caddy en el mismo servidor para dar acceso vía web a la vista y edición del fichero Caddyfile y a la consola del servidor. De este modo podremos modificar desde web el fichero de configuración de Caddy y aplicar la nueva configuración vía systemctl desde la consola de Filebrowser
1.- Instalamos Filebrowser, damos por hecho que Caddy ya está instalado.
>curl -fsSL https://raw.githubusercontent.com/filebrowser/get/master/get.sh | bash
2.- Iniciamos Filebrowser apuntando a la carpeta de entrada que queremos hacer visible vía web, en nuestro caso la carpeta donde se encuentra el fichero de configuración de Caddy
>filebrowser -r /etc/caddy
Con este comando Filebrowser levanta el servidor web en 127.0.0.1:8080 y muestra el contenido de la carpeta /etc/caddy
3.- Editamos el fichero, en mi caso, /etc/caddy/Caddyfile para configurar la redirección del proxy para una determinada ip/cname y puerto hacia la dirección donde está escuchando Filebrowser, localhost:8080
(basic-auth) {
basicauth /* {
bob $2a$14$0Lh5yt4z7JzdafFIixLO8ehRN7hRmkJNPm1Jwy5TIuv6JcszRfjeG
}
}
caddy.mydns.dev {
import basic-auth
reverse_proxy
localhost:8080
}
4.- Hemos configurado además del usuario y contraseña propio de Filebrowser (admin admin por defecto) una validación básica previa con usuario bob en este caso.
5.- Ya podremos navegar por caddy.mydns.dev y editar el fichero Caddyfile. Además, para poder aplicar los cambios que hagamos en el mismo desde la misma web, configuraremos los comandos necesarios (systemctl en este caso para hacer restar de caddy.service) desde los settings del filebrowser, para el usuario admin.
Settings >> User Management >> admin >> Commands >> systemctl
6.- Y por último configuramos Filebrowser como servicio que pueda arrancar con systemctl
Primero creamos el fichero de servicio:
nano /etc/systemd/system/caddy_filebrowser.service
con el siguiente contenido:
[Unit]
Description=Run Caddy Filebrowser at startup
[Service]
# Replace with your actual username
User=username
# Substitute the paths to your storage folder and Filebrowser database file
# Make sure to use full paths instead of ~/filebrowser.db etc
ExecStart=/usr/local/bin/filebrowser -r /home/username/caddy_filebrowser -d /home/username/filebrowser.db
Type=simple
[Install]
WantedBy=multi-user.target
Guardamos desde nano y habilitamos el servicio con la sentencia:
sudo systemctl enable caddy_filebrowser.service
Y es todo, Filebrowser arrancará de forma automática en los reinicios de servidor.
Caddy is a powerful, enterprise-ready, open source web server with automatic HTTPS written in Go
Caddy server would not start and displayed this error after upgrading to v0.9.3:
listen tcp :443: bind: permission denied
I was running caddy with systemd as user caddy. I checked that the bin...
... Instalar Caddy en Ubuntu, Debian
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddy
... Caddyfile básico sirviendo contenido estático, en el puerto 2015 en este caso
:2015
respond "Hello, world!"
... Caddyfile básico sirviendo contenido estático desde la ruta especificada
localhost
root * /home/me/mysite
file_server
... Reverse-Proxy To start a plaintext HTTP proxy from port 2080 to port 9000 on your machine:
caddy reverse-proxy --from :2080 --to :9000
caddy reverse-proxy --from example.com --to :9000 #en este caso especificando la URL(nombre DNS) de entrada al servicio
... Caddyfile básico para Reverse-Proxy sirviendo contenido estático desde la ruta especificada
example.com
reverse_proxy :9000
... Comandos básicos
caddy run
caddy start
caddy stop
caddy reload
caddy file-server #empieza a servir http con los ficheros existentes en el directorio actual. Ha de existir fichero index.html
caddy file-server --browse #empieza a servir http con los ficheros existentes, habilitando el brouse del directorio si no hay index de entrada
caddy file-server --root ~/mysite #empieza a servir http con los ficheros existentes en /mysite
... Caddy como servicio en Linux
root@test:/# systemctl status caddy
● caddy.service - Caddy
Loaded: loaded (/etc/systemd/system/caddy.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2023-02-05 10:51:16 UTC; 3s ago
Docs: https://caddyserver.com/docs/
Main PID: 397 (caddy)
Tasks: 8 (limit: 4500)
Memory: 13.8M
CPU: 199ms
CGroup: /system.slice/caddy.service
└─397 /usr/bin/caddy run --environ --config /etc/caddy/Caddyfile
... ejemplo de arranque /etc/caddy/Caddyfile. Despliega por defecto SSL si el nombre de dominio está asociado a registor A/AAAA en DNS
# The Caddyfile is an easy way to configure your Caddy web server.
#
# Unless the file starts with a global options block, the first
# uncommented line is always the address of your site.
#
# To use your own domain name (with automatic HTTPS), first make
# sure your domain's A/AAAA DNS records are properly pointed to
# this machine's public IP, then replace ":80" below with your
# domain name.
hugo.k8.cloudns.nz
root * /home/learn-hugo/MySite/public
file_server
... dar permisos a usuario Caddy para levantar puertos bajos, 80 y 443
setcap CAP_NET_BIND_SERVICE=+eip $(which caddy)