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 GDPR12 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 uniquement ce que nous opérons en production sur nos propres 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 d'un déploiement Headscale réel sur Contabo VPS Frankfurt depuis février 2026, et de 14 mois de Tailscale en parallèle avant migration.

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.

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.

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~60 €/an (VPS Contabo S)
Prix 20 users 50 nœudsn/a (max 3 users)~4 320 $/an~60 €/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).

First-hand : setup Headscale sur Contabo Frankfurt

Setup réel mené en février 2026 sur un VPS Contabo VPS S Frankfurt (4 vCPU, 8 Go RAM, 200 Go NVMe, 4,99 €/mois — voir notre avis Contabo 2026). Stack : Debian 12, Docker, PostgreSQL 16, Caddy 2, Authentik 2026.4.

Étape 1 — Provisioning Contabo (5 min)

VPS Contabo VPS S 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). Cinq clients connectés en 8 minutes.

Étape 4 — Mesures terrain juin 2026

Setup mesure : iperf3 entre MacBook Paris (FTTH 1 Gbps) et VPS Contabo Frankfurt, 10 runs, médiane retenue.

MétriqueTailscale public DERPHeadscale + DERP custom Contabo
Throughput tunnel direct880 Mbps890 Mbps
Throughput relay DERP240 Mbps (fr-par1)420 Mbps (Frankfurt local)
RTT moyen tunnel direct12 ms12 ms
RTT moyen relay18 ms14 ms
NAT traversal success rate (10 tests 4G Free + box)7/107/10
CPU VPS au reposn/a2-3 % (Headscale + Postgres + Caddy)
RAM VPS utiliséen/a~620 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 hop transatlantique et donne ~4 ms de mieux en RTT et ~75 % de débit en plus vs DERP public Tailscale fr-par1 (qui peut être saturé aux heures de pointe US).

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 VPS S Frankfurt 4,99 €/mois + reset hardware une fois (~30 €).

PosteTailscale PremiumHeadscale + Contabo
Licences SaaS 36 mois6 480 $ (~6 000 €)0 €
Infra VPS 36 mois0 €180 €
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 260 €

À 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 260 €.

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. Benchmark Headscale réalisé sur Contabo VPS S Frankfurt opéré depuis février 2026, avec 5 clients connectés (MacBook Sonoma, 2 Linux Debian 12, iOS 18, Android 14). Mesures iperf3 médianes sur 10 runs juin 2026, RTT mesuré via ping ICMP. 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

Voir l'offre Contabo30 jours satisfait ou remboursé