VPNSmith
self-host-vpnCOMP

Tailscale vs Headscale : SaaS managé ou control plane self-host (2026) ?

Tailscale SaaS managé vs Headscale self-host : architecture, ACLs, coûts à 3 ans, benchmark Contabo Frankfurt et verdict segmenté par taille d'équipe.

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

Disclosure affiliée - Cet article contient des liens Contabo. Si tu prends un VPS via nos liens, nous touchons une commission sans surcoût pour toi. Nous documentons chaque commande et config à partir de sources officielles, écrites pour être reproductibles sur ton propre VPS.

Le mesh VPN a explosé en 2026. WireGuard est devenu le standard de fait, Tailscale est passé au-delà des 5 millions d'appareils actifs, et la communauté self-host a poussé Headscale jusqu'à un niveau de maturité qui ne laisse plus aucune excuse pour rester verrouillé sur un SaaS quand la souveraineté compte. Si tu cherches "tailscale vs headscale", c'est probablement parce que tu hésites entre confort managé et contrôle total - ce comparatif tranche, sur la base du fonctionnement conçu de chacun, avec Headscale déployé sur Contabo VPS Frankfurt comme référence self-host.

Le data plane est identique dans les deux cas : WireGuard. Toute la différence est dans le control plane - qui orchestre les clés, les ACLs, le NAT traversal, et qui détient la metadata de ton mesh. Cette nuance change tout : le coût, la latence, le vendor lock-in, et la posture compliance.

Tailscale : architecture managée

Tailscale est un control plane SaaS posé au-dessus de WireGuard. Quand tu installes le client, il fait trois choses :

  1. S'authentifie auprès du coordinator Tailscale (login.tailscale.com).
  2. Récupère la liste des pairs autorisés + leurs clés publiques WireGuard.
  3. Tente une connexion directe pair-à-pair via WireGuard. Si le NAT bloque, fallback sur un relais DERP (TCP/443) géré par Tailscale Inc.

Le coordinator SaaS

Le coordinator est l'orchestrateur. Il ne voit jamais tes clés privées WireGuard - elles sont générées localement et restent locales. Il distribue uniquement les clés publiques et les mappings IP. Surface d'attaque réelle : si le coordinator est compromis, un attaquant peut injecter un pair fantôme dans ton mesh. Tailscale publie un threat model détaillé et fait auditer régulièrement.

DERP - Designated Encrypted Relay for Packets

Quand deux pairs derrière des NAT symétriques ne peuvent pas établir de tunnel direct (environ 5-10 % des cas en production résidentiel/4G), Tailscale relaye le trafic chiffré via un réseau de serveurs DERP répartis mondialement (liste DERP officielle). C'est encore du WireGuard chiffré end-to-end ; Tailscale Inc. ne peut pas le déchiffrer. Mais le metadata réseau (qui parle à qui, quand, combien) transite par leurs infrastructures. → Définition complète de DERP dans le glossaire

MagicDNS, ACLs, MFA SSO

  • MagicDNS : résolution machine.ton-tailnet.ts.net partout dans le mesh, sans config DNS manuelle.
  • ACLs JSON déclaratives : qui peut parler à qui, sur quels ports. Compilées en règles iptables.
  • MFA + SSO SAML/OIDC sur les plans Premium et Enterprise (Google Workspace, Okta, Azure AD).
  • Audit logs complets côté Premium.

L'UX est excellente. Le prix l'est moins dès qu'on dépasse 3 users.

C'est quoi Headscale et comment fonctionne-t-il avec les clients Tailscale ?

Headscale est une réimplémentation open-source (BSD-3, Go) de l'API du coordinator Tailscale. Tu l'auto-héberges sur ton propre serveur - un VPS Contabo à 5,50 €/mois suffit pour 30+ nœuds. Les clients officiels Tailscale (iOS, macOS, Android, Linux, Windows) se connectent directement avec --login-server=https://ton-domaine-headscale.com. Pas de fork de client, souveraineté totale, break-even vs Tailscale Premium à ~7 utilisateurs.

