Tailscale - connecter HA via un mesh VPN network

Certes je reste convaincu que Nabu Casa est la meilleur solution pour connecter de manière sécure son instance Home Assistant depuis l’extérieur. Vous soutenez ainsi le projet et bénéficiez de l’intégration de services cloud comme Alexa et Google Assistant.

Après, pour des raisons financière ou une utilisation peu intensive de HA, il est compréhensible de ne pas vouloir payer cette souscription. De plus, Nabu Casa n’autorise qu’une connexion à un seul serveur Home Assistant et vous ne voulez peut-être ne pas repayer pour une résidence secondaire.

D’autres solutions gratuites comme Duck DNS demandent d’ouvrir un port sur votre box internet, ce qui n’est pas forcément souhaitable.

Une solution pour ne pas avoir à ouvrir de ports est d’utiliser un mesh VPN network, et Tailscale est une solution de choix.

Tailscale est gratuit jusqu’à 20 devices.

Principe

Vous installez Tailscal sur différentes machines et cela crée un réseau VPN qui permet aux machines connectées de se « voir » entre elles.

Pour prendre une image simple, c’est un peu comme si vos machines étaient reliées entre elles via à un même réseau wifi.

Donc si vous installer Tailscale sur votre Home Assistant et votre mobile, vous pourrez depuis votre mobile accéder à Home Assistant grâce à une adresse IP fournit par Tailscale.

Installation

C’est très rapide :

  • Vous créez un compte sur Tailscale

  • Vous installez Tailscale sur Home Assistant (Module complémentaire puis ajouter le module Tailscale), ouvrez l’interface web et vous connectez avec votre compte Tailscale. Ce sera automatique si votre browser est déja ouvert sur Tailscale.

  • Vous installez Tailscale sur la ou les machines ou vous voulez accéder Home Assistant (PC ou mobile) .

  • L’interface Tailscale vous affichera les machines connectées : repérer l’adresse IP de HomeAssistant et accédez à votre interface HA en rajoutant :8123 (100.99.22.22:8123 dans l’exemple ci-dessous).

Je sais qu’il y a dans la communauté des experts réseaux, et leurs avis sur le niveau de sécurité de cette solution seront les bienvenus.

2 « J'aime »

Ben le problème est que le schéma de fonctionnement omet un élément majeur qui est le point central de connexion par lequel tout passe et qui est le gros point de faiblesse au niveau sécurité de l’histoire !
Qu’en-est-il de l’accès depuis le réseau local à HA? pour les capteurs et autres…

Je ne suis pas sur de comprendre. Peux tu donner un exemple concret de faille ?

Ça ajoute une interface je pense, c’est vraiment du vpn en fait car dessus c’est du wireguard. Donc cote sécurité, on est plutôt pas mal.

Et y’a pas forcément de faille mais je pense que ce que tu dis c’est qu’il a un élément central, le contrôleur côté tailscale et donc que ça dépend du cloud, non ?

Alors oui tu dépends de toute façon de l’infra Tailscale et tu n’as aucune garantie qu’il n’y a pas une grosse oreille qui écoute dans le réseau virtuel créé… car même si le mesh-vpn lui-même utilise des outils éprouvés les données voyagent en clair en dessous (donc cela n’empêche pas le besoin comme pour le net d’utiliser impérativement des communications correctement cryptées dans ce réseau mesh). Par contre c’est pas mal de surcouches au niveau communication ce qui n’est pas sans conséquence en terme de ressources si ha tourne sur une petite config et du coup la reconnexion forcément plus longue en cas de changement de réseau des clients mobiles aussi.
Je serais d’ailleurs de savoir comment cela fonctionne en terme de débit derrière des nat carrier-grade comme on a souvent sur les réseaux GSM…
En tout cas c’est comme ça que je l’ai compris !

J’ai vu qu’il y a un controleur open source headscale qui permet de remplacer tailscale sur ce point, ça me plaît plutôt pas mal comme idée du coup. Mais oui forcement ça a un coût en terme de perfs, bien envie d’essayer pour voir…

1 « J'aime »

Ah oui effectivement et dans l’idéal il faudrait le mettre sur une instance dans un datacenter avec une bonne connectivité pour optimiser le truc :wink: sachant que si c’est pour de la domotique cela ne génêre pas un traffic de malade donc ça devrait être gérable sur une petite instance :sunglasses:

hello la commu !
des retours sur tailscale ?

j’ai un pote à moi pour qui j’ai préparé un homeassistant qui n’as qu’une connexion 4G basique à la maison pas d’ADSL ni de fibre… j’était parti sur du duckdns qui fonctionnais bien chez moi lors de mes tests mais comme on est sur une 4G… bin y’as rien qui fonctionne chez lui…

ça marche très bien, mais il faut mettre en réseau les machines : installer tailscale à la fois sur Home Assistant et sur par exemple son mobile, en utilisant le même compte Tailscale. Les 2 tailscale vont se connecter et mettre le mobile et le serveur en réseau, comme si ils étaient en wifi…

conf faite ce jour ça a l’air de fonctionner impeccablement bien l’outil est impressionnant par sa simplicité et sa puissance !

