# Installation du serveur Caddy sous Devuan 2016-03-07 ## Caractéristiques Caddy est un serveur récent, écrit dans le langage Go. Ses caractéristiques principales sont plutôt intéressantes : * HTTP/2 * Https, de façon automatique avec https://letsencrypt[a] * IPv6, * Reverse proxy, * Markdown, * WebSockets, * FastCGI, * les templates, * … => https://letsencrypt/ [a] ## Installation 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. => https://caddyserver.com/download [a] 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 : => https://getcaddy.com/ [a] ``` 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. ## Configuration Je choisis de ne pas lancer caddy en tant que root. ### Utilisateur Création d’un utilisateur (ou utilisation de votre utilisateur) qui servira à lancer caddy en tant que démon, sans droit root. ### Fichier de configuration 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 } ``` ### Démon 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 --