--- title: Headscale created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, vpn, mesh, tailscale, zerotrust, nat-traversal, go, wireguard, coordination-server] confidence: high contested: false sources: [https://selfh.st/apps/?tag=VPN, https://github.com/juanfont/headscale] --- # 🔐 Headscale > **L'implĂ©mentation open source du serveur de coordination Tailscale** — auto-hĂ©bergez votre mesh VPN WireGuard sans dĂ©pendre du cloud de Tailscale Inc. ## 📋 Informations GĂ©nĂ©rales | Champ | Valeur | | :--- | :--- | | **Site web** | [headscale.net](https://headscale.net/) | | **GitHub** | [juanfont/headscale](https://github.com/juanfont/headscale) | | **License** | Apache-2.0 | | **Langage** | Go | | **Étoiles GitHub** | 39 729 ⭐ | | **DerniĂšre MAJ** | 2026-06-07 | | **CatĂ©gorie** | [[cat-vpn|VPN & RĂ©seau privĂ©]] | ## 📝 Description **Headscale** est un **serveur de coordination open source** compatible avec le client officiel Tailscale. LĂ  oĂč Tailscale propose un service managĂ© (control plane + coordination), Headscale rĂ©implĂ©mente la partie serveur en Go pour vous permettre de garder le contrĂŽle total sur l'infrastructure de votre mesh VPN. ConcrĂštement, vos machines (serveurs, laptops, tĂ©lĂ©phones) exĂ©cutent le **client Tailscale officiel** et se connectent Ă  votre instance Headscale au lieu du serveur de Tailscale Inc. C'est l'une des pierres angulaires du mouvement "**self-sovereign networking**" : vous obtenez la simplicitĂ© d'usage de Tailscale (NAT traversal magique, MagicDNS, ACLs, partage de nƓuds entre utilisateurs) sans confier vos mĂ©tadonnĂ©es rĂ©seau Ă  un tiers. Le projet, dĂ©marrĂ© en 2021 par Juan Font, est dĂ©sormais largement utilisĂ© en production par des homelabbers, des associations et mĂȘme des entreprises. - ✅ **100% compatible avec le client Tailscale officiel** (CLI, GUI macOS/Windows/Linux/iOS/Android) - ✅ **NAT traversal** : Hole punching STUN + relais DERP (vous pouvez aussi hĂ©berger vos propres DERP) - ✅ **MagicDNS** : rĂ©solution automatique des noms de pairs - ✅ **ACLs** (JSON) et **Tailnet Lock** (vĂ©rification des clĂ©s) - ✅ **Multi-tenants** (plusieurs "users"/namespaces) - ✅ **PreAuth keys** : enrollement simplifiĂ© (QR code, clĂ© Ă  usage unique) - ✅ **Exit nodes** : partager une connexion internet via le mesh - ✅ **Subnets** : router des sous-rĂ©seaux entiers Ă  travers un pair - ✅ **OpenID Connect / OIDC** : intĂ©gration SSO (Keycloak, Authentik, Google
) - ✅ **Binaire Go unique** ou image Docker officielle - ✅ **API REST + CLI `headscale`** **Public cible** : homelabbers avancĂ©s, Ă©quipes infra qui refusent le SaaS Tailscale, organisations avec contraintes de souverainetĂ© (santĂ©, finance, administration). Pour un usage basique solo, **Tailscale gratuit (100 devices, 3 users)** est souvent plus simple — Headscale prend tout son sens quand on veut Ă©chapper Ă  la dĂ©pendance au cloud ou quand on dĂ©passe les limites gratuites. **Vs Tailscale SaaS** : Headscale offre les mĂȘmes protocoles (WireGuard + Noise + DERP), mais l'Ă©cosystĂšme de fonctionnalitĂ©s Tailscale (Taildrop, SSH Tailscale, Funnel public) peut ĂȘtre en retard de quelques versions. Le client reste exactement le mĂȘme. ## 🚀 Installation ### Option 1 : Docker Compose (recommandĂ©) ```yaml # docker-compose.yml version: '3.8' services: headscale: image: headscale/headscale:latest container_name: headscale restart: unless-stopped command: serve ports: - "443:443" # API HTTPS - "80:80" # Let's Encrypt challenge - "51820:51820/udp" # WireGuard (optionnel en mode userspace) volumes: - ./config:/etc/headscale - ./data:/var/lib/headscale labels: - "traefik.enable=true" - "traefik.http.routers.headscale.rule=Host(`headscale.example.com`)" - "traefik.http.routers.headscale.entrypoints=websecure" - "traefik.http.routers.headscale.tls.certresolver=letsencrypt" - "traefik.http.services.headscale.loadbalancer.server.port=443" derp: image: ghcr.io/tailscale/derper:latest container_name: derper restart: unless-stopped command: /derper --hostname=derp.example.com --verify-clients=false ports: - "51820:51820/udp" # RĂ©utilisation du port WireGuard pour STUN - "443:443" # Relay HTTPS labels: - "traefik.enable=true" - "traefik.http.routers.derp.rule=Host(`derp.example.com`)" - "traefik.http.routers.derp.tls.certresolver=letsencrypt" ``` > 💡 Le serveur **DERP** (relais) ci-dessus est optionnel mais recommandĂ© : il amĂ©liore drastiquement le NAT traversal et la latence en cas de hole-punching impossible. ### Option 2 : Binaire natif (Debian/Ubuntu) ```bash curl -fsSL https://github.com/juanfont/headscale/releases/latest/download/headscale_linux_amd64 -o /usr/local/bin/headscale chmod +x /usr/local/bin/headscale # GĂ©nĂ©rer la config headscale generate private-key sudo mkdir -p /etc/headscale curl -fsSL https://raw.githubusercontent.com/juanfont/headscale/main/config-example.yaml -o /etc/headscale/config.yaml # Systemd unit sudo systemctl enable --now headscale ``` ## ⚙ Configuration Initiale 1. **CrĂ©er un namespace utilisateur** : `headscale users create velli` 2. **GĂ©nĂ©rer une PreAuth Key** : `headscale preauthkeys create -u velli -e 24h --reusable --tags=tag:server` 3. **Enregistrer un client** sur la machine cliente : ```bash tailscale up --login-server https://headscale.example.com --authkey= ``` 4. **(Optionnel) Activer MagicDNS** dans `config.yaml` (`magic_dns: enabled: true`) 5. **(Optionnel) Configurer les ACLs** dans `/etc/headscale/acl.yaml` puis recharger 6. **VĂ©rifier** : `headscale nodes list` doit lister le pair nouvellement enregistrĂ© ## 🔄 Alternatives ### Open Source - [[app-tailscale]] (SaaS officiel — gratuit jusqu'Ă  100 devices) - [[app-netbird]] — Concurrent direct, panel web intĂ©grĂ©, plus jeune - [[app-zerotier]] + [[app-ztnet]] — Mesh global, philosophie diffĂ©rente (L2 Ethernet-like) - [[app-wg-easy]] — WireGuard "classique" site-Ă -site, sans mesh - **Innernet** — WireGuard mesh par tonic (sponsor Tailscale) ### PropriĂ©taires - **Tailscale** (freemium : 100 devices / 3 users, puis 5$/user/mois) - **Cloudflare Tunnel** (zero-trust + WARP, gratuit avec limits) - **Zscaler Private Access** (entreprise) - **Palo Alto Prisma Access** ### Comparaison Headscale vs alternatives | CritĂšre | Headscale | Tailscale SaaS | NetBird | ZeroTier | | :--- | :--- | :--- | :--- | :--- | | Self-hosted control plane | ✅ | ❌ | ✅ | ❌ (ZTnet = partiel) | | License | Apache-2.0 | PropriĂ©taire | Apache-2.0 | BSL (gros clients) | | Protocol base | WireGuard | WireGuard | WireGuard | Propre (L2) | | NAT traversal | STUN + DERP | STUN + DERP (rapide) | STUN + ICE | Propre | | OIDC/SSO | ✅ | ✅ | ✅ | ❌ | | ACLs | ✅ (avancĂ©es) | ✅ (trĂšs fines) | ✅ | Basiques | | MagicDNS | ✅ | ✅ | ✅ | ❌ | | UI web | ❌ (CLI only) | ✅ | ✅ | ❌ | **Verdict** : si vous aimez Tailscale mais voulez **maĂźtriser vos mĂ©tadonnĂ©es** rĂ©seau, Headscale est aujourd'hui le choix le plus mature. NetBird est son challenger le plus crĂ©dible grĂące Ă  son panel web. ## 🔐 SĂ©curitĂ© - ✅ **WireGuard** : cryptographie moderne (Curve25519 pour l'Ă©change de clĂ©s, ChaCha20-Poly1305 pour le chiffrement, BLAKE2s pour le hachage) — l'IP publique des pairs peut fuiter via le serveur de coordination (utiliser **Tailnet Lock** pour mitiger) - ✅ **ClĂ©s privĂ©es WireGuard** : gĂ©nĂ©rĂ©es localement sur chaque machine, **JAMAIS transmises** au serveur de coordination (qui n'est qu'un "annuaire" — il ne voit pas le trafic) - ✅ **OIDC** : connecter Headscale Ă  [[app-authentik]] ou Keycloak pour SSO + **MFA obligatoire** sur l'admin - ✅ **ACLs strictes** : principe du moindre privilĂšge dans `acl.yaml`, auditer rĂ©guliĂšrement - ✅ **Logs d'audit** : Headscale logge tous les enregistrements/dĂ©parts de pairs, exporter vers [[app-loki]] ou Wazuh - ⚠ Sauvegarder la **clĂ© privĂ©e du serveur** (`private_key.pem`) et la **clĂ© Noise** dans [[app-vaultwarden]] ou un coffre-fort — leur perte = perte du contrĂŽle du tailnet - ⚠ Activer **Tailnet Lock** en production pour empĂȘcher un attaquant d'enregistrer un faux pair ## 📚 Ressources - [Site officiel Headscale](https://headscale.net/) - [GitHub juanfont/headscale](https://github.com/juanfont/headscale) - [Documentation](https://headscale.net/kb/) - [Comparatif Headscale vs Tailscale](https://headscale.net/comparison/) ## Pages LiĂ©es - [[cat-vpn]] — CatĂ©gorie VPN & RĂ©seau privĂ© - [[app-tailscale]] — Le client officiel utilisĂ© avec Headscale - [[app-netbird]] — Concurrent open source - [[app-wireguard]] — Le protocole sous-jacent - [[app-traefik]] — Reverse proxy / HTTPS - [[app-authentik]] — SSO OIDC - [[securisation-home-lab]] — Bonnes pratiques globales - [[glossaire-homelab]] — DĂ©finitions rĂ©seau - [[comparatif-vpn-mesh]] — Comparatif global mesh VPN