Ouvrir le menu principal

MacGeneration

Recherche

Caddy, un serveur web sécurisé comme sur des roulettes

Nicolas Furno

jeudi 07 mai 2020 à 12:30 • 32

Ailleurs

Sécuriser la connexion d’un site web entre votre navigateur et le serveur web grâce à un certificat TLS et une adresse en https devient de plus en plus un impératif. Même si certains acteurs reprochent ce choix, il s’est imposé notamment face à la pression des navigateurs web qui pointent du doigt les sites non sécurisés, et aussi celle de Google qui donne l’avantage dans ses résultats de recherche aux sites qui le sont.

Un site web non sécurisé affiché dans Firefox.

Depuis la création de Let’s Encrypt, on peut obtenir l’indispensable certificat TLS gratuitement et automatiquement. Néanmoins, les principaux serveurs web fonctionnent toujours sur un ancien modèle, non sécurisé par défaut. Apache comme nginx, les deux poids-lourds dans ce domaine, nécessitent une configuration spécifique pour qu’un site s’affiche en https, ils se contentent toujours du http par défaut. Certbot, l’outil qui sert à obtenir le certificat TLS fourni par Let’s Encrypt, peut aussi se charger de réaliser la configuration à votre place, certes, mais il existe une solution beaucoup plus simple encore.

Caddy est un serveur web écrit en Go qui existe depuis plusieurs années et qui vient de sortir en version 2. Il a été conçu à l’ère du web sécurisé et il fonctionne ainsi par défaut et fourni du https, sauf si vous lui demandez explicitement de ne pas le faire. Vous n’avez absolument rien à faire : si votre nom de domaine pointe déjà sur votre serveur web, il se chargera tout seul d’obtenir un certificat Let’s Encrypt et de le renouveler ensuite sans intervention de votre part. Il se chargera aussi de rediriger toutes les requêtes vers l’adresse en https, là encore sans configuration spécifique.

Avec la version 2, le créateur de Caddy s’est lancé dans une réécriture complète du code source. La première version avait été pensée avant tout pour gérer des sites web, mais cette mise à jour lui permet de remplacer d’autres composants des serveurs web. On peut s’en servir comme load balancer, pour répartir la charge sur plusieurs serveurs, mais c’est toujours un serveur de fichiers statiques extrêmement rapide, avec même la possibilité de convertir automatiquement du Markdown pour des sites simples.

Si vous utilisiez Caddy 1, vous devrez convertir vos fichiers de configuration, puisqu’il y a plusieurs changements importants détaillés dans ce guide. Si vous n’avez jamais entendu parler de Caddy et que vous gérez votre propre serveur web, sachez qu’il est fourni sous la forme d’un exécutable prêt à emploi pour toutes les plateformes. Vous pouvez aussi l’installer via Docker ou en utilisant le gestionnaire de paquets de la majorité des distributions Linux, comme expliqué à cette adresse1.

Caddy 2 se configure principalement par le biais du « Caddyfile », un fichier de configuration qui repose sur une syntaxe assez légère. Au strict minimum, il doit contenir un nom de domaine et soit une commande file_server pour un site web statique, soit une commande reverse_proxy pour utiliser un autre service web. Comme avec nginx, PHP n’est pas intégré par défaut, mais vous pouvez installer php-fpm et la commande php_fastcgi fournie par Caddy pour gérer la majorité des CMS.

À titre d’exemple, voici une configuration complète pour mon blog qui tourne sous WordPress :

voiretmanger.fr {
	root * /var/www/voiretmanger.fr
	encode gzip
	file_server
	php_fastcgi unix//run/php/php7.4-fpm-caddy.sock

	log {
		output file /var/log/caddy/voiretmanger.fr.access.log
	}
}
La configuration pour un site statique est très simple avec Caddy 2.

