La mascotte ours polaire de NordBastion, debout dans une sombre salle de pierre nordique, une patte posée sur un obélisque-clé de voûte gravé de runes, un anneau holographique cyan de clés flottant au-dessus de lui, et cinq glyphes d'appareils lumineux — ordinateur portable, téléphone, tablette, tour de serveur et globe — reliés directement les uns aux autres dans un maillage cyan éclatant au-dessus de sa tête, tandis que de fines lignes de clés en pointillés tombent de l'anneau vers chaque appareil, avec une baie de serveurs et une fenêtre en arc éclairée d'aurores boréales derrière lui
Tutoriel · Réseau privé·19 min de lecture · 50 min de pratique

Votre propre serveur de contrôle.
La carte est la chose qui mérite d'être détenue.

Un VPN maillé a besoin de quelqu'un pour distribuer les clés. Avec Tailscale, ce quelqu'un est une entreprise ; avec WireGuard nu, c'est vous, à la main, pour toujours. Headscale est la troisième réponse : le même client open source, qui parle à un serveur de coordination sur une machine que vous louez anonymement. Six étapes vers un tailnet dont la carte des appareils, les règles d'accès et les relais de repli vous appartiennent entièrement — Headscale derrière Caddy, des ACL écrites noir sur blanc, MagicDNS pointé vers votre propre résolveur, un routeur de sous-réseau, un nœud de sortie et un DERP intégré. La machine coûte $3.90 par mois. Testé sur Debian 12.

Les six étapes
  1. 01

    Choisir

    WireGuard, Tailscale ou Headscale

  2. 02

    Provisionner

    Trois noms fixés avant le démarrage

  3. 03

    Déployer

    Headscale, Caddy, une seule configuration

  4. 04

    Enrôler

    Utilisateurs, clés de pré-authentification, clients

  5. 05

    Router

    Sous-réseaux, nœud de sortie, ACL

  6. 06

    Conserver

    DERP, sauvegardes, mises à jour

Avant de commencer · Ce qu'est un plan de contrôle

Personne ne peut lire le trafic. Quelqu'un détient quand même la carte.

WireGuard est délibérément incomplet. C'est un tunnel petit, rapide et auditable entre deux clés publiques, et il n'a aucun avis sur la façon dont ces clés se trouvent l'une l'autre. C'est cette omission qui explique pourquoi le protocole est aussi bon qu'il l'est — et c'est aussi pourquoi un réseau WireGuard de quinze appareils devient un tableur. Chaque pair a besoin de la clé publique et de l'adresse actuelle de tous les autres pairs, et chaque ordinateur portable qui se déplace entre un bureau, un train et un hôtel invalide une partie de ce tableur.

Un VPN maillé est la réponse à ce problème précis, et sa forme mérite d'être énoncée avec exactitude, car c'est elle qui détermine ce à quoi vous accordez votre confiance. Le plan de données reste exactement ce qu'il était : chaque appareil génère localement sa propre paire de clés, garde la moitié privée, et chiffre directement vers ses pairs. Par-dessus s'installe un plan de contrôle — un petit service qui collecte les clés publiques et les points de terminaison, remet à chaque appareil la liste des pairs qu'il est autorisé à joindre, et aide deux appareils derrière des routeurs hostiles à se trouver. Ce service ne détient jamais de clé privée et ne voit jamais le moindre octet en clair.

Ce qu'il détient bel et bien, c'est la carte, et cette carte est plus intéressante que ce que la plupart des gens supposent. Chaque nom d'appareil et chaque nom d'utilisateur. Chaque clé publique. L'adresse publique depuis laquelle chaque appareil se connecte à cet instant, ce qui constitue un relevé en temps réel de l'endroit où se trouvent physiquement votre ordinateur portable et votre téléphone. Les horaires de connexion et de déconnexion de chaque appareil, ce qui décrit votre journée. Et la politique qui décide qui peut joindre quoi, ce qui décrit votre organisation. Rien de tout cela n'exige de mauvaise foi de la part de qui que ce soit ; c'est simplement à cela que sert un serveur de coordination.

Il existe une propriété supplémentaire qui compte plus que les métadonnées. Le plan de contrôle est ce qui distribue les clés, c'est donc aussi ce qui pourrait en ajouter une. Un serveur de contrôle compromis, ou contraint, peut dire à vos appareils qu'une nouvelle machine est un membre légitime du réseau — et vos appareils, en faisant exactement ce pour quoi ils ont été conçus, chiffreront vers elle. Tailscale prend cela suffisamment au sérieux pour avoir construit une fonctionnalité de signature contre ce risque. L'auto-hébergement résout le même problème depuis l'autre direction : la partie qui pourrait le faire, c'est vous. Quatre configurations, et ce que chacune révèle réellement :

Propriété WireGuard manuel Tailscale, hébergé Headscale sur votre VPS Headscale + votre propre DERP
Qui peut lire la charge utilePersonne à part les pairsPersonne à part les pairsPersonne à part les pairsPersonne à part les pairs
Qui détient la carte des appareilsVous, dans un fichier texteUne entreprise, dans sa juridictionVous, sur votre VPSVous, sur votre VPS
Qui voit d'où les appareils se connectentSeuls les pairs eux-mêmesLe serveur de coordination, en continuVotre serveur, en continuVotre serveur, en continu
Qui relaie quand une liaison directe échouePersonne — la liaison échoue tout simplementLa flotte de relais du fournisseurToujours les relais du fournisseur, par défautVotre relais, dans votre datacentre
Ajouter le vingtième appareilDix-neuf modifications de configurationUne seule commandeUne seule commandeUne seule commande
À choisir quandPeu d'appareils, aucun en itinéranceVous voulez zéro opération et acceptez la carteVous voulez la carte et pouvez faire tourner une petite machineVous voulez la carte, et le chemin de repli aussi

La première colonne n'est pas un homme de paille. Pour une poignée statique de serveurs, un WireGuard écrit à la main est réellement la meilleure réponse en matière d'ingénierie, et c'est un service de moins à corriger. Ce guide porte sur le moment où le tableur cesse d'être drôle.

Étape 01 · Choisir

Avez-vous besoin d'un plan de contrôle ? Comptez les appareils qui se déplacent.

Il existe trois réponses honnêtes à « je veux que mes machines se joignent entre elles en privé », et une seule d'entre elles est ce guide. WireGuard nu est la plus petite : un module noyau, un fichier de configuration par pair, aucun démon au-delà de l'interface, rien à maintenir à jour sinon le système d'exploitation. Si vos appareils sont des serveurs à adresses fixes que vous pouvez compter sur les doigts d'une main, arrêtez-vous ici et lisez plutôt le guide WireGuard. Vous finirez avec moins de logiciel et une liste plus courte de choses qui peuvent casser.

