Traefik Plugins erstellen – so einfach kann es sein!
Traefik ist nicht nur ein leistungsstarker Reverse Proxy, sondern bietet mit seinem Plug-in-System die Möglichkeit, eigene Middleware-Module zu entwickeln. In diesem Artikel zeigen wir dir Schritt für Schritt, wie du Traefik Plugins erstellst – inklusive Beispielcode für Authentifizierung, Rate-Limiting und mehr.


🚀 Warum eigene Traefik Plugins?

Das Plug-in-System von Traefik Proxy basiert auf Go (Golang) und ermöglicht dir, eigene Middleware-Funktionen zu erstellen – z. B. für:

  • 🔒 Benutzerdefinierte Authentifizierung
  • 🚫 Dynamisches Rate-Limiting
  • 🛠 Rewriting oder Header-Logik
  • 🧠 Intelligente Weiterleitungen basierend auf Kontext

Gerade für Cloud-native Umgebungen (Docker, Kubernetes) ist das ein riesiger Vorteil, weil du den Reverse Proxy als intelligente Steuerzentrale verwenden kannst.


⚙️ Voraussetzungen

  • Traefik v2.4+ oder neuer
  • Eine Go-Entwicklungsumgebung (Go ≥ 1.18)
  • Docker oder lokales Setup zum Testen
  • Traefik auf deinem Cluster oder Server

📦 Schritt-für-Schritt: Ein eigenes Traefik Plugin schreiben

1. 🔧 Projektstruktur anlegen

Erstelle einen Plugin-Ordner:

mkdir my-traefik-plugin
cd my-traefik-plugin

go.mod:

module github.com/deinbenutzername/my-traefik-plugin

go 1.18

require (
github.com/traefik/plugindemo v0.0.0
)

2. 🧠 Beispiel: Middleware mit Logging

Erstelle myplugin.go:

package myplugin

import (
"context"
"net/http"
"github.com/traefik/traefik/v2/pkg/middlewares"
)

type Config struct {
Message string
}

func CreateConfig() *Config {
return &Config{Message: "Standardlog"}
}

type MyPlugin struct {
next http.Handler
name string
message string
}

func New(ctx context.Context, next http.Handler, config *Config, name string) (http.Handler, error) {
return &MyPlugin{
next: next,
name: name,
message: config.Message,
}, nil
}

func (a *MyPlugin) ServeHTTP(rw http.ResponseWriter, req *http.Request) {
log.Printf("Anfrage erhalten für: %s", req.URL.Path)
a.next.ServeHTTP(rw, req)
}

3. 🧪 Plugin in Traefik einbinden

Bearbeite deine traefik.yml:

experimental:
plugins:
myplugin:
moduleName: "github.com/deinbenutzername/my-traefik-plugin"
version: "v0.0.1"

api:
dashboard: true

entryPoints:
web:
address: ":80"

http:
routers:
example:
rule: "Host(`howtonow.de`)"
entryPoints: ["web"]
service: "dummy"
middlewares: ["myplugin@plugin"]

🔐 Weitere Beispiele

✅ Authentifizierung (Basic Auth als Plugin)

Nutze Header-Überprüfung oder JSON-Token-Logik im Plugin selbst.
🔍 Vorteil: Kein externes Tool notwendig – alles im Proxy erledigt.

📉 Rate Limiting Plugin

Zähle IPs oder Header mit eigener Logik und blockiere bei Überschreitung.


⚠️ Hinweise zum Plugin-Hosting

  • Plugins müssen öffentlich auf GitHub sein.
  • Versionierung via go mod und Git-Tags erforderlich
  • Container-Registrierung (DockerHub/GitHub Registry) optional

🧠 Fazit

Mit dem Traefik Plugin-System hebst du Reverse Proxy-Setups auf ein neues Level:
Mehr Kontrolle, mehr Flexibilität, mehr Sicherheit – direkt im Datenfluss.


📚 Lies auch:

Traefik 3.4 Deep Dive – Neue Funktionen im Überblick