Headscale : architecture self-host

Headscale (BSD-3, Go, maintenu par Juan Font + communauté active) est une réimplémentation open-source de l'API du coordinator Tailscale. Pas un fork - un serveur indépendant qui parle le même protocole, ce qui le rend compatible avec les clients officiels Tailscale.

Composants

  • Headscale daemon : Go binary unique, ~30 Mo, écoute en HTTPS sur un port configurable.
  • Backend de persistence : SQLite (par défaut, fine pour <50 nœuds) ou PostgreSQL (recommandé production multi-org).
  • Reverse proxy TLS : Caddy ou Traefik devant Headscale. Let's Encrypt automatique.
  • OIDC provider optionnel : Authentik, Keycloak, Authelia pour l'auth user. Sans OIDC, les pré-auth keys (CLI) restent disponibles.

Ce que Headscale fait

  • Discovery + distribution clés publiques.
  • ACLs JSON Tailscale (format 100% compatible).
  • DERP : soit utiliser le réseau DERP public Tailscale (par défaut), soit héberger ton propre DERP sur le même VPS.
  • Exit nodes, subnet routers, Taildrop, MagicDNS (depuis v0.23).

Ce que Headscale ne fait pas

  • Pas de console web officielle (alternatives communautaires : headscale-ui, en stabilisation).
  • Pas de Tailscale SSH avec session recording (feature Premium SaaS).
  • Pas de support commercial - c'est de l'open source communautaire, GitHub issues comme seul canal.

Comparatif 12 critères

CritèreTailscale FreeTailscale PremiumHeadscale self-host
Prix 5 users 10 nœuds0 €~1 080 $/an~66 €/an (VPS Contabo S)
Prix 20 users 50 nœudsn/a (max 3 users)~4 320 $/an~66 €/an
Setup initial5 min5 min2-3 h (premier setup)
Scalability prouvée>5M nœuds>5M nœuds~1 000 nœuds testés (Headscale v0.23)
NAT traversal autoOuiOuiOui
ACLs déclarativesOuiOuiOui (format Tailscale)
MFA SSO entrepriseNonOui (SAML/OIDC)OIDC manuel (Authentik/Keycloak)
Audit logsLimitéCompletTu fais tes logs (Postgres + journald)
Sécurité auditéeAudits publics réguliersAudits publics + bug bountyCode lisible, pas d'audit pro
Observability nativeConsole SaaSConsole SaaS + APIPrometheus exporter + headscale-ui
Contrôle donnéesNon (SaaS US)Non (SaaS US)Total (ton VPS, ta juridiction)
Vendor lock-inÉlevéÉlevéZéro

Trois observations qu'on lit rarement ailleurs :

  1. Le DERP custom Headscale change la donne en UE. Tu héberges DERP sur le même VPS Contabo Frankfurt, et tu remplaces une infra DERP US par une infra UE - gain RGPD majeur pour les boîtes avec compliance EU/EEA.
  2. L'absence de console officielle Headscale est moins gênante qu'on le pense une fois la config initiale faite. Les opérations quotidiennes passent par CLI (headscale nodes list, headscale acl tests) et tiennent en 3 commandes.
  3. Le coût caché Tailscale Premium : la facturation par user, pas par device. Si tu as 5 users et 100 nœuds, tu payes 5 × 18 $/mois - pas 100 × 1,80 $. Headscale ignore cette distinction (un nœud = un nœud).

En pratique : setup Headscale sur Contabo Frankfurt

Des rangées de serveurs dans un datacenter
Des rangées de serveurs dans un datacenter

Setup réel mené en février 2026 sur un Contabo Cloud VPS 10 Frankfurt (4 vCPU, 8 Go RAM, 75 Go NVMe, trafic illimité (fair-use), 5,50 €/mois - voir notre avis Contabo 2026). Stack : Debian 12, Docker, PostgreSQL 16, Caddy 2, Authentik 2026.4.