Excellent !!
Oui difficile de faire plus simple. Le seul bémol est de devoir ouvrir le client VPN tailscale avant de se connecter avec l’appli Home Assistant (sur mobile en particulier).
Tailscale est l’outil idéal pour connecter 2 sites et 2 instance Home Assistant : résidence principale et secondaire par ex.

Pour connecter un mobile a son serveur Home Assistant distant, ma solution préférée reste cependant Cloudflare (si on exclut Nabu Casa). Il n’y a pas besoin d’une appli en plus.
Voir le chapitre sur les types d’accès extérieurs sur le portail

1 « J'aime »

Bonjour à tous !

Je tente d’installer un VPN depuis quelques jours et après des heures et des heures de tâtonnements je pense être à quelques pas d’y arriver. Problème : sur l’interface online Talscale je vois bien mes 2 machines (mon Iphone d’un côté et mon Home assistant de l’autre) mais seul mon téléphone est «connecté». Le bouton de mon home assistant reste désespérément gris… J’imagine donc (peut-être à tort) qu’en résolvant ce dernier problème je vais enfin parvenir à me connecter à mon HA via VNP. Auriez-vous une idée de ce que j’ai mal fais ?

EDIT : j’ai oublié de préciser que je fais tourner HA sur un Home Assistant Green branché en RJ45 filaire à la maison avec une clé Sonoff Dongle Zigbee 3.0 branchée sur l’un des ports USB.

J’utilise à la fois Wireguard et Tailscale et je confirme que Tailscale est vraiment très simple et très puissant et je ne peux que recommander Tailscale.

J’utilise Tailscale sur mes NAS Synology et OpenMediaVault, sur mes systèmes d’exploitation (Mac OS) et sur mes téléphones. On ne peut pas imaginer un VPN plus universel. Par ailleurs, il a l’avantage de fonctionner sans qu’on ait besoin d’ouvrir un port sur l’extérieur sur la box ou le firewall. Le mesh garantit dans la plupart du temps une connexion directe, donc sans ralentissement, à la vitesse maximale offerte par la connexion.

Si vous êtes au bureau et que tous les ports sont fermés en entrée, vous pouvez espérer « sortir » via tailscale et établir une connexion directe. Cela fonctionne à peu près de partout.

Sur HA, c’est enfantin (mais j’utilise Docker).

Salut je suis un peu nouveau dans la communauté on mon home assistant tourne sur docker en parallèle de mon ordi est j’es entendu parler de tailscale est comme je suis sur docker est pas avec l’os je peux pas directement installer l’add-on tailscale sur home assistant est j’aimerais l’ajouter est se que vous pourriez m’aider

Pas de soucis, je suis dans ce cas également : tout sous Docker.
Voici un docker-compose.yml qui fonctionne sous Debian 13.

J’ai installéTailscale de cette manière sur mon R720XD sous Debian pour le relier à mon tailnet.

Il faut avoir un compte Tailscale (compte gratuit jusqu’à 100 machines) :
https://login.tailscale.com/admin

Sur la machine Docker, créer le dossier tailscale :
nano /home/docker/tailscale/docker-compose.yml

services:
  tailscale:
    image: tailscale/tailscale:latest
    container_name: tailscale
    hostname: ${TS_HOSTNAME}          # apparaît dans le tailnet
    network_mode: host              # accès réseau complet de l'hôte
    cap_add:
      - NET_ADMIN
      - NET_RAW
    volumes:
      - ./tailscale-state:/var/lib/tailscale
      - /dev/net/tun:/dev/net/tun
    environment:
      - TS_STATE_DIR=/var/lib/tailscale
      - TS_AUTHKEY=${TS_AUTHKEY}
      - TS_HOSTNAME=${TS_HOSTNAME}
      - TS_EXTRA_ARGS=${TS_EXTRA_ARGS}
      - TS_ACCEPT_DNS=${TS_ACCEPT_DNS}
      - TS_USERSPACE=${TS_USERSPACE}
    restart: unless-stopped

Persistance d’état : le dossier ./tailscale-state conserve les clés de la machine entre les redémarrages. Sans ça, la machine réapparaît comme nouveau nœud à chaque up. Le dossier est créé automatiquement.

Auth key : à générer à l’adresse indiquée plus bas → Keys → Generate auth key. Pour une machine permanente, cocher Reusable et Pre-authorized

https://login.tailscale.com/admin/settings/keys

Le fichier .env stocke les données secrètes :

nano /home/docker/tailscale/.env

TS_AUTHKEY=tskey-auth-XXXXXXXXXXXX
TS_HOSTNAME=homeassistant
TS_EXTRA_ARGS=–advertise-routes=10.90.80.0/24
TS_ACCEPT_DNS=false
TS_USERSPACE=false

chmod 600 .env

Il ne faut indiquer TS_EXTRA_ARGS= que si l’on pas veut donner accès à tout son réseau local.

Ensuite lancer Tailscale avec la commande :
sudo docker compose up -d tailscale

Vérifier que tout fonctionne en lisant les logs:
sudo docker logs tailscale

La machine est automatiquement ajoutée au tailnet. Dans l’interface admin de Tailscale, il faut penser à cliquer sur le nom de la machine et à désactiver l’expiration de la clé, sans quoi il faudra se reconnecter :

https://login.tailscale.com/admin

Pour mettre à jour Tailscale automatiquement à intervalle régulier, on peut utiliser le fichier Docker Watchtower (bien documenté sur Internet).