Installer Caddy sur un VPS Linux moderne (Ubuntu 24.04, Debian 12) prend 5 minutes en suivant la procédure officielle. Voici les étapes pas à pas avec configuration recommandée pour la production en 2026.
Voir notre guide Caddy complet.
Méthode 1 — Package manager (recommandé)
# Ubuntu 24.04 / Debian 12
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' \
| sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' \
| sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddy
# Vérifier
caddy version
systemctl status caddy
Le package installe :
- Binaire
/usr/bin/caddy - Service systemd
caddy.service - User dédié
caddy(sans shell) - Caddyfile
/etc/caddy/Caddyfile - Web root
/var/www/html - Données
/var/lib/caddy(certificats inclus)
Méthode 2 — Binaire statique
# Télécharger depuis caddyserver.com/download
wget -O caddy.tar.gz https://caddyserver.com/api/download?os=linux&arch=amd64
tar xzf caddy.tar.gz
sudo mv caddy /usr/local/bin/
sudo chmod +x /usr/local/bin/caddy
# Vérifier
caddy version
Pratique pour les distributions non supportées par le repository officiel ou pour avoir une version spécifique.
Méthode 3 — Build avec plugins (xcaddy)
# Installer xcaddy (nécessite Go)
go install github.com/caddyserver/xcaddy/cmd/xcaddy@latest
# Build Caddy avec plugins
xcaddy build \
--with github.com/caddy-dns/cloudflare \
--with github.com/mholt/caddy-ratelimit
# Le binaire ./caddy contient les plugins
sudo mv caddy /usr/local/bin/
Étape — Permissions ports privilégiés
# Permettre à Caddy de bind 80 et 443 sans root
sudo setcap cap_net_bind_service=+ep /usr/local/bin/caddy
# Le service systemd du package gère déjà ça via AmbientCapabilities
Étape — Service systemd
Si vous avez installé via le package, le service est déjà là. Pour une installation manuelle, créez :
# /etc/systemd/system/caddy.service
[Unit]
Description=Caddy
After=network.target
[Service]
Type=notify
User=caddy
Group=caddy
ExecStart=/usr/local/bin/caddy run --environ --config /etc/caddy/Caddyfile
ExecReload=/usr/local/bin/caddy reload --config /etc/caddy/Caddyfile
TimeoutStopSec=5s
LimitNOFILE=1048576
PrivateTmp=true
ProtectSystem=full
AmbientCapabilities=CAP_NET_BIND_SERVICE
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now caddy
sudo systemctl status caddy
Étape — Caddyfile minimal de démarrage
# /etc/caddy/Caddyfile
{
email admin@exemple.sn
}
exemple.sn {
root * /var/www/exemple.sn
file_server
encode gzip zstd
}
sudo systemctl reload caddy
# HTTPS apparaît en quelques secondes
Étape — Logs et debug
# Logs systemd
journalctl -u caddy -f --no-pager
# Logs JSON structurés
{
log {
output file /var/log/caddy/access.log
format json
}
}
Étape — Tester la config avant reload
caddy validate --config /etc/caddy/Caddyfile
caddy fmt --overwrite /etc/caddy/Caddyfile # auto-format
sudo systemctl reload caddy
Adaptation Afrique de l’Ouest
Caddy gère HTTPS sans aucun setup, idéal pour les développeurs sénégalais ou ivoiriens qui ne veulent pas s’embêter avec Certbot. Le binaire compilé statiquement (~30 Mo) est facile à transférer même sur connexion lente.
Erreurs fréquentes
| Erreur | Cause | Solution |
|---|---|---|
| « address already in use :443 » | Nginx ou autre tient déjà 443 | systemctl stop nginx ou changer ports |
| Certificat ne se génère pas | Port 80 fermé ou DNS faux | Vérifier UFW et dig |
| Caddy ne démarre pas | Caddyfile syntax error | caddy validate |
| Permission denied dans /var/www | User caddy pas accès | chown caddy:caddy /var/www/site |