2016-03-07
Caddy est un serveur récent, écrit dans le langage Go. Ses caractéristiques principales sont plutôt intéressantes :
Go est un langage compilé. Pour installer caddy, on télécharge le binaire précompilé par l’équipe.
Sur la page de téléchargement[a], vous avez le choix d’ajouter des options. Ensuite, vous indiquez votre système et, vous téléchargez l’application.
Si, comme moi, vous n’avez accès à votre serveur que via ssh, il existe un script qui vous permet un téléchargement et une installation via la ligne de commande.
Le script se trouve par ICI[a]. Lisez le avant d’automatiser la chose :
wget -qO- https://getcaddy.com | bash
Une fois le binaire téléchargé, le script passera par sudo afin de l’installer dans le répertoire /usr/local/bin.
Voilà, c’est tout.
Je choisis de ne pas lancer caddy en tant que root.
Création d’un utilisateur (ou utilisation de votre utilisateur) qui servira à lancer caddy en tant que démon, sans droit root.
Par défaut, ce script pousse caddy à lire un fichier de configuration situé dans /etc/caddy/Caddyfile. Sa syntaxe est des plus simple. Exemple : ```
# Pour du https automatique avec redirection plop.net www.plop.net { tls votre@email root /data/www/plop.net gzip } # Pour du classique da.plip.net:80 { tls off root /data/www/da.plip gzip }
Vous n’avez qu’un binaire, la procédure pour le lancer en tant que service n’existe pas.
Il va falloir créer un script caddy et le placer dans /etc/init.d/. Je vous propose le suivant : ```
#!/bin/sh
# kFreeBSD do not accept scripts as interpreters, using #!/bin/sh and sourcing
if [ true != “$INITDSCRIPTSOURCED” ] ; then
set “$0” “$@”; INITDSCRIPTSOURCED=true . /lib/init/init-d-script
fi
### BEGIN INIT INFO
# Provides: caddy
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start caddy server at boot time
# Description: Enable service provided by caddy daemon.
### END INIT INFO
DESC="the caddy server"
NAME=caddy
DAEMON=/usr/local/bin/$NAME
DAEMONOPTS="-conf=/etc/caddy/Caddyfile -log /var/log/caddy.log"
DAEMONUSER="a_not_root_user"
USERBIND="/sbin/setcap cap_net_bind_service=+ep"
PIDFILE=/var/run/$NAME.pid
STOP_TIMEOUT=30
test -x $DAEMON || exit 0
start () {
$USERBIND $DAEMON
start-stop-daemon --background --make-pidfile --pidfile $PIDFILE \
--start --quiet --chuid $DAEMONUSER \
--exec $DAEMON -- $DAEMONOPTS
}
stop () {
start-stop-daemon --stop --quiet \
--exec $DAEMON --retry $STOP_TIMEOUT --oknodo
}
case "$1" in
start)
log_daemon_msg "Starting web server daemon $NAME"
start
;;
stop)
log_daemon_msg "Stopping web server daemon $NAME"
stop
;;
restart)
log_daemon_msg "Restarting web server daemon $NAME"
stop
start
;;
status)
status_of_proc -p $PIDFILE $DAEMON $NAME && exit 0 || exit $?
;;
*)
log_action_msg "Usage: $0 {status|start|stop|restart}"
exit 2
;;
esac
exit 0
Vous pouvez récupérer ce script sur le dépôt Git chez Devuan. Il vous reste à renseigner la variable DAEMONUSER et le rendre exécutable :
sudo chmod +x /etc/init.d/caddy
La variable USERBIND=”/sbin/setcap cap_net_bind_service=+ep” est utilisée pour permettre à caddy, qui fonctionne sans droits root, d’utiliser les ports 80 et 443. Vous pouvez tester si cela vous convient :
sudo /etc/init.d/caddy start
Les options classiques stop, restart, status sont disponibles. Pour automatiser le service à chaque redémarrage :
sudo update-rc.d caddy defaults
Voilà, n’hésitez pas à l’améliorer ;) => ./ <-- ## Commentaires / Comments ? => https://lists.sr.ht/~fredg/public-inbox Envoyer un email à la liste de discussion publique / Send a mail to the public Inbox --- => https://creativecommons.org/licenses/by-sa/4.0/ -- Copyright © 2008–2023 Frédéric Galusik - CC BY-SA 4.0 --