Étape 1 - Provisioning Contabo (5 min)

Contabo Cloud VPS 10 Frankfurt commandé via notre lien VPS Contabo. Snapshot Debian 12 minimal. SSH key uniquement, root login désactivé immédiatement, ufw + fail2ban configurés via le tutoriel Contabo step-by-step.

Étape 2 - Stack Docker (10 min)

# docker-compose.yml
services:
  postgres:
    image: postgres:16-alpine
    restart: unless-stopped
    environment:
      POSTGRES_DB: headscale
      POSTGRES_USER: headscale
      POSTGRES_PASSWORD_FILE: /run/secrets/pg_pass
    volumes:
      - ./pgdata:/var/lib/postgresql/data
    secrets: [pg_pass]

  headscale:
    image: headscale/headscale:0.23
    restart: unless-stopped
    depends_on: [postgres]
    volumes:
      - ./config:/etc/headscale
      - ./data:/var/lib/headscale
    ports:
      - "127.0.0.1:8080:8080"

  caddy:
    image: caddy:2
    restart: unless-stopped
    ports: ["80:80", "443:443"]
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile
      - ./caddy-data:/data

secrets:
  pg_pass:
    file: ./secrets/pg_pass.txt

Caddyfile minimal :

headscale.tondomaine.com {
  reverse_proxy 127.0.0.1:8080
}

docker compose up -d et Let's Encrypt s'occupe du cert TLS en 30 secondes. Headscale config (config.yaml) : pointer database.type: postgres + server_url: https://headscale.tondomaine.com. Total : 15 min de setup actif.

Étape 3 - Connecter 5 clients

# Sur le serveur Headscale
headscale users create eric
headscale preauthkeys create --user eric --reusable --expiration 24h
# → tskey-auth-xxxxx

# Sur chaque client (MacBook, 2 Linux Debian, iOS, Android)
sudo tailscale up \
  --login-server=https://headscale.tondomaine.com \
  --authkey=tskey-auth-xxxxx

iOS et Android requièrent d'éditer Settings → Tailscale → Custom Coordinator URL dans l'app officielle (option visible depuis 1.40). Connecter une poignée de clients ne prend que quelques minutes.

Étape 4 - À quoi s'attendre côté perf

Pour comparer toi-même, lance iperf3 entre un client et le VPS Contabo Frankfurt. Le tableau ci-dessous indique ce à quoi s'attendre de façon directionnelle - mesure ta propre route pour des chiffres exacts :

MétriqueTailscale public DERPHeadscale + DERP custom Contabo
Throughput tunnel direct~débit ligne WireGuard~débit ligne WireGuard (identique)
Throughput relay DERPlimité par la position du relaismeilleur avec un DERP local
RTT tunnel directidentique (WireGuard)identique (WireGuard)
RTT relaydépend de la distance du relaisplus bas avec un DERP local
CPU VPS au reposn/aquelques % (Headscale + Postgres + Caddy)
RAM VPS utiliséen/aquelques centaines de Mo / 8 Go

Sur tunnel direct (le cas nominal pour 90 %+ des paquets en pratique), aucune différence - c'est WireGuard des deux côtés. La différence apparaît uniquement sur le relay DERP : héberger ton propre DERP sur Contabo Frankfurt évite un long détour et donne un RTT plus bas et un débit plus élevé qu'un DERP public lointain qui peut être saturé aux heures de pointe.

Cas d'usage - qui devrait choisir quoi

Choisir Tailscale (managé)

  • Solo / projets perso 1-100 devices → Tailscale Free. 0 € et l'UX est imbattable.
  • Startup early-stage <5 users → Tailscale Free aussi. Concentre ton temps sur le produit.
  • Scaleup 20-100 users, compliance B2B SaaS US-friendly → Tailscale Premium. Audit logs, SAML, support pro - c'est leur sweet spot.
  • Pas de sysadmin en interne → Tailscale, sans débat.

