7.8 KiB
Executable File
Service Whoami - Test et Validation Traefik
📋 Description
Whoami est un service simple de Traefik qui renvoie des informations sur la requête HTTP reçue. Il est utilisé comme service de test pour valider que Traefik et Let's Encrypt sont correctement configurés.
🎯 Fonctionnalités
- Affiche l'adresse IP source
- Affiche les headers HTTP
- Affiche l'hôte et le chemin de la requête
- Utilisé pour tester la configuration reverse proxy
📡 Accès
- URL: https://test.peis.fr
- Type: HTTPS (certificat Let's Encrypt production)
- Service: whoami (traefik/whoami)
- Réseau: traefik_network
- Conteneur: whoami
- IP Traefik: 192.168.0.100 (CT 200 - traefik-proxy)
🚀 Déploiement
Prérequis
- Traefik déployé et fonctionnel (voir procédure HTTPS homelab)
- Réseau Docker
traefik_networkcréé - Port forwarding 80/443 configuré sur le routeur
Commandes
# Déployer le service whoami
cd /opt/traefik
docker-compose -f docker-compose-whoami.yml up -d
# Vérifier que le conteneur est en cours d'exécution
docker ps
# Voir les logs
docker logs whoami
📄 Fichier docker-compose-whoami.yml
version: '3.8'
services:
whoami:
image: traefik/whoami
container_name: whoami
restart: unless-stopped
labels:
- "traefik.enable=true"
# Router HTTP → HTTPS (redirection automatique)
- "traefik.http.routers.whoami-http.rule=Host(`test.peis.fr`)"
- "traefik.http.routers.whoami-http.entrypoints=web"
- "traefik.http.routers.whoami-http.middlewares=redirect-to-https@file"
# Router HTTPS (principal)
- "traefik.http.routers.whoami.rule=Host(`test.peis.fr`)"
- "traefik.http.routers.whoami.entrypoints=websecure"
- "traefik.http.routers.whoami.tls=true"
- "traefik.http.routers.whoami.tls.certresolver=letsencrypt"
# Configuration du service
- "traefik.http.services.whoami.loadbalancer.server.port=80"
networks:
- traefik_network
networks:
traefik_network:
external: true
⚠️ Note : Le sous-domaine
test.peis.frdoit exister dans votre DNS Infomaniak avec un enregistrement CNAME pointant verslab.peis.fr(qui pointe vers 82.67.139.7).
✅ Validation
1. Tester la connectivité HTTP (redirection)
# Depuis un terminal interne ou externe
curl -v http://test.peis.fr
Résultat attendu: Redirection 301 vers https://test.peis.fr
2. Tester HTTPS
# Depuis un navigateur
Ouvrir : https://test.peis.fr
# Depuis un terminal
curl -vk https://test.peis.fr
Résultat attendu : Réponse JSON avec les informations de la requête
Exemple de réponse :
{
"host": "freebox.peis.fr",
"method": "GET",
"path": "/",
"headers": {
"Accept": ["*/*"],
"User-Agent": ["curl/7.88.1"],
"X-Forwarded-For": ["192.168.0.1"],
"X-Forwarded-Host": ["freebox.peis.fr"],
"X-Forwarded-Port": ["443"],
"X-Forwarded-Proto": ["https"],
"X-Forwarded-Server": ["traefik"],
"X-Real-Ip": ["192.168.0.1"]
}
}
3. Vérifier le certificat SSL
# Depuis un navigateur
1. Ouvrir https://test.peis.fr
2. Cliquer sur l'icône 🔒 dans la barre d'adresse
3. Vérifier que le certificat est émis par "Let's Encrypt"
# Depuis un terminal (openssl)
openssl s_client -connect test.peis.fr:443 -servername test.peis.fr | openssl x509 -noout -text | grep -A 5 "Issuer:"
En mode production : Le certificat sera émis par "Let's Encrypt"
4. Vérifier dans les logs Traefik
# Voir les logs du conteneur Traefik
docker logs traefik-proxy | grep -i certificate
# Voir les certificats obtenus
docker exec traefik-proxy cat /etc/traefik/certs/acme.json | jq
Résultat attendu :
legolog: [INFO] [test.peis.fr] acme: Obtaining bundled SAN certificate
legolog: [INFO] [test.peis.fr] acme: Validations succeeded
🔧 Dépannage
Problème : Certificat non généré
Symptômes :
- Le site n'est pas accessible en HTTPS
- Erreur de certificat dans le navigateur
- Logs Traefik : "Unable to obtain ACME certificate"
Solutions :
-
Vérifier le port forwarding :
# Depuis une machine externe (pas votre réseau local) curl -v http://test.peis.fr/.well-known/acme-challenge/test→ Doit retourner une réponse HTTP (même une 404)
-
Vérifier que Traefik écoute sur le port 80 :
docker exec traefik-proxy netstat -tuln | grep 80→ Doit afficher
:::80ou0.0.0.0:80 -
Vérifier que le DNS pointe vers la bonne IP :
dig +short test.peis.fr→ Doit retourner
82.67.139.7(via CNAME lab.peis.fr) -
Vérifier que Let's Encrypt n'est pas rate limité :
- Attendez 1 heure si vous avez fait beaucoup de tests
-
Vérifier la configuration Let's Encrypt :
docker exec traefik-proxy cat /etc/traefik/traefik.yml | grep -A 5 certificatesResolvers→ Doit afficher
email: theo@peis.fret pas decaServer: acme-staging
Problème : 404 Not Found
Symptômes :
- La page renvoie 404
- Pas de réponse whoami
Solutions :
-
Vérifier que le conteneur whoami est en cours d'exécution :
docker ps | grep whoami -
Vérifier que whoami est sur le réseau traefik_network :
docker inspect whoami | grep Network -
Vérifier que Traefik détecte le service :
docker logs traefik-proxy | grep whoami -
Vérifier les routes Traefik :
docker exec traefik-proxy traefik get routers | grep whoami
Problème : Erreur de connection
Symptômes :
- Impossible de se connecter à freebox.peis.fr
- Timeout ou connection refused
Solutions :
-
Vérifier que le CT 200 est démarré :
pct list | grep 200 -
Vérifier que Docker est en cours d'exécution dans le CT :
ssh root@192.168.0.100 docker ps -
Vérifier que Traefik est en cours d'exécution :
docker ps | grep traefik -
Vérifier le port forwarding sur le routeur :
- TCP 80 → 192.168.0.100
- TCP 443 → 192.168.0.100
📚 Exemples d'utilisation
Exemple 1 : Tester depuis un navigateur
- Ouvrir https://test.peis.fr
- Vous devriez voir une page JSON avec les détails de votre requête
- Vérifier que l'URL est bien en HTTPS et que le cadenas est présent
Exemple 2 : Tester avec curl depuis une machine externe
# Depuis un smartphone en 4G ou une machine en dehors de votre réseau
curl -v https://test.peis.fr
Exemple 3 : Tester avec différents headers
curl -H "X-Custom-Header: test-value" https://test.peis.fr
→ Vous devriez voir "X-Custom-Header": ["test-value"] dans la réponse JSON
🗑️ Suppression
# Arrêter et supprimer le conteneur whoami
cd /opt/traefik
docker-compose -f docker-compose-whoami.yml down
# Supprimer le fichier de configuration (optionnel)
rm docker-compose-whoami.yml
# Redémarrer whoami (après modification)
docker-compose -f docker-compose-whoami.yml up -d --force-recreate
🔗 Liens utiles
Documentation générée le 17/07/2026 pour ton homelab