Solution communautaire

Tailscale sur ZimaOS avec Headscale : serveur de contrôle personnalisé, clé d’authentification, persistance de l’état et configuration actuelle plus sûre

A concise October 2025 community tutorial for pointing the ZimaOS Tailscale Docker app at a self-hosted Headscale control server. It used a persistent state folder, TS_AUTHKEY for first registration, TS_EXTRA_ARGS with the Headscale URL, host networking, /dev/net/tun, and NET_ADMIN/NET_RAW capabilities.

La publication source présente les éléments essentiels pour qu’un client Docker Tailscale sur ZimaOS s’enregistre auprès d’un plan de contrôle Headscale auto-hébergé : un état persistant, une clé à usage unique ou de pré-authentification, l’URL Headscale personnalisée, l’accès TUN et les capacités requises du conteneur.

La documentation actuelle de Tailscale et de Headscale fournit désormais un contrat amont plus clair. Tailscale prend officiellement en charge l’URL d’un serveur de contrôle personnalisé, et Headscale documente à la fois l’enregistrement interactif et l’enregistrement avec une clé de pré-authentification. Utilisez ces méthodes officielles pour vérifier la commande et l’URL actuelles plutôt que de vous fier uniquement à une capture d’écran de 2025.

Paramètres Docker de Tailscale sur ZimaOS avec le réseau de l’hôte, un dossier d’état persistant, /dev/net/tun, l’argument login-server de Headscale et les capacités NET_ADMIN/NET_RAW
La configuration source combine l’état Tailscale persistant avec l’URL Headscale, le périphérique TUN, le réseau de l’hôte et les capacités réseau Linux.

Headscale remplace le plan de contrôle de coordination de Tailscale

Headscale est une implémentation auto-hébergée du protocole du serveur de contrôle Tailscale. Les clients Tailscale créent toujours des tunnels chiffrés de pair à pair, mais l’enregistrement et la coordination sont gérés par l’instance Headscale de l’utilisateur au lieu du plan de contrôle Tailscale par défaut.

Conserver le répertoire d’état de Tailscale

La source a créé /DATA/AppData/tailscale/state et l’a associé à /var/lib/tailscale. C’est important, car l’identité et l’état du nœud doivent être conservés lors de la recréation du conteneur et après un redémarrage de l’hôte.

La source recommandait également des autorisations restrictives sur le répertoire d’état de l’hôte. C’est pertinent, car l’état fait partie de l’identité du nœud et ne doit pas être accessible en lecture à tout le monde.

Utiliser l’URL Headscale comme serveur de contrôle personnalisé

La documentation actuelle de Tailscale prend en charge les serveurs de contrôle personnalisés via :

tailscale login --login-server=<URL>

La documentation de Headscale utilise le même modèle avec tailscale up --login-server <YOUR_HEADSCALE_URL>.

Voir les recommandations actuelles de Tailscale concernant les serveurs de contrôle personnalisés.

Utiliser une clé de pré-authentification pour l’enregistrement non interactif

La source a temporairement ajouté TS_AUTHKEY, a enregistré le nœud, puis a supprimé la variable. Headscale documente actuellement la création d’une clé de pré-authentification et son utilisation avec --authkey pour l’enregistrement non interactif.

Utilisez les méthodes d’enregistrement actuelles de Headscale.

Ne laissez pas de clé d’authentification réutilisable dans la définition de l’application

Si la clé est réutilisable ou possède une longue durée de validité, la laisser dans l’environnement de l’application ZimaOS crée une exposition inutile. Une fois l’identité du nœud correctement enregistrée, supprimez le secret d’enregistrement lorsqu’il n’est plus nécessaire.

Si une clé a été publiée sur un forum public ou dans une capture d’écran, révoquez-la et créez-en une nouvelle.

Le TUN du noyau et les capacités influencent le mode réseau

La source mappe /dev/net/tun et accorde NET_ADMIN/NET_RAW, ce qui correspond au style de mise en réseau du noyau plutôt qu’à une mise en réseau purement en espace utilisateur.

Les conteneurs Tailscale actuels peuvent également fonctionner en mode espace utilisateur. Choisissez donc délibérément le mode selon que vous avez besoin du routage de sous-réseaux, du comportement de nœud de sortie ou d’une mise en réseau complète du noyau.

Le réseau de l’hôte est puissant

La source utilise le réseau de l’hôte Docker. Cela supprime l’isolation habituelle des ports du conteneur et fait fonctionner Tailscale directement dans l’espace de noms réseau de l’hôte.

Ne passez pas du mode hôte au mode pont, ou inversement, sans comprendre comment l’application Tailscale actuelle stocke les routes, les écouteurs et les services annoncés.

L’URL Headscale doit être accessible de manière fiable et correctement sécurisée

Un serveur de contrôle auto-hébergé devient une infrastructure critique. Utilisez un DNS stable, une configuration TLS valide et des sauvegardes de la base de données et de la configuration de Headscale. Si le serveur de contrôle disparaît, les pairs existants peuvent continuer à communiquer temporairement, mais les nouvelles inscriptions et les modifications de coordination deviennent indisponibles.

La source présente une configuration fonctionnelle, pas un contrat d’assistance d’IceWhale

L’article ne contient aucune confirmation du personnel d’IceWhale. Il s’agit d’une configuration communautaire qui s’aligne bien sur les concepts en amont de Tailscale/Headscale, mais elle doit tout de même être testée avec le paquet Tailscale actuel de ZimaOS.

FAQ sur Headscale sur ZimaOS

Les clients Tailscale peuvent-ils utiliser un serveur de contrôle Headscale personnalisé ?

Oui. La documentation actuelle de Tailscale prend officiellement en charge les URL de serveurs de contrôle personnalisés.

TS_AUTHKEY doit-il rester définitivement dans l’application ?

Non. La source l’a supprimé après l’enregistrement, et les secrets d’enregistrement persistants ne doivent pas rester inutilement exposés.

Pourquoi conserver /var/lib/tailscale ?

Il conserve l’identité et l’état Tailscale du nœud lors de la recréation et du redémarrage du conteneur.