Tailscale est la plus vaste : le même WireGuard en dessous, plus un service de coordination, une traversée NAT qui fonctionne depuis presque n'importe quel réseau, une flotte de relais sur plusieurs continents, une console web, une authentification unique et un contrat de support. C'est un logiciel réellement excellent, et le niveau gratuit couvre confortablement un foyer. Le prix n'est pas en argent — c'est que la carte de chaque appareil que vous possédez, et l'historique des lieux de connexion de chacun, vivent dans la base de données d'une entreprise.

Headscale est la troisième réponse, et elle est plus étroite que les deux autres : une réimplémentation open source du serveur de coordination, gérée par vous, à qui parle le même client officiel. Vous gardez l'automatisation et la traversée NAT ; vous héritez d'un petit service à faire tourner, d'un jeu de fonctionnalités partiel, et de mises à jour qu'il faut lire avant d'appliquer. Personne ne devrait prétendre que c'est gratuit. Cela achète exactement une chose, celle qui compte pour ce site : personne d'autre ne détient la carte.

Le seuil des cinq appareils

La configuration manuelle de WireGuard croît comme le carré du parc : quatre pairs, c'est six liens ; dix pairs, c'est quarante-cinq ; vingt pairs, c'est cent quatre-vingt-dix. Ajoutez un ordinateur portable itinérant, dont le point de terminaison change à chaque réseau qu'il rejoint, et la maintenance cesse d'être occasionnelle. En pratique, le point de bascule se situe autour de cinq appareils, ou au premier appareil qui se déplace quotidiennement, ou à la première règle d'accès que vous ne pouvez pas exprimer comme « tout le monde peut tout joindre ».

Encore une chose à décider maintenant plutôt que plus tard, car cela change ce que vous installez : ce réseau est-il seulement pour vous, ou d'autres personnes vont-elles le rejoindre ? Un tailnet pour une seule personne peut rester grand ouvert en interne sans que rien de fâcheux n'arrive. Un tailnet avec un collègue, un prestataire ou un membre de la famille dessus a besoin de règles d'accès écrites dès la première semaine — étape 05 — et il a besoin d'utilisateurs séparés plutôt que d'une connexion partagée par tous. Décider cela en amont coûte un paragraphe ; le corriger après coup coûte un après-midi.

Étape 02 · Provisionner

Trois noms, décidés avant le premier démarrage. Tous les trois sont difficiles à changer.

Commandez d'abord la machine. Dans le panneau : Order → VPS → Sentinel, image Debian 12, dans le bastion où vous voulez que la carte réside — Helsinki, Stockholm, Oslo ou Reykjavík. Aucune adresse e-mail n'est requise pour ouvrir le compte, et la facture se règle en Monero, Bitcoin, Lightning ou tout autre actif pris en charge. Choisissez le bastion le plus proche de la majorité de vos appareils si vous comptez aussi faire tourner le relais de l'étape 06 ; la latence vers un relais est une latence sur chaque connexion qu'il porte.

Exécutez ensuite la checklist de durcissement de la première heure — SSH par clé uniquement sur un port déplacé, mises à jour automatiques, pare-feu qui refuse tout par défaut. Tout ce qui suit suppose une machine qui n'est pas déjà celle de quelqu'un d'autre, et celle-ci en vaut plus que la plupart : c'est la machine qui décide quelles clés sont dignes de confiance sur chacun de vos appareils.

Décidez ces trois éléments avant que quoi que ce soit ne s'enregistre

Chaque appareil grave ces trois éléments dans son état dès qu'il rejoint le réseau, si bien qu'en changer un ensuite signifie réenrôler le parc à la main. Un : l'URL du serveur de contrôle — l'adresse HTTPS publique exacte que chaque client appellera, schéma et nom d'hôte compris. Deux : le suffixe DNS du tailnet, le domaine pour lequel MagicDNS répondra en interne ; il doit être un domaine que vous contrôlez, et il ne doit être ni le parent ni l'enfant du nom d'hôte du serveur de contrôle lui-même, ce qui est la cause d'échec au premier démarrage la plus fréquente. Trois : les plages d'adresses que le tailnet distribue, conventionnellement le bloc NAT opérateur 100.64.0.0/10 pour l'IPv4 et un /48 unique-local pour l'IPv6 ; laissez les valeurs par défaut, sauf si elles entrent déjà en collision avec un réseau que vous utilisez.

Un exemple concret, et la forme à reproduire : le serveur de contrôle répond sur vpn.example.com, le suffixe du tailnet est ts.example.com, et les plages d'adresses restent à leurs valeurs par défaut. Remarquez que le suffixe est un frère du nom d'hôte de contrôle plutôt que son parent — vpn.example.com et ts.example.com partagent un domaine enregistrable, mais ni l'un ni l'autre ne contient l'autre. Pointez un enregistrement A — et un AAAA si vous voulez le rendre joignable en IPv6 — vers la machine, et laissez-le se propager avant de commencer, car le reverse proxy tentera d'obtenir un certificat pour ce nom dès son premier démarrage.

Rédigez ensuite les règles de pare-feu pendant que rien n'écoute encore. Le serveur de contrôle est par nécessité un point de terminaison HTTPS public : chaque appareil, sur chaque réseau, doit pouvoir le joindre. Le port UDP n'est nécessaire que si vous comptez faire tourner votre propre relais à l'étape 06, et il est plus simple de l'ouvrir maintenant que de déboguer son absence plus tard.

ufw default deny incoming
ufw allow 47222/tcp                  # administrative SSH, moved
ufw allow 80/tcp                     # ACME HTTP-01 challenge
ufw allow 443/tcp                    # the control server, and DERP over HTTPS
ufw allow 3478/udp                   # STUN, only if you run your own relay
ufw enable
ufw status numbered

Installez Docker depuis le dépôt officiel plutôt que le paquet de la distribution, afin que Compose v2 soit présent et à jour. Créez ensuite les deux répertoires qui contiendront tout ce qui mérite d'être sauvegardé — un pour la configuration, un pour l'état — et résistez à l'envie d'y mettre quoi que ce soit d'autre.

curl -fsSL https://get.docker.com | sh
docker compose version

install -d -m 0750 /srv/headscale/config
install -d -m 0750 /srv/headscale/data
cd /srv/headscale
Étape 03 · Déployer

