
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 :
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.
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.
Si vous aimez headscale et le trouvez utile, des boutons de sponsoring et de don sont disponibles dans le dépôt.
Veuillez consulter la section "Fonctionnalités" dans la documentation.
Veuillez consulter la section "Support des clients et systèmes d'exploitation" dans la documentation.
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/.
mainDes 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.
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.
Veuillez lire le fichier CONTRIBUTING.md.
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.
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.
Installez et activez :
nix develop
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
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.
Réalisé avec contrib.rocks.