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 :

[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.

[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 :

[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–2022 Frédéric Galusik - CC BY-SA 4.0 --