Tailscale — VPN mesh pour accéder à tous tes services à distance
Dernière mise à jour le
🎯 Le problème : accéder à ses services depuis l’extérieur
Par défaut, les services du homeserver ne sont accessibles que depuis le réseau local. Pour y accéder depuis l’extérieur, les options habituelles sont :
- Port forwarding : ouvrir les ports sur ton routeur et exposer les services sur ton IP publique → fragile, risqué, nécessite une IP fixe ou du DNS dynamique
- VPN classique (WireGuard, OpenVPN) : efficace mais complexe à maintenir, configuration manuelle sur chaque appareil
- Tailscale : VPN mesh basé sur WireGuard, géré automatiquement — tu ajoutes des appareils à un réseau privé et ils peuvent se joindre comme s’ils étaient sur le même LAN, sans ouvrir aucun port
🌐 Comment fonctionne Tailscale
Tailscale crée un réseau privé virtuel (tailnet) entre tous les appareils que tu connectes — ton serveur, ton laptop, ton téléphone. Chaque appareil obtient une IP stable dans la plage 100.x.x.x.
La connexion est basée sur WireGuard (protocole moderne, rapide, sécurisé) mais Tailscale gère tout ce qui est habituellement pénible : coordination des clés, NAT traversal, reconnexion automatique.
Avantages concrets :
- Pas de port à ouvrir sur la box
- Fonctionne derrière du NAT strict, en 4G, en WiFi public
- Chaque appareil connecté voit le serveur directement via son IP Tailscale
- Gratuit jusqu’à 3 utilisateurs / 100 appareils
🐳 Installation sur le homeserver
services:
tailscale:
image: tailscale/tailscale:stable
container_name: tailscale
restart: unless-stopped
network_mode: host
cap_add:
- NET_ADMIN
- SYS_MODULE
volumes:
- ./state:/var/lib/tailscale
- /dev/net/tun:/dev/net/tun
environment:
- TS_AUTHKEY=<ta_clé_auth> # clé générée sur tailscale.com/admin/settings/keys
- TS_STATE_DIR=/var/lib/tailscale
- TS_USERSPACE=false
Note network_mode: host : Tailscale a besoin d’accéder directement à l’interface réseau du host pour fonctionner correctement. En mode host, il partage la pile réseau de l’hôte — les services joignables sur le host le sont aussi via l’IP Tailscale.
Démarrage et connexion
docker compose up -d tailscale
# Vérifier que le container est connecté
docker exec tailscale tailscale status
Si tu n’utilises pas TS_AUTHKEY, le container affiche dans ses logs une URL d’authentification à ouvrir dans un navigateur.
📱 Ajouter des appareils clients
Sur chaque appareil (laptop, téléphone, autre serveur) :
- Télécharge Tailscale : tailscale.com/download
- Connecte-toi avec le même compte
- L’appareil apparaît dans ton tailnet et peut immédiatement joindre le serveur
Trouver l’IP Tailscale du serveur
docker exec tailscale tailscale ip -4
# → 100.x.x.x
Depuis un autre appareil du tailnet :
ping 100.x.x.x # doit répondre
curl http://100.x.x.x:8096 # Jellyfin, par exemple
🔗 Intégration avec les autres services
Accès à Vaultwarden
Vaultwarden est configuré pour n’être accessible que via Tailscale — pas d’exposition publique. Dans le docker-compose de Vaultwarden, le port est lié à 127.0.0.1 uniquement, et le DOMAIN est défini sur l’hostname Tailscale du serveur (https://monserveur.tailnet-xxxx.ts.net).
→ Détails : Vaultwarden
Accès aux partages Samba
Les disques durs externes partagés via Samba sont aussi accessibles depuis n’importe où via Tailscale — même chemin que sur le LAN, même vitesse (la bande passante Tailscale dépend de ta connexion internet, pas d’un relais cloud).
→ Détails : Samba — accès aux disques externes
Accès aux services qui ne sont pas exposés publiquement
Certains services (qBittorrent, interfaces *arr, Home Assistant…) ne sont volontairement pas exposés via le reverse proxy. Via Tailscale, ils restent accessibles directement par leur port :
http://100.x.x.x:8989 → Sonarr
http://100.x.x.x:7878 → Radarr
http://100.x.x.x:8080 → qBittorrent
http://100.x.x.x:8123 → Home Assistant
🔒 MagicDNS et HTTPS
Tailscale peut activer MagicDNS pour que les appareils du tailnet soient accessibles par nom (ex: monserveur) plutôt que par IP 100.x.x.x. Active-le dans le tableau de bord admin.
Pour de l’HTTPS sur les services exposés via Tailscale uniquement (sans Nginx Proxy Manager), Tailscale propose des certificats HTTPS automatiques :
docker exec tailscale tailscale cert monserveur.tailnet-xxxx.ts.net
🛡️ Bonne pratique sécurité
Tailscale utilise des ACLs (Access Control Lists) pour contrôler qui peut joindre quoi dans ton tailnet. Par défaut, tous les appareils se voient — tu peux restreindre ça dans le tableau de bord (ex: téléphone pro ne peut joindre que certains services).