Deux conteneurs et un fichier. Figez toujours la version.

Headscale et Caddy, et rien d'autre. Headscale écoute en HTTP nu à l'intérieur du réseau Docker ; Caddy termine le TLS, obtient le certificat au premier démarrage et le renouvelle sans qu'on le lui demande. L'écouteur de métriques reste sur localhost, car c'est une surface de débogage interne, pas une surface publique.

Une règle avant le fichier : figez l'image sur une version exacte. Headscale est un logiciel pré-1.0 qui a renommé ses clés de configuration et ses sous-commandes CLI au fil des versions mineures, plus d'une fois. Un tag flottant transforme un redémarrage de conteneur de routine en panne sur un service dont le rôle est justement de vous permettre de joindre tout le reste.

/srv/headscale/docker-compose.yml

services:
  headscale:
    image: docker.io/headscale/headscale:0.26            # pin it; never :latest
    container_name: headscale
    command: serve
    volumes:
      - ./config:/etc/headscale
      - ./data:/var/lib/headscale
    ports:
      - "3478:3478/udp"                                  # STUN, for your own DERP
    restart: unless-stopped

  caddy:
    image: caddy:2-alpine
    container_name: caddy
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile:ro
      - caddy_data:/data
    restart: unless-stopped

volumes:
  caddy_data:

/srv/headscale/Caddyfile

vpn.example.com {
    reverse_proxy headscale:8080
}

C'est là toute la configuration du proxy. Caddy parle HTTP/2 et fait passer les connexions longue durée à un niveau supérieur sans qu'on le lui demande, ce qui compte ici puisque chaque client en garde une ouverte pour recevoir les mises à jour de carte. Prenez le fichier de configuration d'exemple fourni avec la version que vous avez figée, et modifiez-le plutôt que d'en écrire un depuis zéro — le fichier est long, l'essentiel n'est que des valeurs par défaut sensées, et les clés qui comptent sont celles-ci :

/srv/headscale/config/config.yaml — the lines that matter

server_url: https://vpn.example.com          # exactly what clients will dial
listen_addr: 0.0.0.0:8080                    # inside the Docker network only
metrics_listen_addr: 127.0.0.1:9090          # debug surface, keep it local

prefixes:
  v4: 100.64.0.0/10
  v6: fd7a:115c:a1e0::/48

noise:
  private_key_path: /var/lib/headscale/noise_private.key

database:
  type: sqlite                               # postgres for a large fleet
  sqlite:
    path: /var/lib/headscale/db.sqlite

dns:
  magic_dns: true
  base_domain: ts.example.com                # NOT a parent or child of server_url
  nameservers:
    global:
      - 1.1.1.1                              # replaced by your own in step 05

Démarrez-le, puis lisez le journal plutôt que de supposer. Un premier démarrage qui ne parvient pas à obtenir un certificat, ou qui rejette le suffixe DNS parce qu'il chevauche le nom d'hôte du serveur, le dit clairement, puis s'arrête.

docker compose up -d
docker compose logs -f headscale

# From your laptop — a control server that is up answers this:
curl -s https://vpn.example.com/health

Le premier démarrage génère le matériel de clé privée dans /srv/headscale/data. Copiez-le en lieu sûr dès maintenant, avant qu'un seul appareil ne s'enregistre, puis à nouveau après le premier enrôlement : perdre cette clé signifie que chaque appareil rejette le serveur auquel il faisait confiance, et la seule réparation possible est de tous les réenrôler à la main. L'étape 06 transforme cette copie en une véritable sauvegarde.

Étape 04 · Enrôler

Un utilisateur, une clé, un client. Vérifiez ensuite si la connexion est passée en direct.

La commande headscale vit à l'intérieur du conteneur, si bien que chaque action d'administration est un docker exec. Créez d'abord un utilisateur — un utilisateur est un propriétaire d'appareils et l'unité à laquelle se réfèrent les règles d'accès, donnez-lui donc le nom d'une personne ou d'un rôle plutôt que celui d'une machine.

hs() { docker exec -it headscale headscale "$@"; }

hs users create alice
hs users list                      # note the numeric id — newer releases want it

# A single-use key that expires in an hour is the right default.
hs preauthkeys create --user 1 --expiration 1h

Démarrez ensuite le client officiel sur l'appareil, en le pointant vers votre serveur plutôt que celui par défaut. C'est une option prise en charge, pas une bidouille — le client est open source, et le serveur de connexion est un simple paramètre.

# On the device (Debian/Ubuntu shown; every platform has an equivalent):
curl -fsSL https://tailscale.com/install.sh | sh

sudo tailscale up \
  --login-server https://vpn.example.com \
  --auth-key <the-key-you-just-created>

tailscale status
tailscale ip -4

Sans clé de pré-authentification, le client affiche plutôt une URL ; la visiter montre une commande d'enregistrement à exécuter sur le serveur, ce qui constitue le parcours interactif, pratique pour un appareil devant lequel vous êtes assis. Dans tous les cas, faites le second appareil avant de célébrer — un maillage à un seul appareil ne prouve rien. Pinguez-le par son adresse de tailnet, puis lisez attentivement le résultat du status :

hs nodes list

# On a client, the word after the peer name is the one that matters:
tailscale status
#   100.64.0.2  laptop  alice  linux  active; direct 203.0.113.9:41641
#                                              ^^^^^^ direct, not relay

tailscale netcheck                 # why it chose what it chose

direct signifie que les deux appareils se sont trouvés et que le trafic est pair-à-pair. relay signifie qu'il transite par un serveur DERP, ce qui fonctionne mais ajoute de la latence et place une troisième machine sur le chemin — et par défaut, cette machine n'est pas la vôtre. L'étape 06 consiste à décider laquelle des deux ce sera.

Téléphones, tablettes et le détour Apple

Sur ordinateur, une option en ligne de commande suffit. Android expose le serveur personnalisé dans l'application, derrière le numéro de version dans son écran de paramètres. Les plateformes Apple n'ont aucun champ dans l'application : vous installez un petit profil de configuration qui définit l'URL du serveur de contrôle avant de vous connecter, une opération fastidieuse une fois, mais permanente ensuite. Deux choses font gagner du temps. Consultez la page par client de la documentation Headscale plutôt que de deviner, car le parcours Apple a changé plus d'une fois. Et déconnectez d'abord l'application du service Tailscale lui-même — une application qui y détient déjà une session refusera souvent un autre serveur tant qu'elle n'aura pas été déconnectée, voire réinstallée.

