Homelab-Notizen: Dienste hinter Traefik betreiben
Mein aktuelles Homelab-Setup, warum ich von nginx-proxy gewechselt habe und was dabei kaputtgegangen ist.
Habe das Wochenende damit verbracht, meinen Homelab-Reverse-Proxy von nginx-proxy auf Traefik v3 zu migrieren. Hier ist, was ich am Ende hatte.
Der Stack
- Mini-PC, Debian 12, Docker Compose
- Traefik v3 als den einzigen Einstiegspunkt auf 80/443
- Cloudflare-Origin-Zertifikate für öffentliche Dienste
- Step-CA für interne
*.lab-Zertifikate - ~18 Dienste, von Home Assistant bis zu einem selbstgehosteten Postgres
Warum ich gewechselt bin
nginx-proxy war in Ordnung, bis ich pro Dienst Middleware (Ratenbegrenzung, Auth-Weiterleitung, Kompression) wollte. Das Hinzufügen zu nginx-proxy bedeutet Templating; Traefik behandelt Middleware als erstklassige Labels.
Das Compose-Muster, auf das ich mich geeinigt habe
services:
paperless:
image: ghcr.io/paperless-ngx/paperless-ngx
labels:
- traefik.enable=true
- traefik.http.routers.paperless.rule=Host(\`paperless.lab\`)
- traefik.http.routers.paperless.entrypoints=websecure
- traefik.http.routers.paperless.tls=true
- traefik.http.routers.paperless.middlewares=forward-auth@file
- traefik.http.services.paperless.loadbalancer.server.port=8000
networks: [edge]
Jeder Dienst erhält diese sechs Labels. Middleware-Ketten leben in einer gemeinsamen dynamic.yml.
Was kaputt ging
- Websockets benötigten explizit
passHostHeader=trueam Router. - Ein Dienst lieferte einen Healthcheck, der 301 zurückgab. Traefik markierte ihn als ungesund. Habe
--providers.docker.useBindPortIP=falsehinzugefügt und den Dienstport überschrieben. - Cloudflare-Tunnel + Traefik ist eine Fußangel: doppelte TLS-Terminierung funktioniert, aber du möchtest
insecureSkipVerifybeim internen Hop aus.
Nächste Schritte
Authentik als den Forward-Auth-Anbieter für alles Interne einbinden. Die letzte unverschlüsselte Basic-Auth-Konfiguration abschalten.
Geschrieben von
Adrian Romo
Senior Backend Engineer für skalierbare Python-APIs, AWS-Lambda-Architekturen, Voice-Systeme und Enterprise-Integrationen.
Verwandt
Weiterlesen
Sechs Beiträge am Tag und der Scheduler, der lernte, wann er sagen soll
Eine Social-Pipeline, die jeden Tag genau einen Reel veröffentlicht hat und sonst nichts, weil die Quoten pro Format als Obergrenzen galten und niemand die anderen Formate nachgefragt hat.
Sekunden der Arbeit, Stunden des Aufenthalts
Mein Morgenbriefing begann zu scheitern. Ollama war zwar erreichbar, lieferte aber HTTP 500 zurück, weil ein 21 Sekunden langer Bild-Render auch Stunden später noch 6,6 GB VRAM belegte.
Was verdient heute Aufmerksamkeit
Mein Homelab liefert jeden Morgen ein Urteil: Entweder braucht dich etwas, oder es braucht dich nichts. Die zweite Hälfte ehrlich zu bekommen, war deutlich schwieriger als die erste.
Weiter geht's
Wohin als Nächstes?
Stöbere durch weitere technische Texte, sieh dir die Engineering Case Studies an oder melde dich direkt.