Attivare HTTP/3 in traefik v3
La recente major release v3 di Traefik, ha portato nuove funzionalità o concretizzato alcune. Come i certificati tramite Tailscale e HTTP3. In questa breve guida voglio presentare un esempio di configurazione per utilizzare HTTP3 in Traefik. Il cambiamento non è drastico, perché la funzionalità era già esistente come sperimentale.
Requisiti
- macchina Linux con docker e compose (altrimenti non saresti qui)
- un dominio
- con il quale si possa ottenere un certificato TLS valido (HTTPS)
- nel esempio uso il dominio, DNS e certificati di traefik.me
Procedura
creare i file
docker-compose.yml
etls.yml
con il contenuto dei successivi capitolimodificare il file
docker-compose.yml
in particolare: il percorso delle cartelle per traefik e sostituire l’indirizzo IP del server (comandoip a
) con il propriocreare una cartella
cert
per salvare i certificati TLS di traefik.mescaricare i certificati con il seguente comando (l’opzione -d non è presente):
sudo docker compose up helper
- creare il container
traefik
ewhoami
sudo docker compose up -d traefik
sudo docker compose up -d whoami
- testare il funzionamento
Docker compose (docker-compose.yml)
services:
traefik:
image: traefik:v3.0
container_name: traefik
command:
- "--log.level=DEBUG"
- "--providers.docker=true"
- "--providers.file.filename=/tls.yml"
- "--providers.docker.exposedbydefault=false"
- "--entrypoints.websecure.address=:443"
- "--entrypoints.websecure.http3"
- "--entrypoints.web.address=:80"
- "--entryPoints.web.http.redirections.entryPoint.to=websecure"
ports:
- 80:80
- 443:443/tcp
- 443:443/udp
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- PATH/TO/cert:/etc/ssl/traefik
- PATH/TO/tls.yml:/tls.yml
whoami:
image: containous/whoami:latest
container_name: whoami
labels:
- "traefik.enable=true"
- "traefik.http.routers.whoami.rule=Host(`1-2-3-4.traefik.me`)" # change 1-2-3-4 with you server IP
- "traefik.http.routers.whoami.tls.domains[0].main=*.traefik.me"
- "traefik.http.routers.whoami.entrypoints=websecure"
helper:
image: alpine
command: sh -c "cd /etc/ssl/traefik
&& wget traefik.me/cert.pem -O cert.pem
&& wget traefik.me/privkey.pem -O privkey.pem"
volumes:
- PATH/TO/cert:/etc/ssl/traefik
File provider di traefik (tls.yml)
tls:
stores:
default:
defaultCertificate:
certFile: /etc/ssl/traefik/cert.pem
keyFile: /etc/ssl/traefik/privkey.pem
certificates:
- certFile: /etc/ssl/traefik/cert.pem
keyFile: /etc/ssl/traefik/privkey.pem
Come testare
Vi consiglio di testare il funzionamento con Chrome o un browser derivato (io uso Brave). Su Firefox non sono ancora riuscito a far funzionare l’HTTP3.
Aprire gli strumenti per sviluppatori
o click con il tasto destro e scegliere l’opzione ispeziona
. Aprire il tab network
o rete
e ricaricare la pagina. Nella tabella è possibile visualizzare i vari file scaricati, nella colonna protocollo
potete vederese il vostro server fornisce http2
= h2
o http3
= h3
. Se avete aperto la pagina prima di cambiare la configurazione di traefik può essere consigliato riavviare il browser.
Problemi comuni
- certificato non valido o scaduto: verificare che nella dashboard di traefik sia attivo il certificato TLS per il nostro router. Se il certificato è giusto ma scaduto, verificare che su traefik.me sia presente uno aggiornato. Se non si può aspettare allora usate Tailscale o acquistate il vostro dominio.
- il dominio *.traefik.me non funziona: traefik.me permette varie notazioni, ma per i certificati gli indirizzi IP non devono essere scritti con il punto, ma con la linea ("-"). Si può testare il corretto funzionamento del dominio provando ad accedere alla dashboard di traefik con l’indirizzo http://1-2-3-4.traefik.me:8080 (attenzione al http non https e sostituire 1-2-3-4 con l’indirizzo IP giusto).
- ho seguito tutti i passaggi, ma il certificato è sempre sbagliato: i file
.pem
devono essere salvati con diritti particolari. Usa il containerhelper
per scaricarli con i giusti diritti.