Skip to content

ADR-003 : Utiliser Caddy comme reverse proxy

Accepté

  • Date : 01/07/2026
  • Auteur : Corentin Talour

Cet ADR a été rédigé a posteriori afin de documenter une décision

Plusieurs applications sont accessibles depuis Internet avec des noms de domaine différents, notamment Penpot, Uptime Kuma, Forgejo et la documentation.

Ces applications doivent bénéficier d’une connexion HTTPS sans gérer individuellement les certificats TLS. Elles ne doivent pas non plus être exposées directement sur Internet.

Un reverse proxy est donc nécessaire pour :

  • centraliser les accès HTTP et HTTPS
  • associer chaque domaine au service correspondant
  • gérer les certificats TLS
  • rediriger les requêtes vers les applications internes
  • appliquer une configuration commune aux services exposés

Caddy est un serveur web et reverse proxy capable d’obtenir et de renouveler automatiquement les certificats TLS.

Sa configuration est concise et adaptée au nombre actuel de services.

Nginx est un serveur web et reverse proxy largement utilisé.

Il offre de nombreuses possibilités de configuration, mais la gestion des certificats TLS nécessite généralement un outil supplémentaire, comme Certbot, ainsi qu’une configuration plus importante.

Traefik est un reverse proxy conçu pour les environnements conteneurisés.

Il peut découvrir automatiquement les services Docker à partir de labels. Cette fonctionnalité est intéressante pour une infrastructure très dynamique, mais elle ajoute une complexité qui n’est pas nécessaire pour le nombre actuel de services.

Caddy est retenu comme serveur web et reverse proxy de la plateforme.

Il est installé directement sur le VPS et constitue l’unique point d’entrée pour les connexions HTTP et HTTPS.

Caddy est responsable :

  • de l’écoute sur les ports 80 et 443
  • de l’obtention et du renouvellement des certificats TLS
  • de la redirection des requêtes HTTP vers HTTPS
  • de l’association entre les domaines et les applications
  • de la transmission des requêtes vers les services locaux
  • du service des sites statiques et de la documentation

Les applications sont accessibles par Caddy à travers des adresses locales, par exemple 127.0.0.1:9001 pour Penpot et 127.0.0.1:3001 pour Uptime Kuma.

  • les certificats TLS sont obtenus et renouvelés automatiquement
  • la configuration des domaines est centralisée
  • les applications ne gèrent pas elles-mêmes les certificats
  • les services internes ne sont pas exposés directement sur Internet
  • l’ajout d’un nouveau domaine nécessite peu de configuration
  • la configuration de Caddy peut être automatisée avec Ansible
  • Caddy devient un composant critique de l’infrastructure
  • une panne de Caddy peut rendre tous les services web indisponibles
  • une erreur de configuration peut affecter plusieurs applications
  • les domaines doivent pointer vers le VPS avant l’obtention des certificats
  • les ports 80 et 443 doivent rester accessibles depuis Internet