Initial vault setup
This commit is contained in:
@@ -0,0 +1,183 @@
|
||||
---
|
||||
title: Traefik
|
||||
created: 2026-06-06
|
||||
updated: 2026-06-06
|
||||
type: app
|
||||
tags: [catalogue, reverse-proxy, cloud-native, go, docker, auto-hebergement]
|
||||
confidence: high
|
||||
contested: false
|
||||
sources: [https://selfh.st/apps/?tag=Reverse+Proxy, https://traefik.io/]
|
||||
---
|
||||
# 🚦 Traefik
|
||||
|
||||
> **Reverse proxy cloud-native** : détecte automatiquement vos services Docker et génère les certs Let's Encrypt. Le standard pour les stacks Docker.
|
||||
|
||||
## 📋 Informations Générales
|
||||
|
||||
| Champ | Valeur |
|
||||
| :--- | :--- |
|
||||
| **Site web** | [traefik.io](https://traefik.io/) |
|
||||
| **GitHub** | [traefik/traefik](https://github.com/traefik/traefik) |
|
||||
| **License** | MIT |
|
||||
| **Langage** | Go |
|
||||
| **Étoiles GitHub** | 64k ⭐ |
|
||||
| **Dernière MAJ** | 2026-06-05 |
|
||||
| **Catégorie** | [[cat-reverse-proxy|Reverse Proxy]] |
|
||||
|
||||
## 📝 Description
|
||||
|
||||
**Traefik** est le **reverse proxy de référence pour les environnements Docker/Kubernetes**. Ses forces :
|
||||
|
||||
- ✅ **Auto-discovery** des services via Docker labels ou K8s
|
||||
- ✅ **Let's Encrypt automatique** (HTTP-01 ou DNS-01 challenge)
|
||||
- ✅ **Dashboard web** intégré
|
||||
- ✅ **API REST** pour introspection
|
||||
- ✅ **Hot reload** : pas besoin de redémarrer pour changer la config
|
||||
- ✅ **Multi-providers** : Docker, K8s, file, Consul, etcd...
|
||||
- ✅ **Middlewares** : auth, rate-limit, headers, compression...
|
||||
|
||||
**Différence avec Caddy** : Caddy = config statique (Caddyfile). Traefik = config dynamique via Docker (ajouter un service = ajouter des labels, c'est tout).
|
||||
|
||||
## 🚀 Installation
|
||||
|
||||
### Option 1 : Docker Compose (recommandé)
|
||||
|
||||
```yaml
|
||||
# docker-compose.yml
|
||||
version: '3.8'
|
||||
services:
|
||||
traefik:
|
||||
image: traefik:v3.0
|
||||
container_name: traefik
|
||||
restart: unless-stopped
|
||||
command:
|
||||
- "--api.dashboard=true"
|
||||
- "--providers.docker=true"
|
||||
- "--providers.docker.exposedbydefault=false"
|
||||
- "--entrypoints.web.address=:80"
|
||||
- "--entrypoints.web.http.redirections.entryPoint.to=websecure"
|
||||
- "--entrypoints.web.http.redirections.entryPoint.scheme=https"
|
||||
- "--entrypoints.websecure.address=:443"
|
||||
- "--certificatesresolvers.letsencrypt.acme.email=you@example.com"
|
||||
- "--certificatesresolvers.letsencrypt.acme.storage=/letsencrypt/acme.json"
|
||||
- "--certificatesresolvers.letsencrypt.acme.tlschallenge=true"
|
||||
ports:
|
||||
- "80:80"
|
||||
- "443:443"
|
||||
- "8080:8080" # Dashboard
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||
- letsencrypt:/letsencrypt
|
||||
networks:
|
||||
- proxy
|
||||
|
||||
# Exemple : un service qui sera auto-découvert
|
||||
whoami:
|
||||
image: traefik/whoami
|
||||
container_name: whoami
|
||||
networks:
|
||||
- proxy
|
||||
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"
|
||||
|
||||
networks:
|
||||
proxy:
|
||||
name: proxy
|
||||
|
||||
volumes:
|
||||
letsencrypt:
|
||||
```
|
||||
|
||||
> ⚡ **Pas besoin de recharger Traefik** ! Le service `whoami` est détecté automatiquement.
|
||||
|
||||
### Option 2 : Fichier de config statique
|
||||
|
||||
```yaml
|
||||
# traefik.yml
|
||||
api:
|
||||
dashboard: true
|
||||
|
||||
providers:
|
||||
docker:
|
||||
endpoint: "unix:///var/run/docker.sock"
|
||||
exposedByDefault: false
|
||||
|
||||
entryPoints:
|
||||
web:
|
||||
address: ":80"
|
||||
http:
|
||||
redirections:
|
||||
entrypoint:
|
||||
to: websecure
|
||||
scheme: https
|
||||
websecure:
|
||||
address: ":443"
|
||||
|
||||
certificatesResolvers:
|
||||
letsencrypt:
|
||||
acme:
|
||||
email: you@example.com
|
||||
storage: /letsencrypt/acme.json
|
||||
tlsChallenge: true
|
||||
```
|
||||
|
||||
## ⚙️ Configuration Initiale
|
||||
|
||||
1. **Déployer Traefik** (Docker Compose ci-dessus)
|
||||
2. **Pour chaque service** que vous voulez exposer :
|
||||
```yaml
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.MONAPP.rule=Host(`monapp.example.com`)"
|
||||
- "traefik.http.routers.MONAPP.entrypoints=websecure"
|
||||
- "traefik.http.routers.MONAPP.tls.certresolver=letsencrypt"
|
||||
```
|
||||
3. **Accéder au dashboard** : `http://IP_DU_SERVEUR:8080`
|
||||
|
||||
## 🔄 Alternatives
|
||||
|
||||
### Open Source
|
||||
- [[app-caddy]] — Plus simple pour config statique
|
||||
- [[app-nginx-proxy-manager]] — GUI complète
|
||||
- [[app-haproxy]] — Pour load balancing pur
|
||||
- [[app-pangolin]] — Tunneling + proxy
|
||||
|
||||
### Comparaison (voir aussi [[comparatif-reverse-proxy]])
|
||||
|
||||
| Critère | Traefik | Caddy | Nginx Proxy Manager |
|
||||
| :--- | :--- | :--- | :--- |
|
||||
| Auto-discovery | ✅ | ❌ | ⚠️ Partiel |
|
||||
| Let's Encrypt | ✅ | ✅ | ✅ |
|
||||
| GUI | Dashboard | ❌ | ✅ Complète |
|
||||
| Config | Labels/YAML | Caddyfile | GUI + fichiers |
|
||||
| Public cible | DevOps | Débutants | Débutants |
|
||||
| Performance | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ |
|
||||
|
||||
### Propriétaires (ce que Traefik remplace)
|
||||
- **Cloudflare Pro** (avec Workers)
|
||||
- **AWS ALB** (Elastic Load Balancing)
|
||||
- **F5 BIG-IP** (load balancer enterprise)
|
||||
|
||||
## 🔐 Sécurité
|
||||
|
||||
- **Let's Encrypt** : renouvellement automatique
|
||||
- **HTTP → HTTPS** redirection automatique
|
||||
- **Rate limiting middleware**
|
||||
- **IP Whitelisting middleware**
|
||||
- **Basic Auth, Digest Auth** intégrés
|
||||
|
||||
## 📚 Ressources
|
||||
|
||||
- [Documentation officielle](https://doc.traefik.io/traefik/)
|
||||
- [Docker provider](https://doc.traefik.io/traefik/providers/docker/)
|
||||
- [Let’s Encrypt](https://doc.traefik.io/traefik/https/acme/)
|
||||
|
||||
## Pages Liées
|
||||
- [[cat-reverse-proxy]] — Catégorie Reverse Proxy
|
||||
- [[app-caddy]] — Concurrent
|
||||
- [[recettes-docker-compose]] — Templates Traefik
|
||||
- [[comparatif-reverse-proxy]] — Comparaison détaillée
|
||||
- [[securisation-home-lab]] — Sécurité
|
||||
Reference in New Issue
Block a user