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.
Fonctionnement
Section titled “Fonctionnement”Le fichier principal est situé à :
/etc/caddy/CaddyfileIl contient uniquement la configuration globale et importe les configurations des différents services :
{ email admin@example.com}
import /etc/caddy/sites/*.confChaque fichier de configuration est généré à partir d’un template Ansible puis déployé dans :
/etc/caddy/sites/Par exemple :
forgejo.confpenpot.confuptime-kuma.confdocs.confCette approche permet à chaque application de gérer sa propre configuration sans modifier le fichier principal.
Les variables
Section titled “Les variables”Les varaibles sont contenue dans le fichier main.yml dans le dossier defaults.
Variables globales
Section titled “Variables globales”| 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 |
Variables des reverse proxy
Section titled “Variables des reverse proxy”| Variable | Description |
|---|---|
caddy_<service>_domain |
Nom de domaine |
caddy_<service>_upstream |
Adresse du service Docker |
Déploiement
Section titled “Déploiement”Le rôle effectue les opérations suivantes :
- Installation des dépendances nécessaires à l’ajout du dépôt officiel Caddy.
- Ajout du dépôt officiel Caddy.
- Mise à jour du cache APT si le dépôt vient d’être ajouté.
- Installation de Caddy.
- Création des répertoires :
/etc/caddy/sites/var/www/site
- Déploiement du fichier principal
Caddyfile. - Déploiement des configurations des différents sites :
site.confforgejo.confpenpot.confuptime-kuma.conf
- Validation complète de la configuration avec :
Terminal window caddy validate --config /etc/caddy/Caddyfile --adapter caddyfile - Activation du service Caddy au démarrage.
- Démarrage du service Caddy.
- Rechargement automatique de Caddy lorsqu’une configuration est modifiée.
Ajouter un nouveau service
Section titled “Ajouter un nouveau service”Pour publier une nouvelle application derrière Caddy :
- créer un template
<service>.conf.j2 - définir les variables du domaine et de l’upstream dans le fichier
main.ymlcontenue dans le dossierdefaultsdu projet Infra - Dans le fichier
install.ymlcontenue dans le dossiertasksajouter une nouvelle étape dans le playbooks qui permet de déployer le template crée dans le VPS à l’endroit suivant/etc/caddy/sites/ - exécuter le playbook Ansible
- vérifier que la configuration est valide
Vérification
Section titled “Vérification”Vérifier que le service est actif :
systemctl status caddyValider la configuration :
caddy validate --config /etc/caddy/Caddyfile --adapter caddyfileTester une application :
curl -I https://forgejo.corentin-talour.frRésultat attendu :
HTTP/2 200Dépannage
Section titled “Dépannage”Afficher les journaux :
journalctl -u caddy -fVérifier les fichiers de configuration :
ls /etc/caddy/sites/Valider la configuration avant un rechargement :
caddy validate --config /etc/caddy/Caddyfile --adapter caddyfile