VPNSmith
self-host-vpnCOMP

Headscale ou WireGuard (2026) : l'un est le tunnel, l'autre distribue les clés

Headscale ne remplace pas WireGuard : il le coordonne. Avec WireGuard seul, chaque pair s'écrit à la main ; Headscale distribue clés, adresses et routes aux clients Tailscale. Ce que chacun exige, ce que la documentation de Headscale dit qu'il n'est pas, et comment choisir.

Par Eric Gerard · Fondateur · VPNSmith - Spécialiste self-host VPN & VPS GDPR9 min de lecturePhoto via Pexels

Lien d'affiliation - Cet article contient un lien d'affiliation Contabo. Si vous commandez un VPS via ce lien, nous touchons une commission sans surcoût pour vous. Les faits sur Headscale et WireGuard ci-dessous ont été lus dans la documentation officielle de chaque projet le 8 octobre 2026.

Réponse rapide : « Headscale ou WireGuard » n'est pas un choix entre deux protocoles VPN. WireGuard est le tunnel. Headscale est un serveur de contrôle qui indique aux clients Tailscale quelles clés WireGuard, quelles adresses et quelles routes utiliser, pour que vous n'ayez pas à les écrire à la main. Prenez WireGuard seul si vous avez un serveur et une poignée d'appareils qui doivent seulement joindre ce serveur. Prenez Headscale si vous voulez que de nombreux appareils se joignent entre eux, à travers le NAT, avec des noms, des règles d'accès et aucun fichier de configuration à modifier sur chaque machine.

Deux couches, pas deux rivaux

Le projet WireGuard résume son rôle en une phrase : il encapsule de façon sûre des paquets IP dans de l'UDP. Vous ajoutez une interface, vous lui donnez votre clé privée et les clés publiques de vos pairs, et les paquets circulent. La même page est tout aussi nette sur ce qu'elle laisse de côté : toutes les questions de distribution des clés et de configuration poussée sont hors du périmètre de WireGuard ("out of scope", dans le texte).

Cette couche manquante est précisément ce que fournit Headscale. Son README le définit comme une implémentation open source et auto-hébergée du serveur de contrôle de Tailscale, et décrit ce serveur comme le point d'échange des clés publiques WireGuard entre les nœuds du réseau : il attribue les adresses IP des clients et expose les routes qu'ils annoncent.

La vraie comparaison est donc celle-ci :

  • WireGuard seul : le plan de contrôle, c'est vous. Vous générez les clés, choisissez les adresses, écrivez chaque bloc [Peer] et le recopiez aux deux extrémités.
  • Headscale : le plan de contrôle est un service que vous hébergez. Les appareils font tourner le client Tailscale, se connectent à votre serveur et reçoivent leurs pairs automatiquement.

Dans les deux cas, le trafic entre vos machines est chiffré avec le protocole WireGuard.

Ce que WireGuard seul vous demande

Un réseau WireGuard se définit par des fichiers de configuration. Chaque pair est une clé publique associée aux adresses de tunnel qu'il a le droit d'utiliser, ce que le projet appelle le Cryptokey Routing :

[Interface]
PrivateKey = <server-private-key>
Address = 10.8.0.1/24
ListenPort = 51820

[Peer]
PublicKey = <laptop-public-key>
AllowedIPs = 10.8.0.2/32

Pour un serveur central et quelques clients, c'est court et lisible, et rien d'autre ne tourne que l'interface elle-même. Notre guide WireGuard sur Contabo décrit cette installation de bout en bout, et wg-easy y ajoute une interface web sans changer le modèle.

Le coût apparaît quand le réseau grandit dans une direction précise :

  • Chaque appareil ajouté oblige à modifier au moins deux fichiers. Le nouveau pair doit connaître le serveur, le serveur doit connaître le nouveau pair.
  • Un maillage complet multiplie ce travail. Si 10 appareils doivent chacun joindre directement les 9 autres, cela fait 45 paires à décrire, des deux côtés.
  • Quelqu'un doit être joignable. Un tunnel s'établit vers un point de terminaison, une adresse IP et un port UDP. Deux appareils placés tous les deux derrière un NAT n'ont pas ce point de terminaison l'un pour l'autre : c'est la situation décrite dans notre guide WireGuard derrière un CGNAT. La réponse habituelle consiste à tout faire passer par le serveur.
  • Les noms et les règles d'accès restent à construire. WireGuard vous donne des adresses. Le DNS et le filtrage entre pairs sont un travail à part.