Deux habitudes à adopter immédiatement. Utilisez des clés de pré-authentification à usage unique et de courte durée pour les personnes, et des clés réutilisables ou éphémères seulement pour l'automatisation qui en a réellement besoin — une clé éphémère enregistre un appareil qui se retire lui-même quand il passe hors ligne, ce qui est exactement ce qu'il faut pour un runner CI et exactement ce qu'il ne faut pas pour un ordinateur portable. Et décidez dès maintenant votre position sur l'expiration des clés : un appareil enregistré porte une date d'expiration, et un appareil dont la clé a expiré cesse d'être joignable jusqu'à ce que quelqu'un le réauthentifie. C'est une fonctionnalité de sécurité sur un ordinateur portable, et un générateur de panne sur un serveur headless à trois heures du matin. Vérifiez comment votre version gère l'expiration — les sous-commandes ont bougé — et réglez-la délibérément appareil par appareil plutôt que de découvrir la valeur par défaut à vos dépens.

Étape 05 · Router

Annoncé n'est pas approuvé. Deux commandes, deux machines.

Un tailnet où chaque appareil peut joindre tous les autres est déjà utile. Trois ajouts en font un véritable réseau plutôt qu'un simple jeu de tunnels, et tous trois partagent un même piège : le client annonce une capacité, et le serveur doit l'approuver. Une route annoncée mais non approuvée n'existe tout simplement pas, silencieusement, et le symptôme est que vous pouvez pinguer le routeur mais rien derrière lui.

Un routeur de sous-réseau — placez tout un réseau local sur le tailnet. Une machine du réseau domestique ou de bureau annonce la plage du réseau ; tous les autres appareils peuvent alors joindre les imprimantes, le NAS et les interfaces d'administration qui se trouvent derrière elle, sans rien avoir à installer là-bas. Activez d'abord le forwarding dans le noyau, sinon les paquets s'arrêtent au routeur sans le moindre message d'erreur.

# On the machine that sits inside the LAN:
echo 'net.ipv4.ip_forward = 1'          | sudo tee /etc/sysctl.d/99-ts.conf
echo 'net.ipv6.conf.all.forwarding = 1' | sudo tee -a /etc/sysctl.d/99-ts.conf
sudo sysctl -p /etc/sysctl.d/99-ts.conf

sudo tailscale up --login-server https://vpn.example.com \
  --advertise-routes=192.168.1.0/24 --accept-routes

# On the control server — approve it, or it does not exist.
# The subcommand moved between releases; check `hs nodes --help` first.
hs nodes list
hs nodes approve-routes --identifier 3 --routes 192.168.1.0/24

Un nœud de sortie — faites sortir tout le trafic par le VPS. Le même mécanisme avec une route plus large : un appareil qui s'annonce comme nœud de sortie propose de porter toute la connexion internet d'un autre appareil. Sur un réseau de café ou d'hôtel non fiable, c'est exactement ce qu'il vous faut, et c'est ce qui, dans ce guide, se rapproche le plus d'un VPN personnel.

# On the VPS that will do the exiting (forwarding must be on, as above):
sudo tailscale up --login-server https://vpn.example.com --advertise-exit-node

# Approve it on the control server, then on the laptop:
tailscale set --exit-node=100.64.0.1 --exit-node-allow-lan-access
tailscale set --exit-node=                    # turn it off again

Un nœud de sortie n'est pas un VPN commercial et ne doit pas se vendre comme tel, même à vous-même. Son adresse est à vous seul et elle est stable, ce qui est excellent contre le Wi-Fi d'un café et inutile contre une corrélation à long terme entre plusieurs sites — le compromis est détaillé dans le guide pilier. Notez aussi que vous pouvez faire tourner le nœud de sortie sur un second VPS, moins cher, et garder le serveur de contrôle entièrement libre de tout trafic relayé.

Règles d'accès — rédigez-les avant qu'une deuxième personne ne rejoigne le réseau. La politique par défaut autorise tout, ce qui est correct pour un tailnet d'une seule personne et faux dès qu'une autre personne s'y trouve. La politique est un petit document HuJSON : des groupes d'utilisateurs, des tags pour les machines, et une liste de règles qui disent quelles sources peuvent joindre quelles destinations sur quels ports. Pointez la configuration vers le fichier, gardez le fichier sous contrôle de version, et rechargez après chaque modification.

{
  "groups": {
    "group:admin":     ["alice"],
    "group:contractor":["bob"]
  },
  "tagOwners": {
    "tag:server": ["group:admin"],
    "tag:exit":   ["group:admin"]
  },
  "acls": [
    // Admins reach everything.
    { "action": "accept", "src": ["group:admin"], "dst": ["*:*"] },

    // The contractor reaches one machine, on two ports, and nothing else.
    { "action": "accept", "src": ["group:contractor"],
      "dst": ["tag:server:22,443"] }
  ],
  "autoApprovers": {
    "routes":   { "192.168.1.0/24": ["tag:server"] },
    "exitNode": ["tag:exit"]
  }
}

Deux remarques sur ce fichier. Le langage de politique est celui de Tailscale, et Headscale en implémente un sous-ensemble large et croissant plutôt que la totalité — consultez la documentation de votre version avant de compter sur une règle exotique. Et l'endroit où vit la politique a changé : les anciennes versions nommaient un chemin dans la configuration de premier niveau, les plus récentes la regroupent sous une section de politique avec un mode qui peut aussi garder les règles en base de données. Les deux sont documentés ; celui qui compte est celui que fournit la version que vous avez figée.

MagicDNS — des noms courts, et votre propre résolveur partout. Une fois MagicDNS activé, chaque appareil répond à un nom court à l'intérieur du suffixe que vous avez choisi à l'étape 02, si bien que ssh nas fonctionne depuis n'importe où sans fichier hosts. La seconde moitié est la plus intéressante : le serveur de contrôle pousse aussi une liste de serveurs de noms à chaque client, ce qui signifie que le résolveur que vous avez construit dans le guide du résolveur DNS privé peut servir votre téléphone en données mobiles — en filtrant, en mettant en cache et en ne journalisant rien — tout en écoutant sur une adresse du tailnet qui n'est absolument pas joignable depuis internet.

dns:
  magic_dns: true
  base_domain: ts.example.com
  override_local_dns: true          # beat whatever DHCP handed the device
  nameservers:
    global:
      - 100.64.0.5                  # your resolver, on the tailnet
Étape 06 · Conserver

Votre propre relais, votre propre sauvegarde. Et des mises à jour lues avant d'être appliquées.

