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 Open-Source-, selbst gehostete Implementierung des Tailscale-Kontrollservers.

Treten Sie unserem Discord-Server für ein Gespräch bei.

Hinweis: Wählen Sie immer das gleiche GitHub-Tag wie die von Ihnen verwendete veröffentlichte Version, um sicherzustellen, dass Sie die richtige Beispielkonfiguration haben. 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 Ihrer 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) und des Kontrollservers.

Der Kontrollserver fungiert als Austauschpunkt für Wireguard-öffentliche Schlüssel der Knoten im Tailscale-Netzwerk. Er weist die IP-Adressen der Clients zu, erstellt die Grenzen zwischen den Benutzern, ermöglicht das Teilen von Maschinen zwischen Benutzern und stellt die angekündigten Routen Ihrer Knoten bereit.

Ein Tailscale-Netzwerk (Tailnet) ist ein privates Netzwerk, das Tailscale einem Benutzer im Sinne von privaten Benutzern oder einer Organisation zuweist.

Designziel

Headscale zielt darauf ab, eine selbst gehostete Open-Source-Alternative zum Tailscale-Kontrollserver 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 engen Bereich, ein einziges Tailscale-Netzwerk (Tailnet), geeignet für den persönlichen Gebrauch oder eine kleine Open-Source-Organisation.

Headscale unterstützen

Wenn Sie headscale mögen und nützlich finden, gibt es im Repository Schaltflächen für Sponsoring und Spenden.

Funktionen

Bitte beachten Sie „Funktionen“ in der Dokumentation.

Client-Betriebssystemunterstützung

Bitte beachten Sie „Client- und Betriebssystemunterstützung“ in der Dokumentation.

Headscale ausführen

Bitte beachten Sie, dass wir die Verwendung von Reverse-Proxys und Containern zum Ausführen von Headscale weder unterstützen noch empfehlen.

Bitte werfen Sie einen Blick auf die Dokumentation.

Für NixOS-Benutzer steht ein Modul in nix/ zur Verfügung.

Builds von main

Entwicklungs-Builds vom main-Branch sind als Container-Images und Binärdateien verfügbar. Details finden Sie in der Dokumentation zu den Entwicklungs-Builds.

Vorträge

Haftungsausschluss

Dieses Projekt steht nicht in Verbindung mit Tailscale Inc.

Einer der aktiven Betreuer von Headscale ist jedoch bei Tailscale angestellt und darf Arbeitszeit für Beiträge zum Projekt verwenden. Beiträge dieses Betreuers werden von anderen Betreuern überprüft.

Die Betreuer arbeiten gemeinsam daran, die Richtung des Projekts festzulegen. Das grundlegende Prinzip ist, der Gemeinschaft der Selbst-Hoster, Enthusiasten und Hobbyisten zu dienen – und gleichzeitig ein nachhaltiges Projekt zu haben.

Mitwirken

Bitte lesen Sie die Datei CONTRIBUTING.md.

Voraussetzungen

Um zu Headscale beizutragen, benötigen Sie die neueste Version von Go und Buf (Protobuf-Generator).

Wir empfehlen die Verwendung von Nix zum Einrichten einer Entwicklungsumgebung. Dies kann mit nix develop erfolgen, das die Werkzeuge installiert und Ihnen eine Shell gibt. Dies garantiert, dass Sie die gleiche Entwicklungsumgebung wie die headscale-Betreuer haben.

Code-Stil

Um eine gewisse Konsistenz bei einer wachsenden Anzahl von Beiträgen zu gewährleisten, hat dieses Projekt Linting- und Stil-/Formatierungsregeln übernommen:

Der Go-Code wird mit golangci-lint gelingt und mit golines (Breite 88) und gofumpt formatiert. Bitte konfigurieren Sie Ihren Editor so, dass er die Werkzeuge während der Entwicklung ausführt, und stellen Sie sicher, dass Sie make lint und make fmt ausführen, bevor Sie Code committen.

Der Proto-Code wird mit buf gelingt und mit clang-format formatiert.

Die Dokumentation wird mit mdformat formatiert.

Der Rest (Markdown, YAML usw.) wird mit prettier formatiert.

Schauen Sie sich die .golangci.yaml und die Makefile an, um die spezifische Konfiguration zu sehen.

Entwicklungswerkzeuge installieren

  • Go
  • Buf
  • Protobuf-Werkzeuge

Installieren und aktivieren:

nix develop

Testen und Bauen

Einige Teile des Projekts erfordern die Generierung von Go-Code aus Protobuf (wenn Änderungen in proto/ vorgenommen werden) und müssen mit folgendem Befehl (neu) generiert werden:

make generate

Hinweis: Bitte übernehmen 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 bauen:

make build

Entwicklungsworkflow

Wir empfehlen die Verwendung von Nix für das Abhängigkeitsmanagement, um sicherzustellen, dass Sie alle erforderlichen Werkzeuge haben. Wenn Sie Ihre Abhängigkeiten lieber selbst verwalten möchten, können Sie Make direkt verwenden:

Mit Nix (empfohlen):

nix develop
make test
make build

Mit Ihren eigenen Abhängigkeiten:

make test
make build

Die Makefile wird Sie warnen, wenn erforderliche Werkzeuge fehlen, und vorschlagen, nix develop auszuführen. Führen Sie make help aus, um alle verfügbaren Ziele zu sehen.

Mitwirkende

Erstellt mit contrib.rocks.

Kategorien