Pour faire suite à quelques échanges sur Discord voici une petite présentation de Tailscale, la solution VPN que j’utilise, entre autres, pour rester connecté avec ma maison où que je sois.
Tailscale est une solution VPN en mesh/maille. Ce qui veut dire qu’elle est faite pour que des périphériques puissent se parler entre eux directement ou en passant par un autre periph du réseau, qu’ils soient dans le même réseau ou non. Par exemple mon téléphone peut se connecter à mon NAS de manière transparente que je sois chez moi, en 4G ou sur un Wifi ailleur. Et ce sans se avoir à ouvrir de port sur mon routeur ou de config complexe à mettre en place.
C’est une couche qui configure automatiquement des connexions point à point WIregard en utilisant différentes techniques réseau pour ne pas demander à ouvrir des ports manuellement sur les routeurs (IPv6, STUN, uPnP, …). Ça propose aussi:
- une couche DNS qui permet à chaque periph d’avoir un nom de domaine unique interne au réseau
- de faire routeur pour accéder à un subnet en passant par un periph qui est sur ce subnet
- de router tout le trafic d’un periph par un autre (faire comme si votre tel est chez vous alors que vous etes dans un autre pays),
- accéder à un site web hébergé chez vous en fournissant un certificat https valide
- Partager des ressources réseau avec d’autres utilisateurs, avec une config fine des droits
- et plein d’autres trucs qu’ils ajoutent au fur et en mesure
Le tout gratuitement tant qu’on reste dans la limite de 100 périphériques et 3 utilisateurs. (5$/mois pour 6 users, et ici après)
Pour être un peu plus concret, je vais expliquer mon usage perso. Le produit est bien plus complexe que ce que j’en fais, mais ça donnera une bonne base.
J’ai config mon compte chez eux et choisi le nom de mon tailnet qui est mon domaine privé. Ça prend la forme de xxx-yyy.ts.net avec xxx/yyy qui sont 2 mots anglais au hazard qu on peut regen tant qu’on n’a pas un truc qui nous plait. Je vais prendre pango-lin.ts.net qui est celui que leur community manager utilise dans ses nombreux tutos.
J’installe l’agent sur mon PC, NAS, Mac, iPhone, iPad, APple TV, etc et je me retrouve avec
sarbian-win.pango-lin.ts.net
truenas.pango-lin.ts.net
mac-mini.pango-lin.ts.net
iphone-15-pro-max.pango-lin.ts.net
ipad-pro-12-9-gen-3.pango-lin.ts.net
apple-tv.pango-lin.ts.net
Maintenant tout ces périphériques peuvent se parler en utilisant ces noms de domaine quel que soit le réseau auquel ils sont connectés. C’est pratique, mais vous vous demandez probablement pourquoi mon PC à besoin dêter sur ce réseau alors qu’il est a quelques mètres du NAS. Il y a plusieurs raisons :
- Je peux faire un
tailscale ssh truenaset me connecter en SSH au NAS en étant authentifié par ma connexion sur le tailnet. - Je peux copier des fichier entre 2 periph avec la fonction taildrop et donc recup facilement un fichier du NAS de partout.
- Le client peut generer et mettre a disposition un certificat https (Let’s Encrypt) avec le nom de domaine du periph que je peux utiliser pour un site que j’héberge localement. (plus sur ce sujet après).
- Je peux rendre dispo sur internet un site (Je n’utilise pas, et ce n’est pas pour les trucs qui demandent de la bande passante)
- D’autres trucs que j’oublie
En plus des accès simples que je décris, je crée aussi une adresse sur le tailnet pour chque site que j’héberge. Et donc j’ai aussi des noeuds comme immich.pango-lin.ts.net qui me permet d’accéder à mon instance immich avec un vrai certificat https et de manière sécurisée.
Pour faire ça avec docker il y a plusieurs méthodes
- un side car docker qui est un agent tailscale spécifique pour ce service. Ça demande un peu de config en plus mais ça marche pas mal. (Tuto)
- tsbridge la solution de paresseux comme moi. On lance un conteneur tsbrige et on le configure pour qu’il surveille les label des autres docker du serveur. Quand il voit le bon label il crée automatiquement une nouvelle config tailscale qui fait qu’un site devient accessible avec
https://<label>.pango-lin.ts.net.
Concrètement dans le dockerfile d’un service j’ajoute ça et j’ai unhttps://immich.pango-lin.ts.netqui est un proxy vers mon conteneur immich qui écoute sur le port 2283. C’est magique.
labels:
tsbridge.enable: true
tsbridge.service.name: immich
tsbridge.service.port: 2283
Ils bossent aussi sur un IdP oAuth qui vous authentifie automatiquement quand on est sur le réseau. (tsidp) et d’autres nouvelles fonctions.
Voilà, j’espere que ça n’est pas trop confus, Posez des questions ![]()