Depuis la version 3.0 de Traefik, le protocole HTTP/3 (QUIC ) est stable et disponible sans configuration expérimentale.
Objectif: Permettre à Traefik d’écouter/répondre aux requêtes HTTP/3 (QUIC)
Environnement : Debian 13, Docker 28.x, docker compose (plugin) 2.32.x, Traefik 3.6.
Contexte d’exécution :
jho@vmi866042:/opt/docker/dc$ tree
.
├── conf
│ ├── acme.json
│ ├── traefik.yml
│ ├── traefikdynamic
│ │ ├── dynamic.yml
├── docker-compose.yml
└── logs
├── traefikAccess.log
├── traefik.logRésultat de la commande “tree” dans le dossier /opt/docker/dc
- dossier où se trouvent tous les fichiers et dossiers pour cet exemple :
/opt/docker/dc - emplacement du fichier de configuration principal de Traefik :
/opt/docker/dc/conf/traefik.yml - dossier où se trouvent les configurations de Traefik (fichiers dynamiques) :
/opt/docker/dc/conf/traefikdynamic - emplacement du fichier comportant tous les certificats générés par Let’s Encrypt (ou autre) :
/opt/docker/dc/conf/acme.json - dossier où se trouvent les journaux d’événements (logs) :
/opt/docker/dc/logs/
Principes et prérequis#
HTTP/3 est un nouveau protocole standardisé visant à améliorer la vitesse de navigation sur le web. Sans rentrer dans de nombreux détails, HTTP/3 est un protocole de transport pour distribuer des requêtes HTTP plus rapidement qu’avec HTTP/2 (TCP), notamment en utilisant l’UDP.
HTTP/3 QUIC - image récupérée depuis le blog CloudFlarePour plus d’informations, je vous suggère ces sites :
Configuration de Traefik#
Avant de vous lancer dans la configuration du HTTP/3, notez que depuis Traefik 3, HTTP/3 partage le même port que l’entrypoint HTTPS : Traefik écoute donc à la fois sur le port 443/TCP (HTTPS) et 443/UDP (HTTP/3) via le même entrypoint. L’entrypoint utilisé pour HTTP/3 doit être celui sur lequel vous avez activé la partie TLS pour vos routeurs.
La configuration est assez simple : modifiez l’entrypoint servant le HTTPS pour y activer le HTTP/3 :
entryPoints:
web:
address: ":80"
http:
redirections:
entryPoint:
to: websecure
scheme: https
websecure:
address: ":443"
http3:
advertisedPort: 443Vous devez redémarrer Traefik pour valider les changements. Avec cette configuration, tous vos routeurs configurés avec l’entrypoint “websecure” (selon l’exemple) seront accessibles en HTTP/2 et HTTP/3.
Configuration du fichier docker-compose.yml#
Vous devez faire écouter Traefik sur le port 443/UDP pour qu’il puisse écouter/distribuer en HTTP/3. Ainsi, modifiez le service dans le fichier docker-compose comme tel :
---
services:
traefik:
image: traefik:v3.6
container_name: traefik
restart: unless-stopped
ports:
- target : 80
published : 80
protocol: tcp
mode : host
### BEGIN dashboad
- target : 8080
published : 8080
protocol: tcp
mode : host
### END dashboard
- target : 443
published : 443
protocol: tcp
mode : host
# HTTP/3 QUIC
- target : 443
published : 443
protocol: udp
mode : host
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./conf/traefikdynamic:/dynamic
- ./conf/traefik.yml:/etc/traefik/traefik.yml:ro
- ./conf/acme.json:/etc/traefik/acme.json
- ./logs/traefik.log:/etc/traefik/applog.log
environment:
TZ: Europe/ParisPour tester, vous pouvez utiliser l’outil disponible chez Domsignal :
HTTP/3 Test | Ensure Your Website’s Speed and CompatibilityFind out if your site supports the latest H3 protocol for better performance. Domsignal H3 tool use cURL for the testingDomsignalLorsque votre configuration fonctionne, vous devez avoir ce résultat :