Headscale
cloudDéfinition
Serveur de coordination open source compatible avec les clients Tailscale. Permet un mesh VPN WireGuard auto-hébergé sans dépendre de Tailscale Inc.
Fonctionnement technique
Headscale est une implémentation open source et self-hosted du serveur de coordination Tailscale. Dans l'architecture Tailscale, le serveur de coordination gère l'échange de clés publiques WireGuard entre les nœuds, la distribution des ACL (Access Control Lists) et la configuration du réseau mesh. Headscale réplique ces fonctionnalités en permettant aux organisations de garder le contrôle total sur leur plan de contrôle.
Techniquement, Headscale implémente le protocole de coordination Tailscale, permettant aux clients Tailscale officiels de s'y connecter sans modification. Le plan de données (trafic réseau réel) transite directement entre les nœuds via WireGuard, sans passer par Headscale. Le serveur ne gère que le signaling : échange de clés, discovery des nœuds, distribution des routes et des ACL.
Headscale supporte le NAT traversal via DERP (Designated Encrypted Relay for Packets) pour les cas où la connexion directe WireGuard est impossible (double NAT, pare-feux restrictifs). Les serveurs DERP publics de Tailscale peuvent être utilisés, ou des serveurs DERP self-hosted peuvent être déployés pour une indépendance complète.
Cas d'usage
Headscale est destiné aux organisations souhaitant bénéficier de la simplicité de Tailscale tout en conservant la souveraineté sur leur infrastructure de coordination. C'est particulièrement pertinent pour les entreprises soumises à des exigences réglementaires strictes (données de santé, défense, gouvernement) qui ne peuvent pas utiliser un service SaaS pour la coordination de leur VPN.
Les homelabbers et les administrateurs système l'utilisent pour créer des réseaux mesh privés connectant serveurs domestiques, VPS cloud et machines nomades. La configuration est plus simple qu'un VPN WireGuard manuel tout en offrant la gestion automatique des clés et le NAT traversal.
Outils et implémentation
Headscale se déploie comme un binaire unique ou un conteneur Docker. La configuration se fait via un fichier YAML spécifiant la base de données (SQLite ou PostgreSQL), le domaine, les paramètres DERP et les ACL. La commande headscale users create crée des namespaces et headscale nodes register enregistre les clients.
Headscale-UI et Headplane sont des interfaces web communautaires facilitant la gestion des nœuds et des ACL. Les clients Tailscale officiels (tailscale CLI, apps mobiles) se connectent à Headscale via le flag --login-server. DERP peut être auto-hébergé pour une indépendance complète vis-à-vis de l'infrastructure Tailscale.
Défense / Bonnes pratiques
Sécurisez l'installation Headscale en activant le HTTPS avec un certificat valide (Let's Encrypt). Placez Headscale derrière un reverse proxy (Nginx, Caddy) avec des headers de sécurité appropriés. Restreignez l'accès à l'API d'administration par IP source ou VPN.
Configurez des ACL granulaires pour implémenter le principe du moindre privilège entre les nœuds. Par défaut, tous les nœuds peuvent communiquer entre eux ; restreignez les flux aux seuls nécessaires. Utilisez les tags Tailscale pour regrouper les machines par rôle (serveurs, postes, IoT) et définir des politiques par groupe.
Maintenez Headscale à jour car des vulnérabilités dans le plan de contrôle pourraient compromettre l'ensemble du réseau mesh. Sauvegardez régulièrement la base de données qui contient les clés et les configurations. Surveillez les logs pour détecter les tentatives d'enregistrement de nœuds non autorisés.
Articles associés
Voir nos articles détaillés sur ce sujet.
Besoin d'un expert sur ce sujet ?
Audit, pentest, conformité ISO 27001, développement IA sécurisé — demandez un devis gratuit.
Demander un devis