Skip to content

Caddy

Le rôle Caddy installe et configure le reverse proxy utilisé par l’ensemble de l’infrastructure.

Il est responsable de :

  • l’installation de Caddy
  • la configuration HTTPS automatique (Let’s Encrypt)
  • le reverse proxy des applications
  • le déploiement des configurations de Caddy
  • le rechargement de la configuration lors des modifications

Il a été choisie car il extrement simple d’utilisation et permet de gérer les certificat TLS automatiquement via Let’s Encrypt.

Le fichier principal est situé à :

/etc/caddy/Caddyfile

Il contient uniquement la configuration globale et importe les configurations des différents services :

{
email admin@example.com
}
import /etc/caddy/sites/*.conf

Chaque fichier de configuration est généré à partir d’un template Ansible puis déployé dans :

/etc/caddy/sites/

Par exemple :

forgejo.conf
penpot.conf
uptime-kuma.conf
docs.conf

Cette approche permet à chaque application de gérer sa propre configuration sans modifier le fichier principal.

Les varaibles sont contenue dans le fichier main.yml dans le dossier defaults.

Variable Description
caddy_admin_email Adresse à contacter en cas de problème
caddy_main_domain Nom de domaine
caddy_www_domain Nom de domaine www
caddy_site_root Emplacement du site internet Projet Davai
Variable Description
caddy_<service>_domain Nom de domaine
caddy_<service>_upstream Adresse du service Docker

Le rôle effectue les opérations suivantes :

  1. Installation des dépendances nécessaires à l’ajout du dépôt officiel Caddy.
  2. Ajout du dépôt officiel Caddy.
  3. Mise à jour du cache APT si le dépôt vient d’être ajouté.
  4. Installation de Caddy.
  5. Création des répertoires :
    • /etc/caddy/sites
    • /var/www/site
  6. Déploiement du fichier principal Caddyfile.
  7. Déploiement des configurations des différents sites :
    • site.conf
    • forgejo.conf
    • penpot.conf
    • uptime-kuma.conf
  8. Validation complète de la configuration avec :
    Terminal window
    caddy validate --config /etc/caddy/Caddyfile --adapter caddyfile
  9. Activation du service Caddy au démarrage.
  10. Démarrage du service Caddy.
  11. Rechargement automatique de Caddy lorsqu’une configuration est modifiée.

Pour publier une nouvelle application derrière Caddy :

  1. créer un template <service>.conf.j2
  2. définir les variables du domaine et de l’upstream dans le fichier main.yml contenue dans le dossier defaults du projet Infra
  3. Dans le fichier install.yml contenue dans le dossier tasks ajouter une nouvelle étape dans le playbooks qui permet de déployer le template crée dans le VPS à l’endroit suivant /etc/caddy/sites/
  4. exécuter le playbook Ansible
  5. vérifier que la configuration est valide

Vérifier que le service est actif :

Terminal window
systemctl status caddy

Valider la configuration :

Terminal window
caddy validate --config /etc/caddy/Caddyfile --adapter caddyfile

Tester une application :

Terminal window
curl -I https://forgejo.corentin-talour.fr

Résultat attendu :

HTTP/2 200

Afficher les journaux :

Terminal window
journalctl -u caddy -f

Vérifier les fichiers de configuration :

Terminal window
ls /etc/caddy/sites/

Valider la configuration avant un rechargement :

Terminal window
caddy validate --config /etc/caddy/Caddyfile --adapter caddyfile