Ajouter un sous-domaine
Cette procédure rend un service accessible sous un nom comme wiki.formuleets.ca, en HTTPS, avec un certificat Let's Encrypt obtenu automatiquement par Caddy. Compte environ 15 minutes.
Pour comprendre comment les pièces s'assemblent, lis d'abord Domaines, reverse proxy et certificats.
Tout ce qui passe par Caddy est public. Avant d'exposer un service, vérifie qu'il exige une connexion, que les inscriptions libres sont fermées et que son interface d'administration est protégée (voir l'exemple de /admin de Vaultwarden à l'étape 3).
Quand le faire
- Tu installes un nouveau service (wiki, tableau de bord, NAS…) et tu veux un nom facile à retenir au lieu d'une IP et d'un port.
- Un service doit fonctionner avec une appli mobile ou un navigateur qui exige HTTPS.
- Un service change de machine : il suffit de modifier le manipulateur dans Caddy, le nom reste le même.
Avant de commencer
- Le service tourne déjà et répond en HTTP. Teste depuis ton PC :
http://IP:PORTdoit s'ouvrir. - Tu as accès à Cloudflare (identifiants dans Vaultwarden) et à l'interface web d'OPNsense (
https://10.194.24.56:8443, depuis un poste admin). - Choisis un nom court, en minuscules, sans accents :
wiki,nas,grafana.
1. Déclarer le domaine dans Caddy
Commence par Caddy : il obtient le certificat par le DNS, sans avoir besoin que le nom pointe déjà vers lui.
- Dans OPNsense, ouvre Services → Caddy Web Server → Proxy inversé, onglet Domaines.
- Clique sur + et remplis :
- Protocole :
https:// - Domaine :
wiki.formuleets.ca - Port : vide
- Certificat : Auto HTTPS
- Défi DNS-01 : coché
- Description : le nom du service
- Protocole :
- Clique sur Sauvegarder.
2. Créer le manipulateur
- Onglet Manipulateurs, clique sur +.
- Remplis :
- Domaine :
https://wiki.formuleets.ca - Chemin : vide (tout le site)
- Directive :
reverse_proxy - En amont → Protocole :
http:// - Domaine amont : l'IP de la machine du service, puis Entrée (la valeur doit apparaître dans une pastille)
- Port amont : le port du service
- Domaine :
- Clique sur Sauvegarder, puis sur Appliquer en bas de la page.
Le bouton copier (deux carrés) d'une ligne existante préremplit le formulaire : il ne reste qu'à changer le domaine, l'IP et le port.
3. Protéger l'administration (si besoin)
Si le service a une page d'administration, n'ouvre-la qu'aux réseaux internes :
- Onglet Manipulateurs, copie la ligne du service.
- Dans la copie, mets Chemin = le chemin de l'administration (par exemple
/admin*) et, dans la section Accès, Liste d'accès =interne. - Sauvegarder, puis Appliquer.
Caddy traite toujours le chemin le plus précis en premier : l'administration passe par cette ligne, le reste par la ligne générale.
4. Vérifier le certificat
Attends 2 à 3 minutes (Caddy laisse 2 minutes à la propagation DNS), puis, depuis un poste admin :
curl -sI --resolve wiki.formuleets.ca:443:142.137.247.115 https://wiki.formuleets.ca
Tu dois avoir une réponse du service, sans erreur de certificat. --resolve force le passage par Caddy même si le DNS n'existe pas encore.
5. Créer l'enregistrement DNS dans Cloudflare
- Va sur dash.cloudflare.com et ouvre
formuleets.ca. - Ouvre DNS → Records, puis clique sur Add record.
- Remplis :
- Type :
A - Name : le sous-domaine, par exemple
wiki - IPv4 address :
142.137.247.115(notre IP publique, pas celle du service) - Proxy status : DNS only (nuage gris)
- TTL : Auto
- Type :
- Clique sur Save.
L'enregistrement pointe vers OPNsense (142.137.247.115). C'est Caddy qui sait vers quelle machine et quel port envoyer la requête.
6. Configurer le service
Beaucoup d'applications doivent connaître leur adresse publique pour générer leurs liens et accepter les requêtes. Sans ça, tu obtiens des redirections vers l'IP, des boucles ou une erreur « Invalid host ».
Cherche dans la documentation du service une variable du genre DOMAIN, HOST_NAME, BASE_URL ou ROOT_URL, et mets l'adresse complète en https://. Exemples :
| Service | Variable |
|---|---|
| OpenProject | OPENPROJECT_HOST__NAME=project.formuleets.ca et OPENPROJECT_HTTPS=true |
| Vaultwarden | DOMAIN=https://bitwarden.formuleets.ca |
Si le service enregistre l'IP des visiteurs (journaux, blocage après plusieurs échecs), indique-lui de lire l'en-tête X-Forwarded-For, envoyé par Caddy, en faisant confiance à OPNsense. Sinon, il verra l'IP d'OPNsense pour tout le monde.
Ensuite, recrée les conteneurs pour qu'ils relisent la configuration (un simple restart ne relit pas le .env) :
docker compose down
docker compose up -d
7. Tester
- Ouvre
https://wiki.formuleets.ca. Le cadenas doit s'afficher, sans avertissement. - Teste aussi depuis l'extérieur, par exemple avec check-host.net (Check HTTP).
- Si ça ne marche pas, va voir Dépannage réseau.
8. Documenter
Ajoute le nouveau sous-domaine aux tableaux de Domaines, reverse proxy et certificats (vue d'ensemble et enregistrements existants).
Retirer un sous-domaine
- Dans Caddy, supprime le manipulateur puis le domaine, et clique sur Appliquer.
- Dans Cloudflare, supprime l'enregistrement A.
- Retire les lignes des tableaux dans la documentation.