Rien de tout cela n'est un défaut. C'est le périmètre que le projet a choisi, et pour un serveur unique c'est un avantage : moins de pièces mobiles, un seul port UDP.

Ce que Headscale ajoute

Avec Headscale, le travail par appareil se réduit à une commande. Sur le serveur, vous créez un utilisateur et une clé pré-authentifiée :

headscale users create <USER>
headscale preauthkeys create --user <USER_ID>

puis, sur chaque appareil où le client Tailscale est installé :

tailscale up --login-server <YOUR_HEADSCALE_URL> --authkey <YOUR_AUTH_KEY>

L'appareil reçoit alors son adresse et ses pairs depuis votre serveur. La liste des fonctionnalités de la documentation de Headscale comprend notamment :

  • MagicDNS et le split DNS, pour que les machines aient des noms plutôt que des adresses.
  • Des ACL dans un fichier de politique central, au lieu de règles de pare-feu sur chaque hôte.
  • Les routeurs de sous-réseau et les nœuds de sortie, pour atteindre un LAN entier ou faire sortir tout le trafic par un nœud.
  • Un serveur DERP embarqué. La documentation décrit DERP comme un relais utilisé surtout quand une connexion directe entre deux nœuds ne peut pas être établie. Il est désactivé par défaut.
  • L'enregistrement par OpenID Connect, en plus des clés pré-authentifiées.
Faces arrière de deux serveurs rack empilés, vues de face : grilles métalliques perforées, un port série sur une étiquette verte, un port VGA bleu, une prise Ethernet RJ45 et deux emplacements de modules superposés sur chacun, avec un câble orange flou qui traverse le coin inférieur gauche
Les faces arrière de deux serveurs rack, chacune avec un port série, un port VGA et une prise Ethernet. Quelle que soit l'option retenue, une machine dotée d'une adresse publique doit rester joignable par toutes les autres.

Ce que la documentation de Headscale dit qu'il n'est pas

C'est la partie que les comparatifs passent souvent sous silence, et le projet l'écrit lui-même sans détour.

  • Périmètre. Le README indique que Headscale couvre un périmètre étroit : un seul réseau Tailscale (tailnet), adapté à un usage personnel ou à une petite organisation open source.
  • Échelle. La FAQ précise que Headscale n'est pas un logiciel d'entreprise ("not enterprise software") et que la performance n'est pas une priorité. Elle estime que le serveur peut vraisemblablement gérer des centaines d'appareils quand le réseau change peu.
  • Fonctions absentes. Funnel, Serve et les journaux de flux réseau ne sont pas cochés dans la liste des fonctionnalités.
  • Déploiement. Le README indique que les mainteneurs ne prennent pas en charge et n'encouragent pas l'usage de reverse proxies ni de conteneurs pour faire tourner Headscale. Le support officiel porte sur les binaires et les paquets DEB. Des images de conteneur sont construites par commodité.
  • Clients. Les appareils utilisent le client Tailscale. Le projet vise la compatibilité avec ses 10 dernières versions, sous Linux, OpenBSD, FreeBSD, Windows, Android, macOS, iOS et tvOS.
  • Base de données. SQLite est recommandé. PostgreSQL reste pris en charge mais décrit comme étant en "maintenance mode".

Headscale est publié sous licence BSD-3-Clause. La dernière version sur GitHub à la date de rédaction de cette page est la v0.29.4, publiée le 23 septembre 2026.

Ce que chacun exige côté serveur

WireGuard seulHeadscale
RôleTunnel entre des pairs que vous configurezServeur de contrôle pour clients Tailscale
Processus serveurUne interface réseau, pas de démonUn service avec une base de données (SQLite recommandé)
Ports publicsUn port UDP de votre choixTCP 443 (HTTPS) ; UDP 3478 si le DERP embarqué est activé ; TCP 80 seulement si le client Let's Encrypt intégré utilise le défi HTTP-01
Domaine et TLSInutilesHTTPS sur le port 443 fortement recommandé par la documentation
Logiciel clientWireGuard sur chaque appareilClient Tailscale sur chaque appareil
Ajouter un appareilModifier la configuration aux deux extrémitésUne commande tailscale up
D'appareil à appareil à travers le NATPar votre serveur, sauf si l'un des deux a un point de terminaison joignableEn direct quand c'est possible, relayé par DERP sinon
Noms et règles d'accèsÀ construire à partMagicDNS et ACL inclus

Sources : wireguard.com, le README de Headscale et la documentation de Headscale (prérequis, fonctionnalités, FAQ, DERP), lus le 8 octobre 2026.

