Usare i certificati Tailscale con Traefik
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.