Traefik Dashboard konfigurieren

Das Traefik Dashboard war einer der großen Punkte, die meine Community noch auf dem Wunschzettel geschrieben hat. Entsprechend habe ich nun für mein Docker-Homelab Repository auf Github dieses in die bestehenden Dateien eingepflegt. Das Traefik Dashboard liefert dir interessante Informationen über die dahinter liegenden Webseiten und Anwendungen.

In einem YouTube Kommentar bin ich dann vor einigen Tagen darauf angesprochen worden, dass die Statusseite von Traefik nicht funktioniert. Diesem Problem habe ich mich also angenommen und das Dashboard unter Traefik 2.0 konfiguriert.

traefik dashboard
Traefik Dashboard

Im Wesentlichen müssen hierbei nur diverse Labels an der docker-compose.yaml-Datei angefügt werden. Die Traefik-Konfigurationsdatei traefik.toml ist schon für das Dashboard vorbereitet. Allerdings sollte man diese ebenfalls austauschen, da ich hier andere Anpassungen vorgenommen habe.

Diese Seite bietet vielerlei Informationen rund um die einzelnen Anwendungen. Zudem können hieraus direkt Metriken für die Besucherstatistik sowie Performance der Webseiten gewonnen werden. Zu einem späteren Zeitpunkt werde ich sicherlich einen weiteren Blogpost oder YouTube Video zu dem Thema veröffentlichen.

Solltest du Gefallen an meiner Arbeit finden, würde ich es sehr begrüßen wenn du mich dabei ein wenig finanziell unterstützt.

2 Kommentare

  1. Hallo Christian,
    tolle Arbeit.
    Hier mein Ansatz…
    Dafür ist keine dynamic.yaml oder eine .toml config nötig, da sämtliche Variablen per Labels gesetz werden.

    version: ‚3.3‘
    services:
    #Traefik Proxy Setup
    traefik:
    image: traefik
    restart: always
    container_name: traefik
    command:
    # These are the CLI commands that will configure Traefik and tell it how to work! #
    # API Settings – https://docs.traefik.io/operations/api/, endpoints
    – –api.insecure=false # <== Enabling insecure api, NOT RECOMMENDED FOR PRODUCTION
    – –api.dashboard=true # <== Enabling the dashboard to view services, middlewares, routers, etc…
    #- –api.debug=true # <== Enabling additional endpoints for debugging and profiling
    # Log Settings (options: ERROR, DEBUG, PANIC, FATAL, WARN, INFO) – https://docs.traefik.io/observability/logs/ ##
    #- –log.level=DEBUG # <== Setting the level of the logs from traefik
    # Provider Settings – https://docs.traefik.io/providers/docker/#provider-configuration ##
    – –providers.docker=true # <== Enabling docker as the provider for traefik
    – –providers.docker.exposedbydefault=false # <== Don't expose every container to traefik, only expose enabled ones
    – –providers.file.filename=/dynamic.yaml # <== Referring to a dynamic configuration file
    – –providers.docker.network=traefik-proxy # <== Operate on the docker network named web
    # Entrypoints Settings – https://docs.traefik.io/routing/entrypoints/#configuration ##
    – –entrypoints.web.address=:80 # <== Defining an entrypoint for port :80 named web
    – –entrypoints.secured-web.address=:443 # <== Defining an entrypoint for https on port :443 named secured-web
    # Certificate Settings (Let's Encrypt) – https://docs.traefik.io/https/acme/#configuration-examples ##
    # CA server to use.
    # Uncomment the line to use Let's Encrypt's staging server, leave commented to go to prod.
    # Default: "https://acme-v02.api.letsencrypt.org/directory&quot;
    – –certificatesResolvers.bsp-resolver.acme.caServer=https://acme-staging-v02.api.letsencrypt.org/directory
    – –certificatesResolvers.bsp-resolver.acme.tlschallenge=true # <== Enable TLS-ALPN-01 to generate and renew ACME certs
    – –certificatesResolvers.bsp-resolver.acme.email=user@domain.bsp # <== Setting email for certs
    – –certificatesResolvers.bsp-resolver.acme.storage=acme.json # <== Defining acme file to store cert information
    ports:
    – "80:80" # <== http
    – "443:443" # <== https
    – "8080:8080" # <== :8080 is where the dashboard runs on
    volumes:
    – /var/run/docker.sock:/var/run/docker.sock:ro # <== Volume for docker admin
    – ./letsencrypt:/letsencrypt # <== Volume for certs (TLS)
    networks:
    – traefik-proxy # <== Placing traefik on the network named web, to access containers on this network
    labels:
    # Labels define the behavior and rules of the traefik proxy for this container ##
    – "traefik.enable=true" # <== Enable traefik on itself to view dashboard and assign subdomain to view it
    – "traefik.docker.network=traefik-proxy" # Defines the default Traefik network
    – "traefik.http.middlewares.redirect-https.redirectScheme.scheme=https" # <== This is a middleware to redirect to https
    – "traefik.http.middlewares.redirect-https.redirectScheme.permanent=true"

    – "traefik.http.routers.api.service=api@internal" # <== Enabling the api to be a service to access
    – "traefik.http.routers.api.rule=Host(`bsp.domain.bsp`)" # <== Setting the domain for the dashboard
    – "traefik.http.routers.api.entrypoints=web" # <== Defining the entrypoint for http, **ref: line 22

    – "traefik.http.routers.api-secured.service=api@internal" # <== Enabling the api to be a service to access on https
    – "traefik.http.routers.api-secured.rule=Host(`bsp.domain.bsp`)" # <== Your Domain Name for the https rule
    – "traefik.http.routers.api-secured.entrypoints=secured-web" # <== Defining entrypoint for https, **ref: line 23
    – "traefik.http.routers.api-secured.tls.certresolver=bsp-resolver" # <== Defining certsresolvers for https
    – "traefik.http.routers.api-secured.middlewares=dshbrd-auth" # <== This is a middleware to restrict access to known users
    # Declaring the user list
    # Note: all dollar signs in the hash need to be doubled for escaping.
    # To create user:password pair, it's possible to use this command:
    # echo $(htpasswd -nb user password) | sed -e s/\\$/\\$\\$/g
    – "traefik.http.middlewares.dshbrd-auth.basicauth.users=test:$$apr1$$H6uskkkW$$IgXLP6ewTrSuBkTrqE8wj/,test2:$$apr1$$d9hr9HBB$$4HxwgUir3HP4EsggP/QNo0"

    networks:
    traefik-proxy:
    external: true

    Beste Grüße aus Karlsruhe

    • Hallo Holger,
      vielen Dank für deine Ausführung. Ich kann dich verstehen alles in einer Datei zu konfigurieren. Ich persönlich finde es aber so etwas unübersichtlich, daher empfehle ich meist den Weg über die toml Datei.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.