// HEISE ONLINE — LINUX & OPEN SOURCE
Container mit DockTail ohne Port-Mapping ins Tailscale-Netz bringen
Das Open-Source-Tool DockTail registriert Docker-Container automatisch im Mesh-VPN Tailscale. Ports muss man dafür nicht öffentlich machen.
This article is also available in
English.
It was translated with technical assistance and editorially reviewed before publication.
Das Open-Source-Tool DockTail bindet Docker-Container per Label in das Mesh-VPN Tailscale ein. Jede Anwendung erhält einen festen Namen und eine eigene virtuelle IP-Adresse, Port-Freigaben auf dem Host sind nicht nötig. Tailscale verbindet Rechner per WireGuard zu einem privaten Netz, dem Tailnet. Schlüssel und Zugriffsregeln verteilt ein zentraler Cloud-Dienst des Anbieters.
DockTail übernimmt die Registrierung, die Weiterleitung und die Anpassung bei IP-Wechseln. Admins bekommen so für jede Anwendung einen festen Namen über MagicDNS – den internen DNS-Dienst von Tailscale – und müssen keine Listen mit Hostnamen und Ports mehr pflegen.
Jeder Service erhält eine virtuelle IPv4- und IPv6-Adresse. Voraussetzung ist, dass ein Host mit Tailscale-Client den Dienst erreicht. Ein Dienst ist dann etwa unter jellyfin.tailnet-name.ts.net erreichbar. Diese Adresse bleibt gleich, wenn der Dienst auf einen anderen Host umzieht, redundante Hosts hinzukommen oder er über mehrere Regionen verteilt wird. Die Funktion startete im Oktober 2025 als Beta und ist seit Februar 2026 allgemein verfügbar. Jeder Tailscale-Nutzer, auch im Personal-Tarif, kann bis zu zehn Services anlegen, mehr nur auf Anfrage bei Tailscale.
DockTail überwacht die Container und wertet Labels mit dem Präfix docktail.* aus. Im einfachsten Fall reichen docktail.service.enable, docktail.service.name und docktail.service.port. Standardmäßig muss man keine Ports veröffentlichen, weil DockTail direkt an die IP-Adressen der Container im Docker-Netzwerk weiterleitet. Wenn ein Container neu startet oder sich seine IP ändert, passt DockTail die Konfiguration automatisch an.
DockTail unterstützt HTTP, HTTPS, TCP und TCP mit TLS-Terminierung. Bei TCP-Diensten kann DockTail optional das PROXY-Protokoll nutzen, damit die Backends die IP des Clients im Tailnet sehen. Für HTTPS holt Tailscale die Zertifikate bei Let's Encrypt, zum Container kann die Verbindung unverschlüsselt per HTTP laufen.
Bisher gab es im Tailscale-Umfeld vor allem zwei Wege, Container ins Tailnet zu bringen: Entweder bekommt jede Anwendung einen eigenen Tailscale-Container als Sidecar, wie in der Vorlagensammlung ScaleTail, oder ein Proxy wie TSDProxy startet für jeden Container einen eingebetteten Tailscale-Knoten. In beiden Fällen erscheint jede Anwendung als eigenes Gerät in der Admin-Konsole, bei mehreren Containern wächst die Geräteliste entsprechend. DockTail kommt mit einem Gerät pro Host aus und stellt die Anwendungen als Services bereit.
Der Docker-Host muss mit Tailscale verbunden sein und die Berechtigung haben, Services bereitzustellen. Dafür braucht es Tags und passende Regeln in der Tailnet-Policy. Die Service-Definitionen legt DockTail automatisch an, wenn OAuth- oder API-Zugangsdaten hinterlegt sind. Die lassen sich als Docker-Secrets oder eingebundene Dateien übergeben statt als Umgebungsvariablen.
Wichtig für die Sicherheit ist der Zugriff auf den Docker-Socket. Dass er in der Beispielkonfiguration nur read-only eingebunden ist, verhindert keine schreibenden API-Aufrufe. Wer den Socket kontrolliert, kontrolliert also faktisch den Docker-Daemon.