- Headscale est un projet alternatif open source conçu pour auto-héberger les fonctions du serveur de contrôle de Tailscale
- Tailscale est une solution VPN moderne basée sur WireGuard, permettant de construire un réseau overlay fonctionnant même dans des environnements NAT
- Le serveur de contrôle Tailscale d’origine est un logiciel propriétaire, tandis que Headscale a été développé comme un logiciel serveur librement installable pouvant le remplacer
- Les clients Windows, macOS et iOS nécessitent toujours l’interface graphique de Tailscale
Objectif et caractéristiques de Headscale
- Headscale ne prend en charge qu’un seul tailnet (réseau privé virtuel), afin de convenir à une utilisation personnelle et aux petites organisations open source
- Une solution adaptée aux utilisateurs souhaitant exploiter leur propre serveur et aux adeptes du logiciel libre
- Son périmètre de conception volontairement restreint facilite la maintenance et l’administration
Fonctionnalités principales
- Échange de clés publiques WireGuard entre les nœuds clients
- Attribution des adresses IP et définition des limites pour chaque nœud
- Fonction de partage de machines entre utilisateurs
- Gestion des annonces de routes des nœuds
- La liste officielle des fonctionnalités est disponible ici
Systèmes d’exploitation clients pris en charge
- La liste des systèmes d’exploitation et des clients compatibles avec Headscale est disponible dans la documentation officielle
Installation et exécution
- L’utilisation d’un reverse proxy ou d’une exécution basée sur des conteneurs n’est pas officiellement recommandée
- Pour les méthodes d’exécution et la configuration, voir la documentation officielle
Communauté et contributions
- La communauté d’utilisateurs et de développeurs est active sur le canal Discord
- Il est impératif de lire CONTRIBUTING.md avant de contribuer
Environnement de développement et style de code
- Principaux outils nécessaires au développement :
- La dernière version de Go
- Buf (générateur Protobuf)
- Possibilité de configurer l’environnement de développement avec Nix (
nix develop)
- Style de code :
- Code Go : utilisation de
golangci-lint, golines, gofumpt
- Code Proto : utilisation de
buf, clang-format
- Autres fichiers : formatage avec
prettier
- Avant tout commit, il est indispensable d’exécuter
make lint et make fmt
Build et tests
- En cas de modification du code Protobuf, il faut régénérer le code Go :
make generate
- Exécution des tests :
make test
- Build :
nix build
- ou la commande
make build
Autres informations
- Une présentation liée à Headscale a eu lieu au FOSDEM 2023 : voir la vidéo
- Le projet n’a pas de lien direct avec Tailscale Inc., mais des contributeurs de Tailscale y participent, tandis que les revues de code et l’orientation du projet restent indépendantes
1 commentaires
Avis Hacker News
Tous les quelques mois, je repasse voir ce dépôt pour vérifier si tailnet lock fonctionne ou si un audit de sécurité a été réalisé. Malheureusement, rien n’a avancé sur ces deux points, ce qui me laisse incertain quant à la possibilité de faire confiance à ce système comme élément central de mon infrastructure
Si vous vous intéressez à l’auto-hébergement du serveur d’orchestration, vous pouvez jeter un œil à Netbird. C’est très similaire, mais le serveur est proposé en open source. Vous pouvez donc avoir un serveur de contrôle auto-hébergé avec toutes les fonctionnalités de la version payante, ainsi qu’une belle interface graphique
Ce serait bien si Headscale permettait le peering / la fédération entre instances (même après la refonte des ACL). L’un des principaux problèmes est le conflit d’adresses
Il faudrait ajouter le nom du projet, Headscale, dans le titre
Je me demande si ça tourne sur Plan 9
J’adore Headscale. Nous l’avons déployé en production et ça s’est très bien passé
Je me demande à quel point mes appareils risquent d’être compromis si le serveur de coordination Tailscale est compromis et que tailnet lock est activé
Pour de nombreux cas d’usage (accès mobile, GUI sur macOS), le client officiel Tailscale dépend de la capacité à configurer le serveur de contrôle
Je me demande quelle valeur ajoutée cette configuration apporte par rapport à une configuration wireguard + openwrt
L’affirmation « Ne faire absolument aucun audit du code serveur de l’implémentation Tailscale, tout en ne donnant pas aux utilisateurs de moyen de comprendre ou de refuser ce que le serveur de contrôle ordonne aux clients, me paraît audacieux » suggère que le simple fait de publier le code source du serveur de contrôle Headscale n’est pas une condition suffisante pour que les utilisateurs puissent « comprendre ou refuser ce que le serveur de contrôle ordonne aux clients »