Caddy : un site avec certificat clé en main
Un serveur web qui obtient et renouvelle lui-même les certificats HTTPS. Installation sur un VPS, un Caddyfile minimal et migration depuis Nginx.
Mis à jour le 23 août 2026
Caddy fait la même chose que Nginx, mais émet et renouvelle les certificats Let's Encrypt de lui-même. Une configuration de site tient en trois lignes, donc pour un premier projet sur un VDS, c'est le chemin le plus court vers un HTTPS fonctionnel.
Installation
Debian et Ubuntu — depuis le dépôt officiel :
apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' \
| gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' \
> /etc/apt/sources.list.d/caddy-stable.list
apt update && apt install -y caddy
AlmaLinux et CentOS Stream :
dnf install -y 'dnf-command(copr)'
dnf copr enable -y @caddy/caddy
dnf install -y caddy && systemctl enable --now caddy
Votre premier site
Toute la configuration tient dans /etc/caddy/Caddyfile :
example.ru {
root * /var/www/example.ru
file_server
encode gzip zstd
}
mkdir -p /var/www/example.ru
echo '<h1>Works</h1>' > /var/www/example.ru/index.html
caddy validate --config /etc/caddy/Caddyfile
systemctl reload caddy
Quelques secondes après la première requête, le site s'ouvre sur https://example.ru. Vous n'avez rien d'autre à démarrer : Caddy a récupéré le certificat lui-même et le renouvellera automatiquement.
Proxifier une application
Si vous avez un service Node.js ou Python sur un port local, la configuration ressemble à ceci :
api.example.ru {
reverse_proxy 127.0.0.1:3000
}
Caddy ajoute les en-têtes X-Forwarded-For et X-Forwarded-Proto lui-même. Pour en savoir plus sur le schéma, consultez reverse proxy.
Plusieurs sites, ce sont simplement plusieurs blocs dans le même fichier, voir plusieurs sites sur une seule machine.
Ce qu'il faut vérifier à l'avance
- L'enregistrement A du domaine pointe vers l'adresse de la machine indiquée dans « Aperçu » du panneau
/hosting/vds/m/<id>; - les ports 80 et 443 sont ouverts dans le pare-feu de la machine et ne sont pas occupés par Nginx ou Apache ;
- le domaine résout bien :
dig +short example.ru.
Si le premier point n'est pas fait, l'émission du certificat échouera : Let's Encrypt doit joindre votre machine par le nom de domaine.
Erreurs courantes
| Symptôme | Cause |
|---|---|
could not get certificate | Le domaine ne pointe pas vers la machine, ou le port 80 est fermé |
address already in use | Nginx ou Apache est en cours d'exécution — arrêtez l'un des deux |
| Le site ne s'ouvre qu'en HTTP | Le Caddyfile indique :80 ou http:// avant le nom |
| Trop de tentatives d'émission | Limites de Let's Encrypt — déboguez avec tls internal |
Journaux : journalctl -u caddy -f.
Caddy stocke les certificats dans
/var/lib/caddy/.local/share/caddy. Lorsque vous réinstallez le système dans l'onglet « Accès », copiez ce répertoire, sinon l'émission repartira de zéro après la réinstallation.