Le relais que vous utilisiez sans le savoir. Quand deux appareils ne peuvent pas ouvrir de connexion directe — NAT symétrique aux deux bouts, pare-feu qui avale l'UDP, opérateur mobile qui fait quelque chose de créatif — le trafic se replie sur un relais DERP. Il reste chiffré de bout en bout, si bien que le relais transporte du texte chiffré. Ce que le relais voit, c'est qui parle à qui, combien, et quand. Par défaut, Headscale remet à vos clients la carte de relais publique, et ces relais sont exploités par l'entreprise que vous cherchiez justement à quitter. Headscale embarque un relais intégré ; l'activer place ce repli dans le même datacentre nordique que tout le reste.

derp:
  server:
    enabled: true
    region_id: 999                  # custom regions live in the 900s
    region_code: "nb-hel"
    region_name: "Helsinki (self-hosted)"
    stun_listen_addr: "0.0.0.0:3478"
  urls:
    - https://controlplane.tailscale.com/derpmap/default   # remove for yours only
  auto_update_enabled: true
  update_frequency: 24h

Laisser la carte publique aux côtés de votre propre relais est le choix pragmatique par défaut : les clients préfèrent le relais le plus proche, si bien qu'un appareil situé dans le même hémisphère utilise le vôtre, tandis qu'un appareil à l'autre bout du monde n'est pas coincé derrière un unique saut nordique. Retirer l'URL publique rend le tailnet strictement autonome, au prix d'un repli moins bon pour les appareils lointains. Les deux choix se défendent ; choisissez-le en connaissance de cause plutôt que par omission.

Quatre fichiers, hors site, chiffrés. La sauvegarde est assez petite pour que son absence soit embarrassante : la base de données, le matériel de clé privée, le fichier de configuration et le fichier de politique. Ensemble, ils représentent une erreur d'arrondi sur n'importe quelle facture de stockage, et sans le matériel de clé, chaque appareil du réseau rejette le serveur. Envoyez-les ailleurs que sur cette machine — idéalement dans une seconde juridiction, ce que couvre le guide des sauvegardes — et restaurez-les une fois sur un VPS de test, délibérément, avant d'en avoir besoin.

# Stop briefly for a consistent SQLite copy, or use .backup on a live db.
docker compose stop headscale
tar czf /tmp/headscale-$(date +%F).tar.gz -C /srv/headscale config data
docker compose start headscale

restic -r sftp:backup@backup.example.com:/srv/restic backup \
       /tmp/headscale-$(date +%F).tar.gz

Les mises à jour, qui sont le vrai risque. C'est un logiciel pré-1.0, et il se comporte comme tel : des clés de configuration ont été renommées, des sous-commandes CLI ont été déplacées, et une version a plus d'une fois exigé une migration documentée plutôt qu'un simple redémarrage. Rien de tout cela n'est une raison de l'éviter — c'est une raison d'avoir une routine. Lisez les notes de version avant de tirer une nouvelle image. Faites d'abord l'archive ci-dessus. Comparez votre fichier de configuration à l'exemple fourni avec la nouvelle version, car c'est là que les clés renommées se signalent. Montez d'une version mineure à la fois plutôt que de trois. Et gardez le tag de l'ancienne image noté quelque part, car un retour en arrière que vous pouvez effectuer en trente secondes est ce qui rend tout cela peu risqué.

Programmez ensuite un rappel mensuel pour examiner deux choses : la liste des appareils enregistrés, afin que les machines mises hors service il y a six mois cessent d'être membres, et les dates d'expiration, afin que rien ne disparaisse silencieusement au mauvais moment. Un VPN maillé est l'un des rares services qui échouent en silence — tout continue de fonctionner jusqu'au jour où vous avez besoin de l'appareil dont la clé avait discrètement expiré.

La partie honnête · Ce que ça ne fait pas

Vous avez repris la carte. Vous n'êtes pas devenu invisible pour autant.

Auto-héberger le plan de contrôle est une amélioration réelle et précise, et ce n'est pas un tour de passe-passe. Cinq choses restent vraies une fois tout ce qui précède accompli, et les connaître fait la différence entre une véritable défense et une histoire rassurante.

Le serveur de contrôle est un point de terminaison public et nommé. Chaque appareil l'appelle, il possède donc un nom d'hôte, et ce nom d'hôte est publié dans les journaux de transparence des certificats dès que le certificat est émis. Il est repérable même si vous ne le liez jamais nulle part, et son adresse est la seule constante que tous vos appareils ont en commun. Utilisez un sous-domaine d'un nom que vous publiez déjà, plutôt qu'un nom qui décrit ce qu'il est.

Headscale est une réimplémentation, et il le dit lui-même. Il n'est ni construit ni pris en charge par Tailscale, la parité fonctionnelle est partielle par construction, et une partie de ce que vend le produit hébergé — la console web, la flotte de relais publique, les parcours d'authentification unique bien polis — soit n'existe pas ici, soit est un projet tiers que personne n'a audité. Consultez la documentation du projet pour savoir si une fonctionnalité existe avant de bâtir un plan dessus, et traitez les mises à jour comme une tâche à part entière plutôt que comme un processus de fond.

Les relais par défaut appartiennent toujours à quelqu'un d'autre. Tant que vous n'activez pas le serveur DERP intégré, une connexion qui ne peut pas passer en direct se replie sur la flotte de relais publique. La charge utile reste chiffrée de bout en bout et personne ne peut la lire — mais le fait que deux de vos appareils se parlent, et combien, transite par une infrastructure que vous ne possédez pas. C'est la partie de la chaîne de confiance que la plupart des gens ratent dès le premier après-midi.

Un nœud de sortie, c'est une adresse stable, pas une foule. Faire passer votre trafic par votre propre VPS déjoue le réseau du café et le profilage du FAI. Cela ne déjoue pas la corrélation, car cette adresse vous appartient à vous seul et ne change pas. L'adresse partagée d'un VPN commercial est pire à tous égards, sauf sur celui qui compte pour cette menace précise.

La machine se trouve toujours dans un bâtiment. Un serveur loué tourne sur du matériel, dans un datacentre avec des portes et du personnel. Ce qui change, c'est qu'il n'existe aucun index produit de vos appareils, aucune base de données d'entreprise consignant d'où chacun se connecte, et aucune politique de confidentialité susceptible d'être modifiée le trimestre prochain. Ce qui ne change pas, c'est que le disque est physique et qu'il ne se trouve pas chez vous.

