Depuis la version 2.5 de Traefik, vous pouvez désormais mettre en place/utiliser le protocole HTTP/3 (QUIC). Retenez toutefois qu'il s'agit encore d'une version au stade expérimentale pour Traefik, que des instabilités sont à prévoir.
Version | Date | Commentaires |
---|---|---|
1 | 05/2022 | Création de l'article |
1.1 | 08/2023 | Mise à jour des versions, mise à jour de l'URL de l'outil, ajout du résultat souhaité |
Objectif : Permettre Ă Traefik d'Ă©couter/rĂ©pondre aux requĂȘtes HTTP/3 (QUIC)
Environnement : Debian 12
, Docker 24.x
, docker compose (plugin) 2.20.x
, Traefik 2.10
.
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.log
- 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.

Pour plus d'informations, je vous suggĂšre ces sites :
Configuration de Traefik
Avant de vous lancer dans la configuration du HTTP/3, sachez qu'il n'est pas possible de faire Ă©couter Traefik sur un port UDP ayant le mĂȘme numĂ©ro de port qu'un port TCP. De plus, l'entrypoint utilisĂ© pour HTTP/3 doit ĂȘtre celui avec lequel vous avez activĂ© la partie TLS pour vos routeurs.
La configuration est assez simple dans l'ensemble : ajoutez le bloc "experimental" et modifier l'entrypoint servant le HTTPS :
experimental:
http3: true
entryPoints:
web:
address: ":80"
http:
redirections:
entryPoint:
to: websecure
scheme: https
websecure:
address: ":443"
http3:
advertisedPort: "443"
Vous 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:saintmarcelin
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/Paris
Pour tester, vous pouvez utiliser l'outil disponible chez Domsignal :

Lorsque votre configuration fonctionne, vous devez avoir ce résultat :
