Introduction#
Il y a quelques mois, j’ai décidé d’arrêter d’utiliser des services cloud coûteux et de mettre en place ma propre infrastructure à la maison. La solution que j’ai trouvée a été de combiner Docker avec Traefik. Cela fonctionne bien et maintenant j’ai plusieurs services fonctionnant sous HTTPS sans toucher manuellement à un certificat. Je te raconte comment j’ai fait.
Ce dont tu as besoin#
Un serveur avec Docker installé (n’importe quelle machine Linux avec 2GB de RAM suffit). Un domaine personnel. Un peu de patience avec DNS. C’est tout.
Si tu n’as pas de serveur dédié, tu as des options selon le budget et la consommation : une Raspberry Pi 3 B+ (lien d’affiliation) est parfaite pour les services légers avec une consommation d’énergie minimale. Si tu as besoin de plus de puissance, un ordinateur portable comme le Lenovo V15 (lien d’affiliation) est une option très polyvalente : en plus de serveur domestique, il a la capacité de fonctionner avec des logiciels industriels de marques comme Siemens (TIA Portal, SIMATIC) ou d’autres environnements d’automatisation qui demandent des ressources réelles. Un équipement, deux usages.
Le plan#
Je vais utiliser Traefik comme reverse proxy. Il gère automatiquement les certificats Let’s Encrypt, achemine le trafic vers les bons conteneurs et sert HTTPS sans que tu aies à faire quoi que ce soit une fois configuré. C’est propre et ça fonctionne.
Étape 1 : Préparer Docker Compose#
Crée un dossier pour ta stack :
mkdir -p ~/docker/traefik
cd ~/docker/traefikCe sera ton fichier docker-compose.yml :
version: '3.8'
services:
traefik:
image: traefik:v2.10
container_name: traefik
restart: always
ports:
- "80:80"
- "443:443"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./traefik.yml:/traefik.yml
- ./acme.json:/acme.json
networks:
- web
networks:
web:
driver: bridgeCrée le fichier traefik.yml :
api:
insecure: true
dashboard: true
entryPoints:
web:
address: ":80"
http:
redirections:
entryPoint:
to: websecure
websecure:
address: ":443"
certificatesResolvers:
letsencrypt:
acme:
email: tu-email@example.com
storage: acme.json
httpChallenge:
entryPoint: web
providers:
docker:
endpoint: unix:///var/run/docker.sock
exposedByDefault: false
file:
filename: traefik.ymlCrée le fichier acme.json avec des permissions restrictives :
touch acme.json
chmod 600 acme.jsonÉtape 2 : Lance Traefik#
docker-compose up -dVérifie que c’est en fonctionnement :
docker-compose logs traefikÉtape 3 : Configure ton domaine#
Chez ton fournisseur DNS, pointe ton domaine (et un wildcard) vers l’adresse IP publique de ton serveur :
example.com A TU_IP_PUBLICA
*.example.com A TU_IP_PUBLICAAttends que ça se propage (environ 15 minutes).
Étape 4 : Ajoute ton premier service#
Je vais ajouter un exemple simple. Modifie le docker-compose.yml :
services:
traefik:
# ... config anterior
whoami:
image: traefik/whoami
restart: always
labels:
- "traefik.enable=true"
- "traefik.http.routers.whoami.rule=Host(`whoami.example.com`)"
- "traefik.http.routers.whoami.entrypoints=websecure"
- "traefik.http.routers.whoami.tls.certresolver=letsencrypt"
- "traefik.http.services.whoami.loadbalancer.server.port=80"
networks:
- webRedéploie :
docker-compose up -dAttends 30 secondes et accède à https://whoami.example.com. Le certificat est généré automatiquement.
Étape 5 : Ajoute plus de services#
Pour chaque nouveau service, ajoute simplement des labels similaires à ceux du whoami. Traefik s’occupe du reste. C’est aussi simple que ça.
Considérations pratiques#
Sauvegarde de acme.json : C’est ton fichier de certificats. Fais-en une sauvegarde régulièrement ou tu perdras les certificats.
Firewall : Ouvre les ports 80 et 443 sur ton routeur en pointant vers le serveur.
IP dynamique : Si ton fournisseur d’accès change ton IP (courant en résidentiel), utilise un service DDNS.
Dashboard : Traefik a un dashboard sur http://localhost:8080 (seulement depuis la machine locale pour la sécurité).
Problèmes courants#
Si les certificats ne se génèrent pas, vérifie les logs : docker-compose logs traefik. Généralement c’est un problème de DNS ou de firewall.
Si un service ne répond pas, vérifie que le label port correspond au port interne du conteneur.
Conclusion#
Avec cette setup, j’ai mis en place un blog, un wiki, nextcloud et d’autres services à la maison sans dépenser pour SSL ou pour un reverse proxy commercial. Traefik est une bête pour ça. Ça vaut vraiment le coup de consacrer une heure pour le configurer correctement.
Équipement recommandé#
- Raspberry Pi 3 B+ — Serveur léger à faible consommation pour démarrer ton homelab
- Raspberry Pi 4 (4GB) — La base parfaite pour homelab, Docker et monitoring
- Lenovo V15 — Ordinateur portable polyvalent comme serveur domestique ou pour logiciels industriels
- Support pliable pour ordinateur portable en aluminium avec angle réglable — Ergonomie essentielle si tu utilises l’ordinateur portable comme station de travail
Liens d’affiliation. Aucun coût supplémentaire pour toi.