La nuova release di Traefik con la major release 3, ha introdotto alcune novità. Tra queste c’é l’integrazione con i certificati di Tailscale. Questa novità permette di avere dei certificati per l’https
in modo semplice.
Naturalmente ci sono alcune limitazioni e vanno considerate (installazione su docker):
- Tailscale deve essere funzionante sulla macchina sulla quale gira docker
- al momento (vedi #9772) può essere richiesto solo il certificato della macchina locale (hostname definito su Tailscale)
Configurazione di Tailscale#
Si trovano parecchie guide su come creare delle reti Tailscale, quindi non farà parte di questa guida. Per rendere funzionante il passo successivo si devono configurare i seguenti punti (console di amministrazione, nel tab DNS):
- deve essere definito un nome per la Tailnet (in questo esempio
yak-bebop.ts.net
) - attivare il MagicDNS
- attivare i certificati HTTPS
Per testare il funzionamento servono due macchine, una con docker (in questo esempio userò server-traefik
come hostname su Tailscale). Entrambe devono far parte di una rete Tailscale e devono poter comunicare tra di loro (attenzione se avete configurato delle ACL).
Prima di passare al passo successivo assicurarsi che la rete Tailscale sia avviata con il comando:
sudo tailscale up
Configurazione di Traefik#
Ecco un esempio di configurazione con docker compose per avere un esempio funzionante (derivato dalla documentazione).
docker-compose.yml
services:
traefik:
image: traefik:v3.0
container_name: traefik
command:
- "--log.level=DEBUG"
- "--api.insecure=true"
- "--providers.docker=true"
- "--providers.docker.exposedbydefault=false"
- "--entrypoints.websecure.address=:443"
- "--entrypoints.web.address=:80"
- "--certificatesresolvers.myresolver.tailscale=true"
ports:
- 80:80
- 443:443
- 8080:8080
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- /var/run/tailscale/tailscaled.sock:/var/run/tailscale/tailscaled.sock
whoami:
image: containous/whoami:latest
container_name: whoami
labels:
- "traefik.enable=true"
- "traefik.http.routers.whoami.rule=Host(`server-traefik.yak-bebop.ts.net`)"
- "traefik.http.routers.whoami.entrypoints=websecure"
- "traefik.http.routers.whoami.tls.certresolver=myresolver"
Ora è possibile creare i container con il comando:
sudo docker compose up -d
Adesso è possibile inserire l’indirizzo https://server-traefik.yak-bebop.ts.net
nel browser per visualizzare le informazioni del container ẁhoami
e buon divertimento! Se non funziona potete collegarvi alla porta 8080 e vedere l’attuale configurazione caricata da Traefik.