Geräte und ihre Dienste (kh-tunnel)
Der Client kh-tunnel verbindet ein Gerät nach außen mit dem CDN. Darüber machen Sie Dienste aus Ihrem Netz erreichbar – als Website, Minecraft-Server oder offenen Port.
Wofür?
Viele Anschlüsse sind von außen nicht erreichbar: DS-Lite, viele Glasfaser- und Mobilfunk-Tarife teilen sich eine IPv4-Adresse mit anderen. Eine Portfreigabe am Router hilft dann nicht. Mit einem Gerät im CDN baut Ihr Netz die Verbindung selbst nach außen auf – das CDN reicht Besucher hinein. Ihre eigene Adresse bleibt dabei verborgen.
Typisch: NAS-Oberfläche, Home Assistant, eigener Webserver, Spieleserver (TCP), SSH auf einen Raspberry Pi.
Einrichten
- Im Portal unter Geräte → „Gerät hinzufügen“: Name und System wählen (Linux/Raspberry Pi, Docker/NAS, Windows, macOS).
- Den angezeigten Befehl auf dem Gerät ausführen – der Assistent zeigt live, wann sich der Client angemeldet und mit den Edges verbunden hat. Unter Linux z. B.:
curl -fsSL https://portal.kernhosting.com/device/install.sh | sudo sh -s -- KH-XXXX-XXXX - Beim Gerät unter Dienste → „Dienst hinzufügen“ drei Fragen beantworten: Was soll erreichbar sein (Website, Minecraft, anderes Programm), wo läuft es (auf diesem Gerät oder einem anderen im Heimnetz, mit Port) und unter welcher Adresse.
- Website und Minecraft gehen danach direkt in den Assistenten der Website bzw. des Spielservers – die Verbindung zum Gerät ist dort schon eingetragen, es fehlen nur noch Domain und DNS.
Website oder Spielserver über das Gerät
Für Websites und Minecraft legt das Portal eine Verbindung zum Gerät an (intern z. B. ha-x7k2.tunnel.internal:31234, unter „Details“) und trägt sie bei der Website bzw. beim Spielserver als Server ein. Von Hand brauchen Sie die Adresse nur für einen TCP-Load-Balancer oder wenn Sie eine bestehende Website umstellen.
Dann gibt es alles, was Websites und Spielserver im CDN haben: HTTPS mit Zertifikat, Cache, WAF, Bot-Schutz, Statistik. Der Server selbst ist aus dem Internet nicht erreichbar – nur die Edges verbinden sich über den Tunnel.
Wie es funktioniert
- Verbindung
- Der Client verbindet sich zu jedem Edge (TLS, ausgehend Port 7443 TCP). Fällt einer aus, laufen die anderen weiter.
- Offene Ports
- TCP oder UDP, Port aus 30000–39999 auf allen Edges. Der Client verbindet nur mit Zielen, die Sie eingetragen haben.
- Zustand
- Ab kh-tunnel 0.4.0 prüft der Client jede Minute, ob die Ziele antworten, und meldet es dem Portal – beim Dienst steht dann „erreichbar“ oder „Ziel antwortet nicht“ mit dem Grund.
- Echte Besucher-IP
- Mit „PROXY-Protokoll zum Ziel“ – das Ziel muss es verstehen (z. B. Nginx, HAProxy, Traefik).
- Konfiguration
- Kommt vom Portal: Änderungen gelten nach wenigen Sekunden, am Gerät ist nichts zu tun.
Sicherheit
Der Zugang des Geräts liegt nur auf dem Gerät (das Portal speichert einen Hash). Gerät verloren oder neu aufgesetzt? Im Portal einen neuen Code erzeugen und neu anmelden – der alte Zugang gilt dann nicht mehr. „Ausschalten“ trennt den Tunnel sofort.
NAS, Windows und Docker
- Synology
- Container Manager → Projekt → „Erstellen“, die docker-compose.yml aus dem Portal einfügen (Tab „Docker · NAS“), starten.
- Unraid, QNAP, Portainer
- Ebenfalls mit der docker-compose.yml (Stack bzw. Compose). Wichtig: network_mode „host“, damit der Client das NAS selbst und andere Geräte im Netz erreicht.
- Home Assistant
- Der Client läuft auf einem anderen Gerät im Netz (Raspberry Pi, NAS); Ziel ist dann die Adresse von Home Assistant, z. B. 192.168.1.20:8123.
- Windows
- PowerShell als Administrator, Befehl aus dem Portal – der Client läuft danach als Dienst „KernHosting CDN – Tunnel“ und startet mit Windows.
- Raspberry Pi, Linux
- Der Befehl mit install.sh richtet einen systemd-Dienst mit eigenem Benutzer ein.
Der Client aktualisiert sich selbst: Neue Versionen lädt er vom Portal, prüft die Signatur und startet neu. Abschalten mit --no-update bzw. KH_TUNNEL_NO_UPDATE=1.
Mehrere Geräte als Pool
Legen Sie auf jedem Gerät einen Server für denselben Dienst an und tragen Sie alle bei der Website, dem Spielserver oder einem TCP-Load-Balancer als Server ein. Das CDN verteilt die Besucher und nimmt ein Gerät heraus, sobald es keine Verbindung mehr hat – z. B. zwei Raspberry Pis an verschiedenen Anschlüssen.
Geht es? Der Zustand eines Dienstes
Jeder Dienst zeigt den Weg eines Besuchers: Edges (bzw. CDN) → Tunnel → Ziel. Rot ist die Stelle, an der es hakt:
- Gerät nicht verbunden
- kh-tunnel läuft nicht oder erreicht Port 7443 nicht – siehe unten.
- Ziel antwortet nicht
- Der Tunnel steht, aber das Gerät erreicht Adresse und Port nicht: Programm aus, Port falsch, falsche IP oder die Firewall des Zielgeräts. Beim Dienst steht der genaue Grund.
- Client im Container
- Mit eigenem Netz ist „localhost“ der Container selbst. network_mode „host“ verwenden oder die IP des Rechners eintragen.
- Von außen testen
- Bei offenen TCP-Ports verbindet sich das Portal über jeden Edge wie ein Besucher und zeigt, wo die Verbindung abbricht.
Auf dem Gerät zeigt kh-tunnel status dasselbe – mit einer Prüfung jedes Ziels. kh-tunnel doctor prüft zusätzlich Portal, Uhrzeit, jeden Edge, die Relays des privaten Netzes und die nötigen Rechte.
Ziele auf dem Gerät begrenzen
Welche Ziele ein Dienst hat, steht im Portal. Auf dem Gerät können Sie zusätzlich festlegen, welche Adressen der Client überhaupt verbinden darf – zum Beispiel nur das Heimnetz und das Gerät selbst:
sudo kh-tunnel allow 192.168.1.0/24 127.0.0.1
sudo kh-tunnel allow --remove 127.0.0.1
sudo kh-tunnel allow --clearEinträge sind Adressen oder Netze, auf Wunsch mit Port (192.168.1.10:443). Ziele außerhalb verbindet der Client nicht; der Dienst zeigt dann „Gerät verbindet dieses Ziel nicht“. Die Grenze lässt sich bewusst nur auf dem Gerät ändern – selbst wer Ihr Konto im Portal übernähme, käme nicht weiter in Ihr Netz. Mit Docker: Umgebungsvariable KH_TUNNEL_ALLOW_TARGETS.
Freigaben vom Gerät: share, Docker, Datei
Erlauben Sie es unter Gerät → Einstellungen → „Freigaben vom Gerät“, legt der Client Freigaben selbst an – praktisch zum Entwickeln und auf dem NAS:
kh-tunnel share 8080
kh-tunnel share 25565 --host 192.168.1.10 --for 4h
kh-tunnel share 3000 --internal # nur als Server für eine Website# Client mit --docker starten (oder KH_TUNNEL_DOCKER=1), dann am Container:
labels:
kh.tunnel.port: "8080"
kh.tunnel.internal: "true" # Server für eine Website im CDNports:
- name: Website
target: 127.0.0.1:8080
internal: true
- name: Minecraft
target: 192.168.1.10:25565Solche Dienste stehen im Portal mit ihrer Herkunft und zählen zu den Limits. Nur einschalten, wenn Sie dem Gerät vertrauen.
Updates
- Der Client aktualisiert sich selbst (geprüfte Signatur). Erreicht eine neue Version zehn Minuten lang keinen Edge oder startet sie immer wieder neu, holt er die vorige zurück und lässt diese Version aus – das steht dann auf der Seite des Geräts.
- Vorabversionen bekommt ein Gerät mit
kh-tunnel channel beta; zurück mitkh-tunnel channel stable. - Messwerte für Prometheus:
kh-tunnel run --metrics 127.0.0.1:9109(bzw.KH_TUNNEL_METRICS) – Verbindungen und Bytes je Dienst, Laufzeit zu den Edges. Sie bleiben auf dem Gerät.
Gerät offline?
- Läuft der Client? Linux:
systemctl status kh-tunnel, Logs mitjournalctl -u kh-tunnel; macOS:/Library/Logs/kh-tunnel.log. kh-tunnel doctorprüft alles der Reihe nach und sagt, wo es hakt.kh-tunnel statuszeigt, was das Portal für das Gerät meldet.- Ausgehend muss Port 7443 (TCP) erlaubt sein – in Firmennetzen manchmal nicht.
- Ist das Gerät länger als drei Minuten offline, bekommen Sie eine Nachricht (Benachrichtigungen: „Gerät ist offline“).
Nicht fündig geworden? Durchsuchen Sie die Übersicht, schauen Sie auf die Statusseite oder schreiben Sie uns – die Kontaktdaten stehen im Impressum.