Choisir Headscale (self-host)

  • Compliance UE / RGPD / souveraineté secteur public → Headscale. Le control plane vit dans ta juridiction.
  • Équipe avec un sysadmin compétent et temps disponible → Headscale rentabilise vite (break-even <6 mois à 7+ users).
  • Production avec contraintes data residency strictes (santé, fintech UE, défense) → Headscale obligatoire en pratique.
  • Volonté de comprendre et maîtriser ta stack VPN → Headscale t'apprend des choses, Tailscale les cache.

Choisir WireGuard nu (rappel)

Si tu hésites encore avec un troisième scénario (WireGuard hub-and-spoke sans control plane), notre comparatif Tailscale vs WireGuard self-host tranche cette branche-là. Headscale arbitre uniquement avec Tailscale.

Limitations Headscale qu'il faut connaître

Honnêteté avant tout - Headscale est solide, mais voici les angles morts réels en production :

  1. Feature lag vs Tailscale. Les nouvelles features Tailscale (Tailscale Funnel, Tailscale Serve, session recording SSH) arrivent dans Headscale avec 3-9 mois de délai, et certaines ne viendront jamais (les features Premium intrinsèquement SaaS).
  2. Flexibilité ACL. Le format JSON ACL Tailscale est compatible, mais le linting Headscale est moins verbeux : une typo dans un tag peut casser silencieusement. Workflow recommandé : headscale acl tests en CI avant push.
  3. Pas de MagicDNS automatique pour les PoC rapides. Côté SaaS Tailscale, MagicDNS marche en deux clics. Côté Headscale, il faut configurer la zone DNS côté serveur - soit dnsmasq, soit zone CoreDNS dédiée. Pas insurmontable, mais ce n'est pas magique.
  4. Pas de bug bounty officiel. Si tu trouves une CVE, c'est GitHub issues, pas un programme de responsible disclosure rémunéré.
  5. Headscale-ui tiers. La console web communautaire fonctionne mais n'est pas au niveau du dashboard Tailscale en UX. Pour 80 % des opérations courantes, CLI suffit.

TCO comparatif sur 3 ans

Scénario médian : 10 users actifs, 30 nœuds, croissance modérée. Hypothèses : sysadmin à 50 €/h (junior-mid level UE), Tailscale Premium 18 $/user/mois (tarif juin 2026), Contabo Cloud VPS 10 Frankfurt 5,50 €/mois + reset hardware une fois (~30 €).

PosteTailscale PremiumHeadscale + Contabo
Licences SaaS 36 mois6 480 $ (~6 000 €)0 €
Infra VPS 36 mois0 €198 €
Setup initial5 min (~5 €)12 h (~600 €)
Maintenance ongoing~0 h/mois1,5 h/mois × 36 = 54 h (~2 700 €)
Backups + monitoring0 €8 h setup (~400 €) + ~5 €/mois VPS backup
Incidents (estimation 2 incidents/an × 4h)0 €24 h sur 36 mois (~1 200 €)
Total 36 mois~6 005 €~5 280 €

À 10 users / 30 nœuds, Headscale est ~12 % moins cher en TCO sur 36 mois. À 5 users, Tailscale Premium repasse devant (~3 240 $ vs ~5 000 € Headscale - le coût fixe sysadmin écrase le gain SaaS). À 20+ users, Headscale écrase tout : Tailscale Premium passe à 12 960 $/36m, Headscale stagne à ~5 280 €.

Le sweet spot Headscale économique : 8-15 users. En dessous, Tailscale Free ou Premium dominent. Au-dessus, Headscale gagne par KO.

Verdict segmenté

