
headscale v0.29.3
Une implémentation open source et auto-hébergée du serveur de contrôle de Tailscale.

Une implémentation open source et auto-hébergée du serveur de contrôle Tailscale.
Rejoignez notre serveur Discord pour discuter.
Remarque : Sélectionnez toujours le même tag GitHub que la version publiée que vous utilisez
afin de vous assurer de disposer de la bonne configuration d'exemple. La branche main peut
contenir des modifications non publiées. La documentation est disponible pour les versions stable et
de développement :
Qu'est-ce que Tailscale
Tailscale est un VPN moderne construit au-dessus de Wireguard. Il fonctionne comme un réseau superposé entre les ordinateurs de vos réseaux - en utilisant la traversée NAT.
Tout dans Tailscale est Open Source, à l'exception des clients GUI pour les OS propriétaires (Windows et macOS/iOS), et du serveur de contrôle.
Le serveur de contrôle agit comme un point d'échange de clés publiques Wireguard pour les nœuds du réseau Tailscale. Il attribue les adresses IP des clients, crée les frontières entre chaque utilisateur, permet le partage de machines entre utilisateurs, et expose les routes annoncées de vos nœuds.
Un réseau Tailscale (tailnet) est un réseau privé que Tailscale attribue à un utilisateur en termes d'utilisateurs privés ou d'une organisation.
Objectif de conception
Headscale vise à implémenter une alternative auto-hébergée et open source au serveur de contrôle Tailscale. L'objectif de Headscale est de fournir aux auto-hébergeurs et aux amateurs un serveur open source qu'ils peuvent utiliser pour leurs projets et leurs labs. Il implémente un périmètre restreint, un unique réseau Tailscale (tailnet), adapté à un usage personnel, ou à une petite organisation open source.
Soutenir Headscale
Si vous aimez headscale et le trouvez utile, des boutons de parrainage et de don
sont disponibles dans le dépôt.
Fonctionnalités
Veuillez consulter "Features" dans la documentation.
Prise en charge des OS clients
Veuillez consulter "Client and operating system support" dans la documentation.
Exécuter headscale
Veuillez noter que nous ne prenons pas en charge et n'encourageons pas l'utilisation de reverse proxies et de conteneurs pour exécuter Headscale.
Veuillez jeter un œil à la documentation.
Pour les utilisateurs de NixOS, un module est disponible dans nix/.
Builds depuis main
Des builds de développement depuis la branche main sont disponibles sous forme d'images de conteneurs et
de binaires. Consultez la documentation des builds de développement
pour plus de détails.
Conférences
- Fosdem 2026 (vidéo) : Headscale & Tailscale: The complementary open source clone
- présenté par Kristoffer Dalby
- Fosdem 2023 (vidéo) : Headscale: How we are using integration testing to reimplement Tailscale
- présenté par Juan Font Alonso et Kristoffer Dalby
Avertissement
Ce projet n'est pas associé à Tailscale Inc.
Cependant, l'un des mainteneurs actifs de Headscale est employé par Tailscale et il est autorisé à consacrer des heures de travail à contribuer au projet. Les contributions de ce mainteneur sont examinées par d'autres mainteneurs.
Les mainteneurs travaillent ensemble pour définir l'orientation du projet. Le principe sous-jacent est de servir la communauté des auto-hébergeurs, des passionnés et des amateurs - tout en ayant un projet durable.
Contribuer
Veuillez lire le fichier CONTRIBUTING.md.
Jetez également un œil à notre AI_POLICY.md.
Prérequis
Pour contribuer à headscale, vous auriez besoin de la dernière version de Go et de Buf (générateur Protobuf).
Nous recommandons d'utiliser Nix pour configurer un environnement de développement. Cela peut
être fait avec nix develop, qui installera les outils et vous donnera un shell.
Cela garantit que vous aurez le même environnement de développement que les mainteneurs de headscale.
Style de code
Pour garantir une certaine cohérence avec un nombre croissant de contributions, ce projet a adopté des règles de linting et de style/formatage :
Le code Go est linté avec golangci-lint et
formaté avec les formateurs de golangci-lint
(gofumpt, gci, goimports).
Veuillez configurer votre éditeur pour exécuter les outils pendant le développement et assurez-vous de
lancer make lint et make fmt avant de committer du code.
Le code Proto est linté avec buf et
formaté avec clang-format.
La documentation est formatée avec mdformat.
Le reste (Markdown, YAML, etc.) est formaté avec prettier.
Consultez les fichiers .golangci.yaml et Makefile pour voir la configuration spécifique.
Installer les outils de développement
- Go
- Buf
- Outils Protobuf
Installer et activer :
nix develop
Tests et compilation
Certaines parties du projet nécessitent la génération de code Go à partir de Protobuf
(si des modifications sont apportées dans proto/) et celui-ci doit être (re-)généré avec :
make generate
Remarque : Veuillez valider les modifications de gen/ dans un commit séparé pour faciliter la révision.
Pour exécuter les tests :
make test
Pour compiler le programme :
make build
Flux de développement
Nous recommandons d'utiliser Nix pour la gestion des dépendances afin de garantir que vous disposez de tous les outils requis. Si vous préférez gérer les dépendances vous-même, vous pouvez utiliser Make directement :
Avec Nix (recommandé) :
nix develop
make test
make build
Avec vos propres dépendances :
make test
make build
Le Makefile vous avertira si des outils requis sont manquants et vous suggérera d'exécuter nix develop. Exécutez make help pour voir toutes les cibles disponibles.
Contributeurs
Réalisé avec contrib.rocks.