// LINUXNEWS.DE — LINUX & OPEN SOURCE
DockTail macht Docker-Container zu Tailscale Services
Wer Server mit Docker-Containern betreibt und von unterwegs auf deren Dienste zugreifen möchte, steht vor der Frage, wie sich diese möglichst einfach und sicher erreichbar machen lassen. Je mehr Container es werden, desto unpraktischer ist es, eine Liste mit den jeweiligen URLs zu führen. Neben klassischen VPN-Verbindungen und Reverse-Proxys bietet Tailscale mit seinen Services hier einen weiteren Ansatz. Mit Einführung der Services bietet Tailscale neben leicht zu merkenden URLs für Maschinen solche auch für Apps an.
Das Open-Source-Projekt DockTail macht diese Funktion für Docker-Container besonders einfach nutzbar. Dabei ist es egal, ob die Container in einer Umgebung wie Unraid oder TrueNAS laufen oder direkt auf einem Host betrieben werden.
Tailscale ermöglicht es, Geräte über ein auf WireGuard basierendes, verschlüsseltes Netzwerk miteinander zu verbinden. Die Geräte erhalten eigene IP-Adressen und sind unabhängig von ihrem tatsächlichen Standort erreichbar, sofern die Zugriffsregeln dies erlauben. Über MagicDNS lassen sie sich zudem mit Namen statt IP-Adressen ansprechen.
Mit Tailscale Services wird dieses Prinzip erweitert. Nicht mehr das Gerät steht im Mittelpunkt, sondern der darauf angebotene Dienst. Eine Anwendung wie Jellyfin oder Paperless-ngx erhält einen eigenen Namen und eine virtuelle Tailscale-IP-Adresse. Der Zugriff erfolgt beispielsweise über https://jellyfin.example-tailnet.ts.net, unabhängig davon, auf welchem Server die Anwendung tatsächlich läuft. Der Teil der URL hinter dem Namen des Dienstes bleibt immer gleich und ist somit leicht zu merken.
Das hat mehrere Vorteile. Anwendungen lassen sich zwischen Servern verschieben, ohne dass sich ihre Adresse zwangsläufig ändert. Auch mehrere Server können denselben Service bereitstellen, um dessen Verfügbarkeit zu erhöhen. Die Zugriffsrechte werden weiterhin zentral über die Tailscale-Verwaltung geregelt. Die Services sind damit auch von unterwegs über eine Tailscale-Verbindung erreichbar, bleiben aber auf berechtigte Teilnehmer des privaten Tailnets beschränkt und sind nicht öffentlich im Internet zugänglich.
Tailscale Services lassen sich auch ohne zusätzliche Software konfigurieren. Dazu müssen jedoch die Service-Definitionen angelegt, die zugehörigen Hosts eingerichtet und die Weiterleitungen zu den Anwendungen konfiguriert werden. Gerade bei zahlreichen Docker-Containern entsteht dadurch zusätzlicher Verwaltungsaufwand.
Hier setzt DockTail an. Die Anwendung überwacht die Docker-Engine und erkennt anhand spezieller Labels, welche Container als Tailscale Services bereitgestellt werden sollen. Dazu genügen wenige Angaben, etwa der gewünschte Service-Name und der interne Port der Anwendung.
DockTail übernimmt anschließend die Registrierung und Konfiguration über Tailscale. Standardmäßig greift es direkt auf die IP-Adressen der Container in ihren Docker-Netzwerken zu. Damit müssen deren Ports nicht einmal auf dem Docker-Host veröffentlicht werden. Ändert sich die interne IP-Adresse beim Neustart eines Containers, passt DockTail die Weiterleitung automatisch an.
Auch HTTPS lässt sich über Tailscale bereitstellen. Die Zertifikatsverwaltung übernimmt dabei Tailscale, während die Kommunikation zwischen dem Tailscale-Daemon und dem Container beispielsweise weiterhin über HTTP erfolgen kann.
Im Unterschied zu Lösungen, die für jede Anwendung eine eigene Tailscale-Instanz starten, nutzt DockTail die nativen Tailscale Services. Dadurch erscheinen die Anwendungen nicht als zusätzliche Geräte im Tailnet. Optional unterstützt DockTail auch Tailscale Funnel, um ausgewählte Dienste bei Bedarf öffentlich bereitzustellen.