
headscale v0.29.3
Eine Open-Source, selbst gehostete Implementierung des Tailscale Control Servers

Eine quelloffene, selbst gehostete Implementierung des Tailscale-Control-Servers.
Tritt unserem Discord-Server bei, um dich auszutauschen.
Hinweis: Wähle immer dasselbe GitHub-Tag wie die von dir verwendete veröffentlichte Version,
um sicherzustellen, dass du die korrekte Beispielkonfiguration hast. Der main-Branch kann
unveröffentlichte Änderungen enthalten. Die Dokumentation ist für stabile und
Entwicklungsversionen verfügbar:
Was ist Tailscale
Tailscale ist ein modernes VPN, das auf Wireguard aufbaut. Es funktioniert wie ein Overlay-Netzwerk zwischen den Computern deiner Netzwerke – unter Verwendung von NAT-Traversal.
Alles in Tailscale ist Open Source, mit Ausnahme der GUI-Clients für proprietäre Betriebssysteme (Windows und macOS/iOS) sowie des Control-Servers.
Der Control-Server fungiert als Austauschpunkt für Wireguard-Public-Keys der Knoten im Tailscale-Netzwerk. Er weist den Clients ihre IP-Adressen zu, legt die Grenzen zwischen den einzelnen Nutzern fest, ermöglicht das Teilen von Maschinen zwischen Nutzern und stellt die angekündigten Routen deiner Knoten bereit.
Ein Tailscale-Netzwerk (Tailnet) ist ein privates Netzwerk, das Tailscale einem Nutzer im Sinne privater Nutzer oder einer Organisation zuweist.
Designziel
Headscale zielt darauf ab, eine selbst gehostete Open-Source-Alternative zum Control-Server von Tailscale zu implementieren. Das Ziel von Headscale ist es, Selbst-Hostern und Hobbyisten einen Open-Source-Server bereitzustellen, den sie für ihre Projekte und Labore nutzen können. Es implementiert einen eng begrenzten Umfang, ein einzelnes Tailscale- Netzwerk (Tailnet), geeignet für den persönlichen Gebrauch oder eine kleine Open-Source- Organisation.
Headscale unterstützen
Wenn dir headscale gefällt und du es nützlich findest, stehen im Repository
Sponsoring- und Spenden-Buttons zur Verfügung.
Funktionen
Siehe "Features" in der Dokumentation.
Unterstützte Client-Betriebssysteme
Siehe "Client and operating system support" in der Dokumentation.
Headscale ausführen
Bitte beachte, dass wir die Verwendung von Reverse-Proxys und Containern zum Betrieb von Headscale weder unterstützen noch empfehlen.
Wirf bitte einen Blick in die Dokumentation.
Für NixOS-Nutzer ist ein Modul in nix/ verfügbar.
Builds aus main
Entwicklungs-Builds aus dem main-Branch sind als Container-Images und
Binärdateien verfügbar. Siehe die Dokumentation zu den Entwicklungs-Builds
für Details.
Vorträge
- Fosdem 2026 (Video): Headscale & Tailscale: The complementary open source clone
- präsentiert von Kristoffer Dalby
- Fosdem 2023 (Video): Headscale: How we are using integration testing to reimplement Tailscale
- präsentiert von Juan Font Alonso und Kristoffer Dalby
Haftungsausschluss
Dieses Projekt steht in keiner Verbindung zu Tailscale Inc.
Allerdings ist einer der aktiven Maintainer von Headscale bei Tailscale angestellt, und es ist ihm erlaubt, Arbeitsstunden zur Mitarbeit am Projekt aufzuwenden. Beiträge dieses Maintainers werden von anderen Maintainern geprüft.
Die Maintainer arbeiten gemeinsam an der Ausrichtung des Projekts. Das zugrunde liegende Prinzip ist, der Gemeinschaft der Selbst-Hoster, Enthusiasten und Hobbyisten zu dienen – mit einem nachhaltigen Projekt.
Mitwirken
Bitte lies die Datei CONTRIBUTING.md.
Wirf auch einen Blick in unsere AI_POLICY.md.
Voraussetzungen
Um zu headscale beizutragen, benötigst du die neueste Version von Go und Buf (Protobuf-Generator).
Wir empfehlen die Verwendung von Nix, um eine Entwicklungsumgebung einzurichten. Dies kann
mit nix develop erfolgen, wodurch die Tools installiert und dir eine Shell bereitgestellt wird.
Dies garantiert, dass du dieselbe Entwicklungsumgebung wie die headscale-Maintainer hast.
Code-Stil
Um eine gewisse Konsistenz bei einer wachsenden Zahl von Beiträgen zu gewährleisten, hat dieses Projekt Linting- und Stil-/Formatierungsregeln übernommen:
Der Go-Code wird mit golangci-lint gelintet und
mit den golangci-lint-Formatierern formatiert
(gofumpt, gci, goimports).
Bitte konfiguriere deinen Editor so, dass die Tools während der Entwicklung ausgeführt werden, und stelle sicher, dass du
make lint und make fmt ausführst, bevor du Code committest.
Der Proto-Code wird mit buf gelintet und
mit clang-format formatiert.
Die Dokumentation wird mit mdformat formatiert.
Der Rest (Markdown, YAML usw.) wird mit prettier formatiert.
Sieh dir die .golangci.yaml und das Makefile an, um die spezifische Konfiguration zu sehen.
Entwicklungstools installieren
- Go
- Buf
- Protobuf-Tools
Installieren und aktivieren:
nix develop
Testen und Erstellen
Einige Teile des Projekts erfordern die Generierung von Go-Code aus Protobuf
(wenn Änderungen in proto/ vorgenommen werden) und dieser muss (neu) generiert werden mit:
make generate
Hinweis: Bitte committen Sie Änderungen aus gen/ in einem separaten Commit, um die Überprüfung zu erleichtern.
Um die Tests auszuführen:
make test
Um das Programm zu erstellen:
make build
Entwicklungsworkflow
Wir empfehlen die Verwendung von Nix für die Abhängigkeitsverwaltung, um sicherzustellen, dass alle erforderlichen Tools vorhanden sind. Wenn Sie es vorziehen, Abhängigkeiten selbst zu verwalten, können Sie Make direkt verwenden:
Mit Nix (empfohlen):
nix develop
make test
make build
Mit eigenen Abhängigkeiten:
make test
make build
Das Makefile warnt Sie, wenn erforderliche Tools fehlen, und schlägt vor, nix develop auszuführen. Führen Sie make help aus, um alle verfügbaren Targets anzuzeigen.
Mitwirkende
Erstellt mit contrib.rocks.