Dockhand und Hawser lassen sich auch über verschiedene Netzwerke hinweg betreiben. Entscheidend ist, welches System die Verbindung aufbaut: Im Standard-Modus verbindet sich Dockhand mit Hawser. Im Edge-Modus meldet sich Hawser bei Dockhand. Diese Unterscheidung bestimmt, welche Ports Router und Firewall freigeben müssen und welcher Modus bei NAT oder CGNAT funktioniert.
Dockhand und Hawser hinter NAT: kurz erklärt
- Standard-Modus: Dockhand baut eine Verbindung zum Hawser-Agenten auf. Der Hawser-Host muss von Dockhand aus erreichbar sein.
- Edge-Modus: Hawser baut selbst eine ausgehende WebSocket-Verbindung zu Dockhand auf. Am Hawser-Standort ist dafür keine eingehende Portfreigabe nötig.
- CGNAT: Edge-Modus funktioniert, wenn Dockhand über das Internet oder ein VPN erreichbar ist. Ist auch Dockhand hinter CGNAT und nicht über ein VPN erreichbar, braucht es einen erreichbaren Endpunkt, etwa auf einem Server mit öffentlicher IP-Adresse.
Das Dockhand-Handbuch ordnet Hawser Standard vor allem festen LAN-Verbindungen zu. Hawser Edge ist für dynamische IP-Adressen, NAT und abgeschirmte Standorte vorgesehen. Die Modi unterscheiden sich hauptsächlich darin, welche Seite die Verbindung startet.
Was NAT und CGNAT für die Verbindung bedeuten
Ein Router verwendet NAT, damit mehrere Geräte im privaten Netzwerk eine Internetverbindung über eine öffentliche IPv4-Adresse nutzen können. Verbindungen, die von innen nach außen beginnen, funktionieren normalerweise ohne besondere Einstellung. Für eine neue Verbindung von außen zu einem Gerät im privaten Netzwerk braucht der Router dagegen meist eine Portweiterleitung.
Bei CGNAT führt zusätzlich der Internetanbieter eine Adressumsetzung durch. Eine Portweiterleitung am eigenen Router reicht dann nicht aus, weil die öffentliche IPv4-Adresse von mehreren Kunden geteilt wird. Der Adressbereich 100.64.0.0/10 ist für diese gemeinsame Nutzung durch Anbieter vorgesehen. Eine Adresse aus diesem Bereich auf der WAN-Seite des Routers ist ein Hinweis auf CGNAT. Auch eine Abweichung zwischen der WAN-Adresse des Routers und der im Internet angezeigten IPv4-Adresse kann auf eine weitere NAT-Stufe hindeuten. Weitere Informationen enthält RFC 6598.
Für eine Verbindung im Standard-Modus ist das relevant, wenn der Hawser-Host hinter dem Router steht: Dockhand muss den Agenten von außen erreichen können. Im Edge-Modus startet Hawser die Verbindung nach außen. Das funktioniert deshalb meist auch dann, wenn der Router oder der Internetanbieter eingehende Verbindungen blockiert.
Standard-Modus und Edge-Modus im Vergleich
| Eigenschaft | Hawser Standard | Hawser Edge |
|---|---|---|
| Verbindungsstart | Dockhand verbindet sich mit Hawser. | Hawser verbindet sich mit Dockhand. |
| Typischer Zielort | Hawser lauscht standardmäßig auf TCP-Port 2376. |
Dockhand ist über eine WebSocket-Adresse erreichbar, üblicherweise mit wss:// über TCP-Port 443. |
| Portfreigabe am Hawser-Standort | Nur erforderlich, wenn Dockhand den Agenten über das Internet direkt erreichen soll. | In der Regel nicht erforderlich. |
| Geeignet für | LAN, geroutete Netze und VPN-Verbindungen mit erreichbarer Hawser-IP. | Dynamische IP-Adressen, NAT, CGNAT und restriktive Firewalls. |
| Wichtige Voraussetzung | Dockhand muss eine Route zum Hawser-Agenten haben. | Hawser muss Dockhand über das Internet oder ein VPN erreichen können. |
Im Standard-Modus stellt Hawser eine Schnittstelle zum Docker-API bereit. Deshalb gehört der Hawser-Port nicht ungeschützt ins öffentliche Internet. Verwende mindestens einen Token und, bei Verbindungen außerhalb eines geschützten Netzwerks, TLS. Im Edge-Modus sind Token und eine Verbindung über WebSocket Secure erforderlich. Details stehen in der Dockhand-Dokumentation und im Hawser-Projekt auf GitHub.
Typische Netzwerkszenarien
Dockhand und Hawser im selben Heimnetz
Wenn beide Hosts im selben LAN stehen, ist der Standard-Modus meist einfach einzurichten. Dockhand verbindet sich mit der lokalen IP-Adresse des Hawser-Hosts und dem Agent-Port. Eine Portweiterleitung am Internetrouter ist dafür nicht nötig. Die Firewall des Hawser-Hosts muss die Verbindung von Dockhand auf TCP-Port 2376 erlauben.
Eine feste lokale IP-Adresse oder eine DHCP-Reservierung hilft dabei, dass Dockhand den Agenten nach einem Neustart weiterhin unter derselben Adresse findet.
Dockhand und Hawser an verschiedenen Standorten mit VPN
Verbinden sich beide Netzwerke über ein VPN, kann Dockhand den Hawser-Agenten über die VPN-Adresse erreichen. Dann ist der Standard-Modus möglich, ohne TCP-Port 2376 am Internetrouter öffentlich freizugeben. Alternativ kann Hawser über das VPN ausgehend eine Verbindung zu Dockhand aufbauen und im Edge-Modus laufen.
Prüfe in beiden Fällen, dass die VPN-Routen und Firewall-Regeln den gewünschten Datenverkehr zwischen den Hosts erlauben.
Hawser hinter einer dynamischen IP-Adresse oder CGNAT
Hier ist der Edge-Modus meist die passende Wahl. Der Hawser-Agent verbindet sich mit der öffentlich erreichbaren Dockhand-Adresse. Der Heimrouter muss keine Verbindung von außen an den Hawser-Host weiterleiten. Die Adresse des Hawser-Standorts darf sich ändern, solange der Agent Dockhand weiterhin per DNS-Namen erreichen kann.
Dockhand selbst steht hinter NAT oder CGNAT
Edge-Modus beseitigt nicht die Erreichbarkeitsanforderung an Dockhand. Hawser muss eine Verbindung zum Dockhand-Endpunkt aufbauen können. Läuft Dockhand hinter einem normalen Router und soll es aus dem Internet erreichbar sein, muss der Router den benötigten HTTPS-Verkehr an den Reverse Proxy oder Dockhand weiterleiten. Bei CGNAT am Dockhand-Standort funktioniert eine solche öffentliche Weiterleitung in der Regel nicht direkt. In diesem Fall kann ein VPN, ein öffentlich erreichbarer Server als Zugangspunkt oder ein anderer erreichbarer Netzendpunkt helfen.
Welche Verbindungen müssen Firewall und Router erlauben?
| Modus oder Zugriff | Verbindung | Firewall und Router |
|---|---|---|
| Standard, im LAN oder VPN | Dockhand → Hawser, TCP 2376 |
Am Hawser-Host TCP 2376 von Dockhand erlauben. Keine öffentliche Router-Portweiterleitung nötig, wenn LAN oder VPN die Hosts verbindet. |
| Standard, direkt über das Internet | Dockhand → öffentliche Adresse des Hawser-Standorts, TCP 2376 |
Am Hawser-Standort TCP 2376 zum Hawser-Host weiterleiten und dort erlauben. Das setzt eine erreichbare öffentliche IP-Adresse voraus. Wenn möglich, den Zugriff auf die Dockhand-IP begrenzen und TLS sowie Token verwenden. |
| Edge | Hawser → Dockhand, WebSocket Secure über TCP 443 oder den konfigurierten HTTPS-Port |
Ausgehende Verbindungen am Hawser-Standort und DNS-Auflösung erlauben. Die zustandsbehaftete Firewall lässt die Antwortpakete zur bestehenden Verbindung normalerweise automatisch zurück. Am Hawser-Router ist keine eingehende Portweiterleitung nötig. |
| Dockhand hinter einem eigenen Router | Hawser → öffentlich erreichbarer Dockhand-Endpunkt | Falls der Zugriff über das öffentliche Internet erfolgt, den verwendeten Port, üblicherweise TCP 443, zum Reverse Proxy oder Dockhand weiterleiten. Bei Zugang nur über VPN genügt die Erreichbarkeit über das VPN. |
| Weboberfläche | Browser → Dockhand, üblicherweise HTTPS über TCP 443 |
Diese Verbindung ist getrennt von der Hawser-Verbindung zu betrachten. Schütze die Verwaltungsoberfläche mit Anmeldung und begrenze ihre Erreichbarkeit. |
Die Tabelle beschreibt die Netzwerkverbindungen zwischen Dockhand und Hawser. Docker-Container können für eigene Aufgaben zusätzliche Verbindungen benötigen, zum Beispiel ausgehenden HTTPS-Zugriff zum Laden von Images. Das ist unabhängig davon, welcher Hawser-Modus gewählt wurde.
Reverse Proxy und WebSockets im Edge-Modus
Steht ein Reverse Proxy vor Dockhand, muss er WebSocket-Verbindungen durchreichen. Dazu gehört der Pfad /api/hawser/connect. Der Proxy muss den Verbindungswechsel auf WebSocket unterstützen; bei Nginx gehören dazu üblicherweise die Header Upgrade und Connection. Ohne diese Weiterleitung kann die Dockhand-Weboberfläche erreichbar sein, während der Hawser-Agent trotzdem keine dauerhafte Verbindung aufbauen kann. Das Dockhand-Handbuch beschreibt die nötige WebSocket-Unterstützung für Reverse Proxies.
Für eine normale HTTPS-Adresse sieht die Edge-URL beispielsweise so aus:
wss://dockhand.example.de/api/hawser/connect
Verwende ein gültiges Zertifikat oder installiere die passende Zertifizierungsstelle beim Hawser-Agenten, wenn Dockhand ein eigenes Zertifikat nutzt. Eine dauerhafte Deaktivierung der TLS-Prüfung ist keine geeignete Lösung für den regulären Betrieb.
Beispielkonfigurationen für beide Modi
Im Standard-Modus veröffentlicht der Hawser-Container den Agent-Port. Die Firewall-Regel sollte den Zugriff auf Dockhand oder das VPN begrenzen:
ports:
- "2376:2376"
environment:
TOKEN: "LANGER-ZUFALLSTOKEN"
Dockhand wird für diesen Agenten mit der erreichbaren IP-Adresse oder dem DNS-Namen des Hosts und dem Port 2376 eingerichtet. Bei einer Verbindung über das öffentliche Internet sollte zusätzlich TLS aktiviert sein. Wenn Standard über ein VPN läuft, sollte der VPN-Endpunkt anstelle der öffentlichen IP-Adresse verwendet werden.
Im Edge-Modus benötigt Hawser die URL von Dockhand und einen Token. Eine Veröffentlichung des Agent-Ports am Hawser-Host ist für die Verbindung zu Dockhand nicht erforderlich:
environment:
DOCKHAND_SERVER_URL: "wss://dockhand.example.de/api/hawser/connect"
TOKEN: "VON-DOCKHAND-ERZEUGTER-TOKEN"
Erzeuge den Edge-Token in Dockhand und hinterlege ihn sicher auf dem Hawser-Host. Veröffentliche Tokens nicht in öffentlichen Compose-Dateien oder Repositories. Weitere Schritte zur Installation findest du in der Anleitung Hawser mit Dockhand installieren. Eine separate Anleitung erklärt außerdem die Installation von Dockhand mit Docker und Docker Compose.
Amazon-Produkte für einen dauerhaft erreichbaren Host
Ein vorhandener Server oder ein geeignetes NAS reicht häufig aus, um Dockhand zu betreiben. Wer dafür einen separaten, dauerhaft laufenden Rechner sucht, kann sich Mini-PCs mit Intel N100 ansehen. Prüfe vor dem Kauf das unterstützte Betriebssystem, den Ethernet-Anschluss, den Stromverbrauch und die gewünschte Ausstattung.
Eine kleine USV kann Dockhand-Host, Router und Modem bei kurzen Stromausfällen weiter versorgen. Sie verlängert aber nicht die Internetverbindung, wenn der Anschluss des Anbieters selbst ausfällt. Achte auf die Gesamtleistung der angeschlossenen Geräte und die gewünschte Überbrückungszeit.
Werbung / Affiliate-Links: Die mit einem Sternchen (*) gekennzeichneten Links sind Amazon-Partnerlinks. Wenn du darüber etwas kaufst, erhalte ich möglicherweise eine Provision. Für dich entstehen dadurch keine zusätzlichen Kosten. Als Amazon-Partner verdiene ich an qualifizierten Verkäufen.
-
Kompakter Docker-Host: Mini-PC
Für einen separaten, dauerhaft laufenden Docker-Host. Prüfe Betriebssystem, Ethernet-Anschluss, Stromverbrauch und Ausstattung.
→ Mini-PCs für einen kompakten Docker-Host bei Amazon ansehen* -
Kurze Stromausfälle überbrücken: USV
Kann Host, Router und Modem zeitweise weiter versorgen. Achte auf Gesamtleistung und gewünschte Überbrückungszeit.
→ USV-Anlagen für Router und Server bei Amazon ansehen* -
Zusätzlicher Speicher: externe SSD
Ein mögliches Medium für zusätzliche Sicherungen. Plane getrennte Kopien und teste die Wiederherstellung.
→ Externe SSDs für zusätzliche Sicherungen bei Amazon ansehen*
Häufige Fragen zu Dockhand und Hawser hinter NAT
Muss ich für Hawser Edge Port 2376 am Router öffnen?
Nein. Im Edge-Modus baut Hawser die Verbindung zu Dockhand ausgehend auf. Eine eingehende Portweiterleitung zum Hawser-Host ist dafür nicht erforderlich. Dockhand kommuniziert mit Hawser über die WebSocket-Verbindung.
Funktioniert Hawser Standard hinter CGNAT?
Eine direkte Verbindung von Dockhand zu Hawser funktioniert normalerweise nicht, wenn der Hawser-Host hinter CGNAT steht. Sie kann über ein VPN oder ein geroutetes privates Netzwerk funktionieren. Ohne solchen Weg ist meist Edge-Modus die einfachere Lösung.
Funktioniert Edge-Modus, wenn Dockhand hinter CGNAT steht?
Nur wenn Hawser Dockhand über einen anderen erreichbaren Weg erreicht, zum Beispiel über ein VPN oder einen öffentlichen Server als Zugangspunkt. Edge-Modus ersetzt keine Erreichbarkeit des Dockhand-Endpunkts.
Ist TCP-Port 443 immer erforderlich?
TCP-Port 443 ist üblich, wenn Dockhand über eine HTTPS-Adresse mit wss:// erreichbar ist. Bei einer anderen Adresse oder einem abweichenden Port muss die Firewall den tatsächlich verwendeten Zielport erlauben.
Fazit: Der Verbindungsstart entscheidet
Dockhand und Hawser hinter NAT zu betreiben ist gut planbar, sobald die Richtung der Verbindung feststeht. Im Standard-Modus muss Dockhand den Hawser-Agenten erreichen. Das passt zu einem LAN oder VPN und erfordert bei einer direkten Internetverbindung eine erreichbare öffentliche Adresse sowie eine gezielte Freigabe von TCP-Port 2376.
Im Edge-Modus verbindet sich Hawser ausgehend mit Dockhand. Dadurch ist keine eingehende Freigabe am Hawser-Standort nötig, und der Modus eignet sich meist besser für dynamische Anschlüsse und CGNAT. Dockhand selbst muss für den Agenten weiterhin über das Internet oder ein VPN erreichbar sein. Für die meisten Verbindungen über öffentliche Netze sind wss://, ein gültiges Zertifikat, sichere Tokens und eine eng begrenzte Firewall-Regel die passende Grundlage.