Aujourd’hui, le protocole HTTPS est essentiel pour l’hébergement d’un site web. Sans lui, vos utilisateurs pourraient exposer des informations personnelles sensibles. Pour pallier ce problème, de nombreux administrateurs Linux ont adopté les outils LetsEncrypt, qui simplifient la création de certificats. Cependant, malgré la simplicité de LetsEncrypt, son activation sur Nginx ou Apache sous Linux peut s’avérer fastidieuse. Heureusement, une solution plus élégante existe : le serveur web Caddy. Ce serveur a la particularité d’activer HTTPS par défaut. Si la gestion des certificats SSL vous lasse, Caddy pourrait être la solution idéale.
Installation de Caddy
L’installation du serveur web Caddy est globalement uniforme, quel que soit le système d’exploitation serveur utilisé. Cette facilité d’installation est due au choix du développeur d’utiliser un script Bash téléchargeable, plutôt que de recourir à des dépôts de logiciels tiers ou à des installations via des binaires.
Dans ce tutoriel, nous utiliserons Ubuntu Server, bien que Caddy fonctionne parfaitement sur la plupart des systèmes d’exploitation Linux, y compris les ordinateurs de bureau. Pour débuter, assurez-vous que l’application Curl est installée sur votre machine Linux. Si ce n’est pas le cas, ouvrez un terminal, recherchez « curl » dans votre gestionnaire de paquets et installez-le.
Note: Pour vérifier si Curl est déjà installé, entrez « curl » dans votre terminal. Si la fenêtre d’aide du programme apparaît, Curl est présent sur votre machine Linux.
curl https://getcaddy.com | bash -s personal
Le serveur web Caddy est gratuit pour un usage personnel, ce qui doit être spécifié lors de l’installation. Si vous envisagez d’utiliser Caddy dans un cadre professionnel, exécutez la commande d’installation suivante :
curl https://getcaddy.com | bash -s commercial
L’exécution de Curl via Bash lancera automatiquement le processus d’installation. L’installateur de Caddy téléchargera le binaire du serveur web et le placera dans le répertoire /usr/local/bin/. En cas de succès, un message « Installé avec succès » s’affichera.
À ce stade, il est nécessaire de modifier le binaire Caddy. Exécutez la commande suivante dans le terminal, avec les privilèges sudo.
sudo setcap cap_net_bind_service=+ep /usr/local/bin/caddy
Configuration de Caddy
Caddy est désormais installé sur le serveur. L’étape suivante consiste à configurer la structure des répertoires. Commencez par obtenir un accès au terminal root. Cela accélérera les modifications dans le système de fichiers, car vous n’aurez plus besoin de saisir « sudo » suivi d’un mot de passe à chaque commande.
Sur la plupart des systèmes, les utilisateurs peuvent se connecter directement au compte root avec:
su
Cependant, sur le serveur Ubuntu, le compte root est verrouillé pour des raisons de sécurité. Pour contourner cela, obtenez un shell root avec la commande sudo :
sudo -s
Maintenant que nous disposons d’un accès root, créons les répertoires nécessaires au bon fonctionnement du serveur Caddy.
mkdir /etc/caddy mkdir /etc/ssl/caddy
Note: Si votre serveur possède déjà un répertoire /var/www/, ignorez la dernière commande mkdir.
mkdir /var/www
Ensuite, créez un nouveau fichier « Caddyfile » dans /etc/caddy/.
touch /etc/caddy/Caddyfile
À l’aide de la commande chmod, mettez à jour les autorisations pour le sous-dossier Caddy dans /etc/ssl/.
chmod 0770 /etc/ssl/caddy
Enfin, vérifiez le répertoire /var/www/ :
chown www-data: /var/www
Fichier Systemd pour Caddy
La majorité des serveurs, notamment les serveurs Ubuntu, utilisent largement le système d’initialisation systemd. Cependant, comme le serveur web est installé via un script Bash, aucun fichier systemd n’est présent. Il est donc nécessaire de créer le nôtre. Utilisez la commande touch pour créer un nouveau fichier de service vierge.
touch /lib/systemd/system/caddy.service
Ouvrez le nouveau fichier caddy.service et copiez-y le code suivant :
[Unit]
Description = Serveur Web Caddy HTTP/2
Documentation = https://caddyserver.com/docs
Après = network-online.target
Wants = network-online.target
[Service]
Redémarrer = on-failure
StartLimitInterval = 86400
StartLimitBurst = 5
User = www-data
Group = www-data
; Les certificats émis par Letsencrypt seront écrits dans ce répertoire.
Environment = CADDYPATH=/etc/ssl/caddy
ExecStart=/usr/local/bin/caddy -log stdout -agree=true -conf=/etc/caddy/Caddyfile -root=/var/tmp
ExecReload=/bin/kill -USR1 $MAINPID
LimitNOFILE=1048576
LimitNPROC=64
PrivateTmp=true
PrivateDevices=true
ProtectHome=true
ProtectSystem=full
ReadWriteDirectories=/etc/ssl/caddy
; Les directives de sécurité additionnelles suivantes ne fonctionnent qu’avec systemd v229 ou version ultérieure.
; Elles restreignent davantage les privilèges que Caddy peut obtenir. Décommentez si vous le souhaitez.
; Veuillez noter que vous devrez peut-être ajouter des fonctionnalités nécessaires à tout plug-in utilisé.
; CapabilityBoundingSet=CAP_NET_BIND_SERVICE
; AmbientCapabilities=CAP_NET_BIND_SERVICE
; NoNewPrivileges=true
[Install]
WantedBy=multi-user.target
Ce fichier caddy.service contient beaucoup de code, assurez-vous donc de vérifier que tout est correct. Lorsque vous êtes sûr, enregistrez les modifications avec Ctrl+X. Quittez l’éditeur avec Ctrl+X.
systemctl enable caddy.service systemctl start caddy.service
Après avoir configuré systemd, tout devrait être prêt à fonctionner.
Configuration des Domaines
Caddy, comme tout autre serveur web, nécessite une configuration avant de pouvoir être utilisé. Commencez par créer un dossier pour votre domaine :
Note: N’oubliez pas de remplacer « test-domain.org » par votre nom de domaine.
mkdir -p /var/www/test-domain.org/
Ensuite, modifiez le fichier Caddyfile créé précédemment.
nano /etc/caddy/Caddyfile
Copiez le code suivant pour activer votre nouveau domaine :
mon-domaine.com {
root /var/www/test-domain.org
}
Redémarrez le service Caddy systemd afin d’enregistrer les modifications. Une fois le service redémarré, Caddy est prêt à être utilisé sur votre serveur.
systemctl restart caddy.service