Zurück zu den Updates
New releaseJul 29, 2026

headscale v0.29.3

Eine Open-Source, selbst gehostete Implementierung des Tailscale Control Servers

Teilen

headscale logo

ci

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

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.

Kategorien