Ce que vous avez réellement acheté, précisément : la liste de chaque machine que vous possédez, l'historique des lieux de connexion de chacune, et l'autorité d'en ajouter une nouvelle, sont tous détenus sur une machine que vous louez sous aucun nom en particulier. C'est une affirmation étroite, mais réelle. Elle ne vaut ce qu'elle coûte que si l'étape 06 est accomplie — un plan de contrôle auto-hébergé sans restauration testée n'est pas une amélioration de la confidentialité, c'est un point de défaillance unique avec un meilleur habillage marketing.

Dimensionnement · Que commander

Le plan de contrôle est gratuit. C'est le trafic que vous payez.

Niveau Mensuel Ressources Ce qu'elle fait tourner confortablement
Sentinel$3.902 vCPU · 4 GB · 120 GB · 1 GbpsLe serveur de contrôle, un relais et un usage léger de nœud de sortie. Le bon point de départ.
Un second Sentinel$3.90Le nœud de sortie, sur sa propre machineTient le trafic relayé à l'écart du plan de contrôle
Ravelin$16.908 vCPU · 16 GB · 480 GB · 2.5 GbpsUn nœud de sortie utilisé au quotidien pour un foyer, à plein débit nominal
Bulwark$32.9016 vCPU · 32 GB · 960 GB · 5 GbpsUn nœud de sortie d'entreprise et un relais chargé, réunis

Rien dans ce tableau n'est dimensionné pour la coordination. Le serveur de contrôle détient une connexion inactive par appareil et une base de données qui se mesure en kilo-octets ; quelques centaines d'appareils ne troubleront pas le plus petit niveau. Ce qui consomme une machine, c'est le trafic relayé — les connexions relayées et, bien davantage, un nœud de sortie qui porte toute la connexion internet de quelqu'un. Dimensionnez pour la bande passante montante et le débit de chiffrement, et souvenez-vous que la bande passante est illimitée à tous les niveaux : la seule question est la vitesse à laquelle vous la voulez.

Notes de terrain · Six pièges

Six façons dont ça tourne mal. Deux d'entre elles ressemblent à un problème DNS.

Piège 01 · Déroutant

Le suffixe du tailnet chevauche le nom d'hôte du serveur

Choisir un suffixe MagicDNS qui est le parent ou l'enfant du nom d'hôte du serveur de contrôle casse la résolution de noms d'une façon qui ressemble à une panne DNS. Gardez-les frères : vpn.example.com pour le serveur, ts.example.com pour le tailnet.

Piège 02 · Silencieux

Une route annoncée et jamais approuvée

Le client rapporte joyeusement qu'il annonce 192.168.1.0/24, et rien derrière le routeur ne répond, parce que le serveur ne l'a jamais approuvé. Il n'y a d'erreur nulle part. Approuvez sur le serveur, puis vérifiez la liste des routes plutôt que le client.

Piège 03 · Lent

Tout relayé, rien en direct

Un réseau qui bloque l'UDP sortant force chaque connexion à passer par un relais : ça fonctionne, c'est plus lent, et cela place une troisième machine sur le chemin. tailscale status affiche relay au lieu de direct, et netcheck indique pourquoi. Corrigez le pare-feu, ou acceptez ce saut en connaissance de cause.

Piège 04 · Exposé

La politique par défaut qui autorise tout, avec un invité sur le tailnet

Un tailnet tout neuf laisse chaque appareil joindre tous les autres sur tous les ports. C'est correct pour une seule personne, et faux dès qu'un ordinateur portable de prestataire rejoint le réseau — y compris vers des interfaces d'administration dont il ignorait jusqu'à l'existence. Rédigez la politique avant l'invitation.

Piège 05 · Fatal

La clé privée qui n'a jamais été sauvegardée

Reconstruisez la machine, restaurez la base de données, oubliez le matériel de clé — et chaque appareil refuse le serveur auquel il faisait confiance hier. Il n'y a pas de récupération astucieuse ; il y a une journée à réenrôler des téléphones à la main. Copiez le répertoire de données avant que le premier appareil ne rejoigne le réseau.

Piège 06 · Évitable

Un tag d'image flottant sur un service pré-1.0

Les clés de configuration et les sous-commandes CLI ont été renommées au fil des versions mineures. Avec :latest, un redémarrage sans rapport tire une nouvelle version et le plan de contrôle de tout votre parc s'arrête. Figez le tag, lisez les notes de version, mettez à jour délibérément.

FAQ · VPN maillé auto-hébergé

Questions, réponses.

Onze questions qui reviennent lors de la construction de tout cela — en commençant par les deux qui déterminent si vous devriez seulement le construire.

Headscale est-il un produit officiel de Tailscale ?

Non, et il vaut la peine d'être précis sur ce que cela signifie. Headscale est une réimplémentation indépendante et open source du serveur de coordination — la pièce de Tailscale qui distribue les clés publiques, les points de terminaison et la politique. Il n'est ni construit, ni vendu, ni pris en charge par Tailscale, il ne porte aucun contrat de support commercial, et s'il tombe en panne, vous lisez le suivi des tickets du projet plutôt que d'en ouvrir un auprès d'un support. Ce qu'il fait, en revanche, c'est parler le protocole que le client Tailscale officiel et open source parle déjà, ce qui explique pourquoi ce client fonctionne sans modification face à lui. Deux conséquences pratiques en découlent. La parité fonctionnelle est partielle, et le restera toujours, car le projet poursuit une cible mouvante entretenue par une équipe bien plus grande — vérifiez la documentation du projet lui-même pour savoir si une fonctionnalité existe avant de concevoir quoi que ce soit autour d'elle. Et les mises à jour méritent plus de soin qu'une simple montée de version de conteneur ordinaire : le schéma de configuration et plusieurs sous-commandes CLI ont été renommés au fil des versions mineures, ce qui est la façon la plus courante de casser une installation qui fonctionnait.

Le serveur de coordination peut-il lire mon trafic ?