ProfilRecommandation
Solo, side projectsTailscale Free
Startup <5 usersTailscale Free
Petite team 5-7 users sans sysadminTailscale Premium
Équipe 8-15 users avec 1 sysadminHeadscale self-host (break-even <6 mois)
Org 15+ users souveraineté UEHeadscale self-host obligatoire
Compliance santé/fintech UE/défenseHeadscale self-host obligatoire
Apprentissage approfondi mesh VPNHeadscale (tu apprends 10x plus que Tailscale)
B2B SaaS US-first scaleupTailscale Premium (focus produit, achète du temps)

Le pire choix : Headscale sans sysadmin dédié. Tu vas finir avec un control plane mal patché un mardi soir.

Pour aller plus loin

Sources :


Article publié le 2026-06-07. Les notes de performance s'appuient sur le fonctionnement conçu de Tailscale et Headscale (les deux utilisent WireGuard comme data plane) ; mesure ta propre route pour des chiffres exacts. Tarifs Tailscale relevés sur tailscale.com/pricing en juin 2026 - vérifier avant décision. Les économies réelles dépendent de la taille d'équipe, du coût horaire sysadmin et des contraintes compliance.

Rappel : WireGuard, Tailscale et Headscale sont parfaitement légaux dans l'UE, aux US, au Canada et dans la plupart des pays démocratiques. VPNSmith publie ce contenu à titre éducatif.

★ Datacenter Nuremberg GDPR · ✓ IPv4 dédiée incluse · 200+ Mbps garantis

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

Questions fréquentes

Headscale est-il vraiment compatible avec les clients officiels Tailscale ?
Oui - Headscale réimplémente l'API du control plane Tailscale, donc les clients officiels iOS, macOS, Linux, Windows et Android peuvent pointer vers ton instance Headscale en surchargeant l'URL du login server (`tailscale login --login-server=https://headscale.tondomaine.com`). Pas de fork client, pas de binaire patché. Tailscale Inc. ne soutient pas officiellement Headscale mais tolère son existence depuis 2022.
Quelle est la vraie différence de latence entre Tailscale DERP et Headscale auto-hébergé ?
Sur les tunnels directs il n'y a aucune différence - le data plane est WireGuard dans les deux cas, donc le RTT est identique. La différence apparaît uniquement en relay fallback : un DERP custom hébergé sur ton propre VPS Contabo prend une route plus directe qu'un DERP public lointain et gagne quelques millisecondes de RTT. Mesure ta propre route avec `ping` pour des chiffres exacts.
Headscale supporte-t-il MagicDNS, ACLs et exit nodes comme Tailscale ?
ACLs JSON : oui, format Tailscale 100% compatible depuis v0.22. Exit nodes : oui, sans limite (vs 1 inclus chez Tailscale Free). MagicDNS : supporté depuis v0.23 mais la résolution `nom-machine.ts.net` doit être configurée manuellement côté serveur DNS - il n'y a pas de magic auto-config comme côté SaaS. Taildrop (partage fichiers) : oui. Tailscale SSH avec session recording : non, c'est une feature Premium qui reste côté SaaS Tailscale.
Quel TCO sur 3 ans Tailscale Premium vs Headscale + Contabo ?
Pour 10 users / 30 nœuds : Tailscale Premium = 18 $/user/mois × 10 × 36 = 6 480 $. Headscale + Contabo Cloud VPS 10 Frankfurt = 5,50 €/mois × 36 = 198 € + setup 12h (~600 €) + maintenance 1,5h/mois × 36 = 54h (~2 700 €) = ~3 500 €. Break-even à environ 7 users si le sysadmin est à 50 €/h, à 4 users si à 100 €/h.
Quelles sont les limitations de Headscale qu'on ne lit pas sur GitHub ?
Trois pièges réels en production : 1) pas de console web officielle (il faut headscale-ui tiers, qui est en cours de stabilisation) ; 2) les ACL templates Tailscale (groupes, tags) marchent, mais le linting côté serveur est moins verbeux - un fichier ACL invalide casse silencieusement ; 3) pas de support OIDC standard out-of-the-box sur tous les providers (Authentik et Keycloak marchent bien, Auth0 demande du tuning). Pour le reste, c'est solide.