Skip to content
VDS · Sites web et serveurs web

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ômeCause
could not get certificateLe domaine ne pointe pas vers la machine, ou le port 80 est fermé
address already in useNginx ou Apache est en cours d'exécution — arrêtez l'un des deux
Le site ne s'ouvre qu'en HTTPLe Caddyfile indique :80 ou http:// avant le nom
Trop de tentatives d'émissionLimites 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.