Pouet

Wake me up before you code Go!

Proxifier Traefik par Traefik

Comment faire en sorte que Traefik proxyfie son dashboard

Issif

2 minutes

traefik feature

Traefik possède une UI basique qui est par défaut exposée sur un port différent. Il est possible de faire en sorte que Traefik serve lui même de proxy, cela permet :

  • ne plus avoir à utiliser un port différent pour accéder l’UI, mais un domaine classique ("traefik.mondomaine.net” par ex.)
  • forcer l’accès en https avec en prime un certificat Let’s Encrypt automatique et gratuit
  • permettre de rajouter une authentification, par défaut, l’UI est ouverte à tout une fois activée

Dans mon cas, je fais tourner Traefik dans un container, mais ça marchera pareil si vous le faîtes tourner directement sur l’host, prenez juste soin de filtrer le port de l’UI (8080 par défaut) pour qu’il n’accepte que les connexions de la boucle local (127.0.0.1).

Voilà ce qu’il faut avoir à minima dans sa configuration config.toml :

################################################################
# Configuration globale
################################################################

defaultEntryPoints = ["http", "https"]

[entryPoints]
  [entryPoints.http]
  address = ":80"               # traefik ecoute sur le port 80
    [entryPoints.http.redirect]
      entryPoint = "https"      # redirection http > https
  [entryPoints.https]
  address = ":443"              # traefik ecoute sur le port 443
  [entryPoints.https.tls]
    minVersion = "VersionTLS12" # version minimum de TLS acceptee
  [entryPoints.ui]
  address="127.0.0.1:8080"      # on ecoute uniquement sur la boucle locale pour ce port
    [entryPoints.ui.auth]
      [entryPoints.ui.auth.basic]
        users = ["XXXX:YYYY"]   # les identifiants au format htpasswd

################################################################
# Configuration pour let's encrypt
################################################################

[acme]
email = "xxx@yyy.zzz"           # votre mail pour lets encrypt
storage = "/certs/acme.json"
entryPoint = "https"
onDemand = true                 # demande automatique de certificat
acmeLogging = true
  [acme.httpChallenge]
  entryPoint = "http"

################################################################
# Configuration de l'API de Traefik
################################################################

[api]
entryPoint = "ui"               # l API ecoutera sur cet entrypoint
dashboard = true
  [api.statistics]
  recentErrors = 50

################################################################
# Configuration pour l'UI de Traefik
################################################################

[file]

[frontends]
  [frontends.ui]
  backend = "ui"
  passHostHeader = true
    [frontends.ui.routes.default]
    rule = "Host:ui.mondomaine.net" # votre domaine a configurer

[backends]
  [backends.ui]
    [backends.ui.servers.default]
      url = "http://127.0.0.1:8080"   # le backend a utiliser qui s avere etre l entrypoint de l API

Enjoy

Posts récents

Voir plus

Catégories

A propos

Du Go, de l'AWS et autres par un SRE/FinOps