La configuration par le biais de ce fichier est la plus proche de celle des autres serveurs web et elle nécessite un reload du service Caddy à chaque modification. La version 2 ajoute une autre méthode, plus complexe à mettre en œuvre, mais aussi beaucoup plus puissante, basée sur une API et des fichiers JSON. À ce stade du développement, la configuration par Caddyfile n’est pas aussi complète et certaines opérations complexes nécessitent encore de passer par l’API, mais Caddy est toujours en développement.

Comme ses concurrents, Caddy 2 est un projet entièrement open-source et vous trouverez l’intégralité de son code source sur GitHub. Si vous développez en Go, vous pouvez même y contribuer, notamment en créant des modules qui viennent enrichir les fonctions de base du serveur web. Il en existe déjà une bonne vingtaine, dans des domaines variés. De quoi créer un serveur WebDAV, récupérer automatiquement un site web depuis un dépôt Git (travail en cours), convertir une configuration nginx en configuration Caddy ou encore protéger un site web avec un mot de passe.

Parmi les autres nouveautés de la deuxième version, signalons la possibilité de sécuriser aussi les sites locaux, utilisés notamment pendant le développement. Vous pourrez ainsi afficher un site avec le nom de domaine https://localhost/, ce qui est pratique pour avoir un site de développement aussi proche possible que celui en production. Cette fonction repose sur des certificats TLS spécifiques qui devront être acceptés manuellement dans le navigateur web.

Caddy n’est pas aussi connu que ses illustres concurrents, mais c’est un projet stable et capable de gérer un trafic important sans problème. Je l’utilise pour tous mes projets personnels depuis des années, et nous l’utilisons aussi à MacG pour un certain nombre de sites et services annexes. Le site web LeKeynote.fr tourne grâce à Caddy depuis plus d’un an sans encombre et avec une configuration largement simplifiée.

Si vous avez des questions sur Caddy 2, les forums associés au projet sont très actifs et il y a de nombreuses personnes pour vous aider, dont le principal développeur du serveur web lui-même.


  1. Vous pouvez aussi l’installer sur macOS grâce au gestionnaire de paquets Homebrew et la commande brew install caddy.  ↩

Ajouter ce site dans Google News

Le MacBook Air 15 pouces M5 en promotion à 1 550 € au lieu de 1 700 €, avant (peut-être) un M6 plus cher

11:35

• 0


OpenAI accélère encore la génération d’images avec ChatGPT Images 2.5

11:27

• 0


Le Finder est toujours à l'extrême gauche… sauf dans une seule version de macOS

10:50

• 5


UPDF 2.5 : l'éditeur PDF dopé à l'IA qui fait de l'ombre à Adobe sur Mac 📍

10:48

• 0


Faux banquier, faux colis, faux fonds dormants : quand les arnaqueurs savent exactement quoi vous dire

10:44

• 5


Les nouvelles Apple Watch pourraient résumer ce qui se dit autour de vous

09:35

• 12


« Ils jouent avec nos vies » : pourquoi un chercheur en IA claque la porte d'Anthropic

09:14

• 83


Adaptateur 140 W : Apple met à jour son firmware (et iBood casse son prix)

07:15

• 5


iPhone Duo, Apple Watch Ultra 4, AirPods 5 : le point complet sur les dernières rumeurs

06:56

• 17


Avec cet adaptateur, votre iPhone devient un outil de diagnostic auto !

08/09/2026 à 21:00

• 0


L’Apple Watch prête à en découdre avec Oura et Whoop ?

08/09/2026 à 20:58

• 10


iOS 27 approche, mais commencez par installer iOS 26.6.2 pour éviter une déconvenue

08/09/2026 à 20:41

• 19


L’iPhone Ultra serait en préparation depuis dix ans, poussé notamment par Tim Cook

08/09/2026 à 20:41

• 34


Test du chargeur Ugreen Nexode Pro 160 W : écran, Wi-Fi, câble rétractable… la surenchère assumée

08/09/2026 à 20:30

• 13


Apple a racheté Sonera, spécialiste des capteurs neuronaux non invasifs

08/09/2026 à 16:54

• 9


TV LG : des failles permettent d’écouter la pièce même écran éteint 🆕

08/09/2026 à 16:46

• 98