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

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:
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.
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.
Wenn Sie headscale mögen und nützlich finden, gibt es im Repository Schaltflächen für Sponsoring und Spenden.
Bitte beachten Sie „Funktionen“ in der Dokumentation.
Bitte beachten Sie „Client- und Betriebssystemunterstützung“ in der Dokumentation.
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.
mainEntwicklungs-Builds vom main-Branch sind als Container-Images und Binärdateien verfügbar. Details finden Sie in der Dokumentation zu den Entwicklungs-Builds.
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.
Bitte lesen Sie die Datei CONTRIBUTING.md.
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.
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.
Installieren und aktivieren:
nix develop
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
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.
Erstellt mit contrib.rocks.