Non — et c'est la partie de l'architecture qui mérite d'être comprise plutôt que prise sur la foi. Chaque appareil génère localement sa propre paire de clés WireGuard, et la moitié privée ne le quitte jamais. Ce qu'un appareil envoie au serveur de contrôle, c'est sa clé publique, ses points de terminaison actuels et quelques métadonnées ; ce qu'il télécharge est la même chose pour chacun des autres appareils qu'il est autorisé à joindre. Les tunnels sont ensuite négociés directement entre les appareils, et le chiffrement est du WireGuard ordinaire entre deux clés que le serveur n'a jamais détenues. Le serveur de contrôle ne peut donc rien déchiffrer, et cela vaut aussi pour le serveur de Tailscale. Ce qu'il peut faire est différent, et moins souvent évoqué : il détient la carte. Les noms des appareils, les noms des utilisateurs, les clés publiques, l'IP publique depuis laquelle chaque appareil se connecte actuellement, quel appareil s'est réveillé à 3 h du matin, et la politique qui dit qui peut joindre qui. C'est aussi ce qui distribue les clés, si bien qu'un serveur de contrôle compromis ou contraint peut ajouter un appareil à votre réseau. L'auto-hébergement ne résout pas un problème mathématique ; il déplace un problème administratif vers une machine qui vous appartient.

Que se passe-t-il pour mon réseau si le serveur de contrôle tombe en panne ?

Beaucoup moins que ce à quoi on s'attend, ce qui est la partie rassurante de cette conception. Les appareils mettent en cache la dernière carte du réseau qui leur a été remise, et les tunnels WireGuard déjà établis sont pair-à-pair — ils ne passent pas par le serveur de contrôle et n'ont pas besoin de lui pour continuer de fonctionner. Un redémarrage du VPS en pleine journée de travail normale est généralement invisible. Ce qui s'arrête, c'est le changement : aucun nouvel appareil ne peut s'enregistrer, un appareil qui change de réseau peut mettre plus longtemps à retrouver ses pairs, les modifications de politique ne se propagent plus, et tout nœud dont la clé expire pendant que le serveur est hors ligne ne pourra pas la renouveler. La bonne façon de penser le serveur de contrôle est donc comme un plan de contrôle plutôt qu'un chemin de données : une panne est un désagrément, pas une déconnexion. Cela dit, traitez-le comme de la production. Sauvegardez-le (étape 06), et si tout un service dépend du tailnet, placez le serveur de contrôle sur sa propre petite machine plutôt que de le partager avec quelque chose qui redémarre souvent.

Headscale ou WireGuard nu — quand le plan de contrôle en vaut-il vraiment la peine ?

Comptez vos appareils, et comptez combien d'entre eux se déplacent. WireGuard nu est une réponse superbe pour un ensemble petit et statique : trois ou quatre pairs, des points de terminaison fixes, un fichier de configuration chacun, rien à faire tourner à part le module noyau. C'est moins de logiciel, moins de surface d'attaque et moins de maintenance que tout ce que couvre ce guide, et notre guide WireGuard le traite de bout en bout. Le coût, c'est que WireGuard n'a délibérément aucune distribution de clés : chaque nouvel appareil est une modification sur tous les autres — un travail qui croît comme le carré de votre parc — et les clients itinérants sur le Wi-Fi d'un hôtel ou en données mobiles ont besoin de quelqu'un pour continuer à dire à tout le monde où ils se sont déplacés. Un plan de contrôle, c'est ce que cela vous achète. Le seuil, en pratique, se situe autour de cinq appareils, ou au premier ordinateur portable qui change de réseau tous les jours, ou à la première fois où vous voulez une règle du genre « l'ordinateur portable du prestataire joint le serveur de préproduction et rien d'autre ». En dessous, utilisez WireGuard et profitez du calme.

L'application Tailscale de mon téléphone fonctionne-t-elle avec Headscale ?

Oui — c'est le même client officiel, et le pointer vers un serveur de contrôle différent est une opération prise en charge, pas une bidouille. La mécanique diffère selon la plateforme, et c'est là que l'on perd une soirée. Sur Linux, macOS et Windows, c'est une option en ligne de commande sur le client (--login-server) ou le réglage équivalent. Sur Android, l'option est exposée dans l'application elle-même, derrière le numéro de version dans l'écran des paramètres. Sur iOS, iPadOS et tvOS, il n'y a aucun champ dans l'application : vous installez un petit profil de configuration qui définit l'URL du serveur de contrôle avant de vous connecter, une opération délicate la première fois, mais permanente ensuite. La documentation Headscale tient une page par plateforme exactement pour cela, et il vaut la peine de l'ouvrir plutôt que de deviner, car le parcours Apple en particulier a changé plus d'une fois. Une mise en garde qui n'est pas spécifique à une plateforme : une application déjà connectée au service de Tailscale lui-même doit généralement être déconnectée — et parfois réinstallée — avant d'accepter un serveur différent.

Dois-je faire tourner mon propre relais DERP ?

Pas pour faire fonctionner le réseau — mais c'est la différence entre une confidentialité la plupart du temps et une confidentialité constante, donc décidez-le délibérément. Les serveurs DERP sont des relais utilisés quand deux appareils ne peuvent pas ouvrir de connexion directe : NAT symétrique aux deux bouts, pare-feu d'entreprise qui avale l'UDP, opérateur mobile qui fait quelque chose de créatif. Le trafic relayé reste du WireGuard chiffré de bout en bout, si bien qu'un opérateur de relais voit du texte chiffré, pas du contenu. Ce qu'il voit, ce sont des métadonnées : quels deux appareils se parlent, combien et quand. Par défaut, Headscale remet à vos appareils la carte DERP publique de Tailscale, ce qui signifie que ces relais appartiennent à Tailscale — vous avez auto-hébergé le plan de contrôle, mais laissé le chemin de données de repli à l'entreprise que vous cherchiez justement à quitter. Headscale embarque un serveur DERP intégré ; l'activer vous donne un relais dans le même datacentre nordique que le serveur de contrôle. Le compromis honnête, c'est la couverture : Tailscale fait tourner des relais sur plusieurs continents, et vous n'en faites tourner qu'un seul, si bien qu'un appareil à l'autre bout du monde est mieux servi par les leurs. Faire tourner les deux, avec le vôtre inclus dans la carte, est un juste milieu parfaitement raisonnable.

Puis-je faire en sorte que tout le tailnet utilise mon propre résolveur DNS ?

Oui, et c'est l'une des meilleures raisons de construire tout cela. Headscale peut pousser une configuration DNS à chaque appareil qui rejoint le réseau, si bien que votre ordinateur portable sur le Wi-Fi d'un café et votre téléphone en données mobiles résolvent tous deux via un résolveur que vous faites tourner vous-même — avec filtrage, avec cache, et sans que le réseau local ne voie les requêtes. Pointez le serveur de noms global du tailnet vers l'IP tailnet de la machine qui fait tourner votre propre Unbound ou AdGuard Home, et réglez la priorité pour qu'elle l'emporte sur ce que le DHCP a remis à l'appareil. Deux choses à bien faire. Le résolveur doit être joignable sur le tailnet, pas sur l'internet public — c'est tout l'intérêt de la manœuvre, et cela signifie aussi que vous pouvez enfin fermer le port 53 au monde entier. Et MagicDNS, qui donne à chaque appareil un nom court à l'intérieur d'un suffixe de votre choix, exige que ce suffixe soit un domaine que vous contrôlez et qui ne soit ni le parent ni l'enfant du nom d'hôte du serveur de contrôle lui-même ; se tromper là-dessus produit un échec déroutant qui ressemble à un bug DNS, mais qui est un bug de configuration.

