// LINUXNEWS.DE — LINUX & OPEN SOURCE
DockTail: Docker-Container mit Tailscale Services erreichbar machen
Mit Tailscale Services lassen sich Anwendungen unabhängig von ihrem Host über eigene Adressen innerhalb eines Tailnets bereitstellen. Das Open-Source-Werkzeug DockTail automatisiert die Einrichtung für Docker-Container. Nachdem wir das Konzept bereits vorgestellt haben, zeigen wir dieses Mal, wie sich DockTail auf einem Linux-Host mit Docker Compose installieren und anschließend eine Anwendung über HTTPS bereitstellen lässt.
Die Anleitung setzt einen Linux-Rechner voraus, auf dem Docker Engine einschließlich Docker Compose und Tailscale bereits installiert sind. Der Rechner muss Mitglied eines bestehenden Tailnets sein. Zudem wird administrativer Zugriff auf die Tailscale-Verwaltungsoberfläche benötigt, um Tags, Berechtigungen und einen OAuth-Client einzurichten. Wenn Tailscale noch nicht installiert ist, vermittelt dieser Artikel die Grundlagen.
In unserem Praxistest kam ein Debian Unstable zum Einsatz, auf dem mehrere Anwendungen über Docker Compose betrieben werden. Tailscale läuft dabei direkt auf dem Host und nicht in einem eigenen Container. DockTail verwendet den vorhandenen Tailscale-Daemon und dessen Unix-Socket. Zunächst prüfen wir, ob Docker und Tailscale funktionieren:
Der letzte Befehl sollte den Socket des laufenden Tailscale-Daemons anzeigen. Fehlt dieser, muss zunächst die Tailscale-Installation überprüft werden. Für Rootless Docker sowie Systeme ohne direkt nutzbaren Tailscale-Socket gelten abweichende Installationsverfahren, die in der DockTail-Dokumentation beschrieben sind.
Damit ein Rechner Tailscale Services bereitstellen darf, benötigt er einen geeigneten Tag. Außerdem müssen die Zugriffsrichtlinien des Tailnets die automatische Registrierung der Services erlauben. Wir verwenden dafür zwei Tags: tag:server kennzeichnet den Linux-Host, während tag:container den später angelegten Services zugewiesen wird.
In der Tailscale-Verwaltung öffnen wir den JSON-Editor der Zugriffsrichtlinien und ergänzen folgende Abschnitte:
Die beiden Abschnitte gehören auf die oberste Ebene der Policy. Sind Einträge für tagOwners oder autoApprovers bereits vorhanden, werden nur die benötigten Einträge ergänzt. Bestehende Berechtigungen dürfen dabei nicht überschrieben werden.
Anschließend weisen wir dem Linux-Host unter Machines über die Tag-Verwaltung tag:server zu. Ob der Tag übernommen wurde, lässt sich kontrollieren:
Die Antwort sollte "tag:server" lauten. Verwendet das Tailnet bereits restriktive Grants, muss zusätzlich der Zugriff der vorgesehenen Clients auf die neuen Services erlaubt sein. Für einen HTTPS-Dienst mit dem Namen dawarich kann beispielsweise folgende Regel verwendet werden:
Sie erlaubt den Mitgliedern des Tailnets den Zugriff auf diesen Service über HTTPS. Weitere Berechtigungen lassen sich bei Bedarf gezielt ergänzen. Existieren bereits weitere Grants, wird die Regel als zusätzlicher Eintrag in das Array aufgenommen: