My boring Blog

Home page di Mauro Frigerio

Usare i certificati Tailscale con Traefik

19-05-2024 Tempo di lettura 2 minuti Article

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):

  1. Tailscale deve essere funzionante sulla macchina sulla quale gira docker
  2. 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):

  1. deve essere definito un nome per la Tailnet (in questo esempio yak-bebop.ts.net)
  2. attivare il MagicDNS
  3. 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.