Quelle taille de VPS faut-il ?

Pour le plan de contrôle seul : petit, et même plus petit que ça. Headscale est un unique binaire Go qui détient une petite base de données d'appareils, de clés et de politiques ; le trafic de coordination est un filet de connexions en long-polling, une par appareil, qui ne transportent presque rien la plupart du temps. Un Sentinel — 2 vCPU, 4 GB, 120 GB NVMe, $3.90 par mois — fera tourner un foyer, une petite entreprise, ou quelques centaines d'appareils sans même le remarquer. La question du dimensionnement ne devient intéressante que lorsque la même machine prend en charge un second rôle. Un relais DERP intégré fait transiter du trafic réel, il a donc besoin de bande passante montante plutôt que de cœurs. Un nœud de sortie fait transiter tout le trafic d'un appareil, il a donc besoin de bande passante montante, d'un forfait de bande passante généreux et d'un CPU capable de suivre le chiffrement au débit nominal. Si vous prévoyez les deux, dimensionnez pour le trafic et traitez le serveur de contrôle comme l'erreur d'arrondi qu'il est — ou mieux, placez le nœud de sortie sur une seconde machine et gardez le plan de contrôle bien ennuyeux.

Un nœud de sortie sur mon propre VPS équivaut-il à utiliser un VPN commercial ?

Techniquement similaire, et en matière de confidentialité presque l'opposé : mieux vaut avoir les idées claires là-dessus. Un nœud de sortie fait passer toute la connexion internet d'un appareil par votre VPS, si bien que les sites web voient l'adresse du VPS au lieu de votre adresse personnelle ou celle de l'hôtel, et que le réseau local ne voit qu'un tunnel chiffré au lieu de votre navigation. Jusque-là, cela correspond à un VPN commercial. La différence, c'est la foule. L'adresse d'un VPN commercial est partagée par des milliers de clients sans rapport entre eux, ce qui est précisément ce qui rend difficile de vous attribuer un trafic ; l'adresse de votre nœud de sortie, elle, n'est utilisée que par vous, de façon stable, pour toujours. Contre un réseau de café indiscret ou un FAI qui construit un profil, le nœud de sortie est excellent. Contre un observateur qui corrèle une activité entre plusieurs sites sur plusieurs mois, une adresse dédiée est un identifiant durable, alors qu'une adresse partagée ne l'est pas. Utilisez le nœud de sortie pour ce en quoi il excelle — les réseaux locaux non fiables, l'accès à vos propres services, une adresse stable pour ce qui en attend une — et lisez le guide pilier pour la partie du modèle de menace qu'il ne couvre pas.

Qu'est-ce que je dois exactement sauvegarder ?

Quatre choses, et une seule d'entre elles est évidente. La base de données — SQLite par défaut, PostgreSQL si vous l'avez déplacée — détient les utilisateurs, les appareils, les clés publiques, les routes et les clés de pré-authentification. Le matériel de clé privée généré au premier démarrage est la partie que l'on oublie : le perdre, et chaque appareil rejette le serveur auquel il parlait depuis un an, ce qui signifie réenrôler tout le parc à la main. Le fichier de configuration compte parce qu'il encode les trois noms de l'étape 02, et les reconstituer de mémoire est la façon typique d'en changer un par accident. Et le fichier de politique, si vous gardez les règles d'accès sur disque, est la chose que vous voulez le moins avoir à réécrire. Ces quatre éléments tiennent dans deux répertoires et pèsent ensemble moins qu'une photo. Chiffrez-les, envoyez-les vers une machine qui n'est pas celle-ci — idéalement dans une autre juridiction, ce à quoi sert le guide des sauvegardes — et restaurez-les une fois sur un VPS de test, délibérément, pour savoir que le fichier que vous avez est bien le fichier dont vous avez besoin.

NordBastion voit-il un inconvénient à ce que je fasse tourner un serveur de contrôle et un nœud de sortie sur un VPS ?

Un serveur de contrôle est une charge de travail ordinaire et bien élevée — un peu de HTTPS, un peu d'UDP, quasiment aucun trafic — et rien dans la politique d'utilisation acceptable ne le concerne. Un nœud de sortie mérite une phrase de réflexion plutôt qu'un cours sur la politique : tout ce qu'un appareil envoie à travers lui quitte internet depuis l'adresse de votre VPS, sous votre compte, si bien que ce que font vos appareils, c'est ce pour quoi cette adresse sera connue. C'est très bien ainsi, et c'est exactement ce à quoi sert cette fonctionnalité ; c'est aussi pourquoi partager un nœud de sortie avec des inconnus est une mauvaise idée, au même titre qu'un relais ouvert. La bande passante est illimitée à tous les niveaux et le trafic relayé est un trafic comme un autre : un serveur DERP et un nœud de sortie sont donc tous deux inclus plutôt que facturés à l'usage. Au-delà de cela : le compte n'exige pas votre nom, la facture se règle en Monero ou en Bitcoin, et la machine qui détient la carte de chacun de vos appareils n'est indexée par personne.

Obtenir la machine

Un plan de contrôle bien à vous, sur un compte qui ne porte pas votre nom. Sans KYC, payable en cryptomonnaie.

Sentinel — 2 vCPU et 4 GB pour $3.90 par mois, à Helsinki, Stockholm, Oslo ou Reykjavík. Suffisant pour Headscale, Caddy et votre propre relais DERP, avec de la marge pour le nœud de sortie si vous le voulez sur la même machine. Aucun e-mail à l'inscription, aucune pièce d'identité, et aucune base de données d'entreprise détenant la liste de chaque appareil que vous possédez.

Dernière révision · 2026-10-12 · Références · Documentation Headscale (référence de configuration, mise en place des clients, ACL, DERP, CLI distante), documentation du client Tailscale et des nœuds de sortie, papier du protocole WireGuard, documentation Caddy · Fréquence · annuellement

Hébergement privé, conçu dans le Nord.