Les deux reposent sur la même base : une petite machine Linux avec une adresse IP publique, qui reste en ligne. Aucun des deux projets ne publie de minimum de RAM ou de CPU sur les pages citées ici, et un VPS d'entrée de gamme est l'hébergement habituel de l'un comme de l'autre.

Voir les offres Contabo Cloud VPS actuelles

Lequel faire tourner ?

Votre situationChoix
Un VPS, quelques appareils, tout le trafic passe par le serveurWireGuard
Vous voulez le moins de pièces mobiles possible et un seul port UDPWireGuard
Un routeur ou un boîtier qui ne propose qu'un client WireGuardWireGuard
Des portables, téléphones et serveurs qui doivent se joindre directementHeadscale
Plusieurs appareils derrière un NAT ou un CGNAT des deux côtésHeadscale
Vous ajoutez et retirez souvent des appareilsHeadscale
Vous voulez des noms et des règles d'accès centraliséesHeadscale
Des centaines d'appareils qui changent souvent, ou un besoin de support éditeurNi l'un ni l'autre : regardez le service Tailscale hébergé

Si la dernière ligne ressemble à votre cas, Tailscale ou Headscale compare le service hébergé et le serveur auto-hébergé, et Tailscale ou WireGuard auto-hébergé traite la même question du côté de WireGuard.

Peut-on faire tourner les deux ?

Oui, et c'est un montage raisonnable. Une interface WireGuard classique sur son propre port UDP et un service Headscale sur le port TCP 443 ne se disputent pas le même port. Une répartition courante : un tunnel WireGuard pour un lien fixe, comme la liaison site à site entre deux réseaux, et Headscale pour les appareils personnels qui se déplacent. Le prix à payer, ce sont deux systèmes à tenir à jour : ne le faites que si chacun résout un problème que l'autre ne résout pas.

En résumé

WireGuard est un protocole et vous laisse la distribution des clés. Headscale est une façon d'assurer vous-même cette distribution, avec le client Tailscale, sur un serveur que vous contrôlez. Commencez par WireGuard seul quand un serveur central suffit. Passez à Headscale quand les fichiers de configuration deviennent l'essentiel de ce que vous entretenez, et lisez d'abord sa documentation : elle dit clairement qu'il est conçu pour des réseaux personnels et de petits groupes. L'installation pas à pas se trouve dans notre guide du plan de contrôle Headscale.

★ Datacenter Nuremberg GDPR · ✓ IPv4 dédiée incluse · port 200 Mbit/s

Héberge ton VPN sur ton propre VPS → ContaboAccès root complet · IPv4 publique · choisis ta région→

Questions fréquentes

Headscale repose-t-il sur WireGuard ?
Oui, indirectement. Headscale est une implémentation auto-hébergée du serveur de contrôle de Tailscale, et son README décrit Tailscale comme un VPN construit au-dessus de WireGuard. Les paquets échangés entre vos appareils sont des paquets WireGuard ; Headscale indique seulement à chaque client Tailscale quelles clés, quelles adresses et quelles routes utiliser.
Peut-on utiliser Headscale avec le client WireGuard standard ?
Non. Headscale parle le protocole de contrôle de Tailscale : les appareils le rejoignent avec le client Tailscale, pointé vers votre serveur par l'option login-server. Une interface wg0 classique, configurée avec wg ou wg-quick, ne peut pas s'enregistrer auprès de Headscale.
Headscale a-t-il besoin d'un serveur avec une IP publique ?
Oui. La page des prérequis de Headscale demande un serveur doté d'une adresse IP publique, servi en HTTPS sur le port 443, sous un Linux ou un BSD raisonnablement récent. Si vous activez le relais DERP embarqué, le port UDP 3478 doit aussi être exposé pour STUN.
Combien d'appareils Headscale peut-il gérer ?
La FAQ de Headscale répond « ça dépend » et précise que le projet n'est pas un logiciel d'entreprise : il vise les homelabs et l'auto-hébergement. Elle indique que Headscale peut vraisemblablement gérer des centaines d'appareils quand le réseau change peu, et que beaucoup de nœuds qui changent souvent est le cas où il commence à peiner.
Lequel est le plus simple pour deux ou trois appareils ?
WireGuard seul. Un serveur, deux ou trois blocs de pairs et un unique port UDP demandent moins d'entretien qu'un serveur de contrôle avec une base de données, un domaine et un certificat TLS. Headscale devient rentable quand le nombre d'appareils, ou le nombre de paires qui doivent se parler directement, rend la configuration manuelle propice aux erreurs.