Traefik für lokale Dienste: SSL ohne Warnungen im Heimnetzwerk
Inhaltsverzeichnis
1. Intro
Manch sensible Dienste möchte man nicht public exposen, aber immer IP:port eintragen oder die nervige SSL-Warnung im Browser bei self-signed Certs nerven auch.
Wenn du von meinen Tutorials schon das Traefik-Setup mit DNS01-Challenge am Laufen hast, dann können wir ganz einfach auch Certs für lokale Dienste über Traefik verteilen.
Ich habe just das Setup per Mail mit einem Blog-Leser besprochen und dachte mir, das kann ich direkt auch hier veröffentlichen, wie das funktionieren kann.
Grüße gehen raus an Markus für die nette Korrespondenz.
Für genau das Setup, das ich hier zu Hause nutze, brauchen wir folgendes.
2. Voraussetzungen
Bevor wir starten, stellt sicher, dass folgende Voraussetzungen erfüllt sind:
Natürlich führen viele Wege nach Rom, aber wie gesagt, ich beschreibe hier, wie ich es in meinem Homelab realisiert habe.
Proxmox als Fundament
Proxmox läuft bei mir als Hypervisor und das hat viele Gründe, die ich gerne mal wann anders genauer beschreibe. Hier läuft eine Ubuntu-VM mit Docker und Traefik installiert wie hier beschrieben.
Dann habe ich mir per Helper-Script ein Adguard Home LXC gebaut und dieses in meiner Fritz.Box als DNS-Server hinzugefügt.

Jetzt haben wir einen netzwerkweiten Adblocker und können DNS-Rewrites anlegen.
DNS-Rewrite
Damit man sich keine komischen Zahlenkombinationen merken muss, wenn man etwas im Internet aufrufen möchte, hat man sich sowas Ähnliches wie ein Telefonbuch fürs Internet ausgedacht.
Wer nicht weiß, was ein Telefonbuch ist, guckt sich vielleicht mal die Sendung mit der Maus übers Internet an.
So kann ich einfach sagen, dass mein Server mit der IP 12.34.56.78 auch auf den Namen meinserver.de hört. Das kann ich mir besser merken und ich kann auch noch Subdomains davor hängen wie z. B. app1.meinserver.de.
Für die Auflösung des Namens zur IP wurde DNS erfunden. Und so einen tollen Server haben wir jetzt auch im Homelab am Start. Hier kann ich jetzt auch lokale IPs mit Domains verknüpfen.

Unter Filter -> DNS-Umschreibungen kann ich jetzt wie z. B. bei Cloudflare eine Domain einer IP zuweisen.
Die IP ist hier meine IP der VM, wo Traefik läuft. Hier könnte man auch einfach einen Wildcard vergeben, also *.meinserver.de – dann muss ich nicht jeden Service neu dort eintragen, das Sternchen steht als Platzhalter für alles Mögliche.
Traefik Labels
Hier bleibt alles so wie gehabt. Einfach die Standard-Labels verwenden, Domain anpassen und das war’s.
labels:
- "traefik.enable=true"
- "traefik.http.routers.pocket.entrypoints=websecure"
- "traefik.http.routers.pocket.rule=Host(`app.mein server.de`)"
- "traefik.http.routers.pocket.tls=true"
- "traefik.http.routers.pocket.tls.certresolver=cloudflare"
- "traefik.http.routers.pocket.service=pocket"
- "traefik.http.services.pocket.loadbalancer.server.port=1411"
- "traefik.docker.network=frontend"
networks:
- frontend
networks:
frontend:
external: true
Nicht vergessen, dass ihr euer API-Token für DNS-Edit in Cloudflare erstellt und in Traefik eingebunden habt.
Zugriff nur lokal
Jetzt könnt ihr eure Services wie z. B. Vaultwarden ganz einfach per Domain mit SSL-Cert erreichen, und das nur aus dem Heimnetzwerk oder natürlich auch von außerhalb, wenn ihr euch per VPN reintunnelt.