
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 que vous utilisez pour vous assurer d'avoir la configuration exemple correcte. La branche main peut contenir des modifications non publiées. La documentation est disponible pour les versions stables 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 overlay entre les ordinateurs de vos réseaux — utilisant le franchissement de NAT.
Tout dans Tailscale est Open Source, à l'exception des clients graphiques pour les systèmes d'exploitation propriétaires (Windows et macOS/iOS) et du serveur de contrôle.
Le serveur de contrôle sert de point d'échange des clés publiques Wireguard pour les nœuds du réseau Tailscale. Il attribue les adresses IP des clients, crée les limites 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, qu'il s'agisse 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 passionnés un serveur open source qu'ils peuvent utiliser pour leurs projets et laboratoires. 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 sponsoring et de don sont disponibles dans le dépôt.
Fonctionnalités
Veuillez consulter la section "Fonctionnalités" dans la documentation.
Support des systèmes d'exploitation clients
Veuillez consulter la section "Support des clients et systèmes d'exploitation" dans la documentation.
Exécuter headscale
Veuillez noter que nous ne supportons ni n'encourageons l'utilisation de proxys inverses et de conteneurs pour exécuter Headscale.
Veuillez jeter un œil à la documentation.
Pour les utilisateurs de NixOS, un module est disponible dans nix/.
Compilations à partir de main
Des versions de développement issues de la branche main sont disponibles sous forme d'images conteneur et de binaires. Consultez la documentation sur les versions de développement pour les détails.
Conférences
- Fosdem 2026 (vidéo) : Headscale & Tailscale : le clone open source complémentaire
- présenté par Kristoffer Dalby
- Fosdem 2023 (vidéo) : Headscale : comment nous utilisons les tests d'intégration pour réimplémenter 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 au projet. Les contributions de ce mainteneur sont examinées par d'autres mainteneurs.
Les mainteneurs travaillent ensemble pour définir la direction du projet. Le principe sous-jacent est de servir la communauté des auto-hébergeurs, des passionnés et des amateurs, tout en maintenant un projet durable.
Contribuer
Veuillez lire le fichier CONTRIBUTING.md.
Prérequis
Pour contribuer à headscale, vous aurez besoin de la dernière version de Go et de Buf (générateur de Protobuf).
Nous recommandons l'utilisation de 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 assurer 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 golines (largeur 88) et gofumpt. Veuillez configurer votre éditeur pour exécuter ces outils pendant le développement et assurez-vous d'exécuter make lint et make fmt avant de valider du code.
Le code Proto est linté avec buf et formaté avec clang-format.
La doc est formatée avec mdformat.
Le reste (Markdown, YAML, etc.) est formaté avec prettier.
Consultez le fichier .golangci.yaml et le Makefile pour voir la configuration spécifique.
Installer les outils de développement
- Go
- Buf
- Outils Protobuf
Installez et activez :
nix develop
Tester et compiler
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 doivent être (re)générées avec :
make generate
Remarque : Veuillez inclure les modifications de gen/ dans un commit séparé pour faciliter la relecture.
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 vous assurer de disposer de tous les outils nécessaires. Si vous préférez gérer vous-même les dépendances, 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 suggérera d'exécuter nix develop. Exécutez make help pour voir toutes les cibles disponibles.
Contributeurs
Réalisé avec contrib.rocks.