Kennisbank › Moderne Proxies › Caddy comme serveur web et proxy inverse : installation, configuration et utilisation
moderne proxies starter 27 August 2026

Caddy comme serveur web et proxy inverse : installation, configuration et utilisation

Caddy comme serveur web et reverse proxy : installation, configuration et utilisation

Caddy comme serveur web et reverse proxy : installation, configuration et utilisation

Cet article explique ce qu'est Caddy, comment l'installer et le configurer pour des fichiers statiques et un reverse proxy, y compris l'intégration avec Authelia. Il est destiné aux développeurs et aux administrateurs système qui souhaitent mettre en place un serveur web moderne avec HTTPS automatique.

Prérequis

- Un serveur Linux (Debian, Ubuntu, Fedora ou CentOS) avec accès root ou droits sudo - Un nom de domaine qui pointe vers l'adresse IP du serveur (pour HTTPS via Let's Encrypt) - Connaissances de base de la ligne de commande - Caddy version 2.7 ou plus récente (la version 2.8 inclut une meilleure prise en charge de HTTP/3)

Qu'est-ce que Caddy ?

Caddy est un serveur web open source écrit en Go. Il se distingue par son HTTPS automatique : Caddy demande et renouvelle lui-même les certificats TLS via Let's Encrypt, sans configuration manuelle. Cela fonctionne directement pour les serveurs de fichiers simples comme pour les configurations complexes de reverse proxy.

Caddy prend en charge HTTP/2 et HTTP/3. HTTP/3 fonctionne sur le protocole QUIC et offre de meilleures performances sur les connexions réseau instables. Ces protocoles sont activés par défaut et ne nécessitent aucune configuration supplémentaire.

Étapes

1. Installez Caddy via le gestionnaire de paquets du système

Caddy propose des paquets officiels pour les principales distributions Linux. Pour Debian/Ubuntu :

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

Pour Fedora/RHEL :

sudo dnf install 'dnf-command(copr)'
sudo dnf copr enable @caddy/caddy
sudo dnf install caddy

2. Démarrez Caddy comme service système

Caddy fonctionne comme service et démarre automatiquement au démarrage du système :

sudo systemctl enable --now caddy

Vérifiez que le service fonctionne :

sudo systemctl status caddy

3. Configurez un serveur de fichiers simple avec le Caddyfile

Le Caddyfile est le fichier de configuration de Caddy. Il utilise une syntaxe lisible pour les routes, les paramètres de proxy et les certificats. Créez une configuration de base pour un serveur de fichiers statiques :

sudo nano /etc/caddy/Caddyfile

Remplacez le contenu par :

example.com {
    root * /var/www/html
    file_server browse
}

Remplacez `example.com` par votre propre nom de domaine. La directive `file_server browse` crée une interface navigable qui affiche le contenu du répertoire. C'est pratique pour le partage temporaire de fichiers ou les environnements de développement.

4. Configurez Caddy comme reverse proxy

Caddy peut rediriger le trafic vers d'autres services en fonction des chemins d'URL ou des noms d'hôte. C'est utile lorsque plusieurs applications tournent sur un même serveur. Ajoutez une règle de reverse proxy au Caddyfile :

app.example.com {
    reverse_proxy localhost:8080
}

Cela redirige tout le trafic pour `app.example.com` vers le service sur le port 8080. Pour un routage basé sur les chemins :

example.com {
    handle /api/* {
        reverse_proxy localhost:3000
    }
    handle {
        root * /var/www/html
        file_server
    }
}

5. Construisez Caddy avec des plugins via xcaddy

Pour des extensions comme des fournisseurs DNS spécifiques lors du renouvellement des certificats, utilisez xcaddy. Cet outil compile Caddy à partir du code source avec un ensemble de modules choisi :

sudo apt install golang-go
go install github.com/caddyserver/xcaddy/cmd/xcaddy@latest

Construisez Caddy avec un plugin DNS, par exemple pour Cloudflare :

xcaddy build --with github.com/caddy-dns/cloudflare

Cela produit un fichier binaire `caddy` dans le répertoire courant. Vous pouvez aussi choisir une version spécifique de Caddy :

xcaddy build v2.7.6 --with github.com/caddy-dns/cloudflare

6. Intégrez Authelia pour l'authentification

Authelia est un serveur d'authentification open source qui offre l'authentification à deux facteurs et l'authentification unique (SSO). Placez Authelia derrière Caddy pour sécuriser les applications web. Ajoutez dans le Caddyfile :

secure.example.com {
    forward_auth localhost:9091 {
        uri /api/authz/forward-auth
        copy_headers Remote-User Remote-Groups Remote-Name Remote-Email
    }
    reverse_proxy localhost:8080
}

Caddy envoie d'abord le trafic vers Authelia sur le port 9091. Seuls les utilisateurs authentifiés obtiennent l'accès à l'application sur le port 8080.

7. Redémarrez Caddy après les modifications de configuration

Après chaque modification du Caddyfile, vous devez redémarrer Caddy :

sudo systemctl reload caddy

Caddy valide la configuration et l'applique sans interrompre le service.

Vérification

Vérifiez que Caddy fonctionne correctement et que HTTPS est actif :

curl -I https://example.com

La sortie doit afficher `HTTP/2 200` ou `HTTP/3 200`. Pour une vérification du reverse proxy :

curl -I https://app.example.com

Consultez les journaux pour les problèmes de certificats et de proxy :

sudo journalctl -u caddy --since "5 minutes ago"

Problèmes fréquents

1. Caddy ne peut pas demander de certificat auprès de Let's Encrypt. Vérifiez que votre nom de domaine pointe vers la bonne adresse IP et que les ports 80 et 443 sont ouverts dans le pare-feu. Exécutez `sudo ufw allow 80,443/tcp` si vous utilisez UFW.

2. HTTP/3 ne fonctionne pas. HTTP/3 nécessite que le port 443 UDP soit ouvert. Vérifiez cela avec `sudo ufw allow 443/udp`. Certains réseaux bloquent le trafic QUIC ; testez alors avec une autre connexion.

3. Le reverse proxy renvoie une erreur 502 Bad Gateway. Le service backend ne tourne pas ou écoute sur une autre adresse ou un autre port. Vérifiez avec `sudo ss -tlnp | grep 8080` si le service tourne effectivement sur le port 8080.

Caddy combine une configuration simple avec des fonctionnalités avancées comme le renouvellement automatique des certificats et HTTP/3. Le choix entre le Caddyfile et la configuration JSON détermine jusqu’où vous voulez aller dans le contrôle — et ce compromis reste différent selon l’implémentation.

← Retour à la base de connaissances
← Terug naar kennisbank