Publier votre Home Assistant avec une VPS et Tailscale

Après avoir vu comment installer et configurer Home Assistant, nous allons maintenant nous intéresser à sa publication sur Internet afin de pouvoir y accéder depuis n’importe où avec son téléphone ou à travers un navigateur Internet.

Il existe plusieurs solutions pour publier votre Home Assistant et le rendre disponible depuis Internet, ici je vais vous expliquer comment j’ai publié mon Home Assistant en utilisant un serveur dédié chez OVH que je loue pour l’hébergement de ce site Internet et en utilisant le service VPN Tailscale.

L’avantage de passer par cette solution est multiple :

  • Le serveur dispose d’une adresse IP fixe, je n’ai donc pas besoin d’utiliser un service pour mettre à jour l’adresse ip de ma boxe Internet
  • Pas de publication à faire sur ma boxe, car la communication entre le serveur VPS et Home Assistant sera faite par le VPN Tailscale

Pour la publication elle même, elle sera assuré par Nginx qui sera le reverse proxy sur le serveur VPS qui va me permettre également d’utiliser une publication HTTPS en qui permet de chiffré le trafic sur Internet entre le périphérique (Ordinateur / Téléphone … ) et le serveur VPS, le chiffrement entre le serveur VPS et Home Assistant sera assuré par le VPN.

Voici une représentation :

Prérequis

Si vous souhaitez mettre en place cette solution, vous aurez besoin de plusieurs choses :

  • Un nom de domaine (il existe le domaine .tk qui permet d’avoir un nom gratuit)
  • Un serveur dédié ou VPS chez un hébergeur en fonction de vos besoins et budget les prix peuvent variés, on trouve des serveurs dédiés ou VPS chez OVH pour moins de 10€ / mois que vous pourrez également utiliser par la sauvegarde de votre Home Assistant ou / et pour publier d’autre application.
  • Un compte sur Tailscale qui est gratuit pour une utilisation personnelle jusqu’à 100 périphériques
  • Bien évidement Home Assistant d’installé.

Configuration et préparation du serveur hébergé

Dans mon cas, j’utilise la distribution Ubuntu.

Pour commencer installer Nginx pour la partie Reverse proxy et Certbot pour générer une certificat SSL.

Pour le moment, on s’occupe seulement de l’installation, la configuration de Nginx et la génération du certificat sera traité par la suite.

Installer le client VPN Tailscale avec la commande suivante :

curl -fsSL https://tailscale.com/install.sh | sh

Une fois le client installé, entrer la commande suivante pour se connecter au VPN :

sudo tailscape up

Lors de la première connexion, il faut cliquer sur un lien pour autoriser l’appareil :

Ouvrir le lien dans un navigateur et cliquer sur le bouton Connect 1.

Si vous se passe bien, vous avez la confirmation que la connexion a été effectuée.

Dans le terminal du serveur, vous devriez avoir récupérer le prompt et Success devrait s’afficher.

Dans la console Tailscale, on peut également voir le serveur avec l’adresse ip attribué sur le VPN.

Nous en avons pour le moment terminé avec le serveur VPS.

Installation de Tailscale sur Home Assistant

Nous allons maintenant installer Tailscale sur Home Assistant qui est disponible dans les Modules compélmentaires.

Aller sur les Paramètres 1.

Depuis les Paramètres, cliquer sur Modules complémentaires 1.

Cliquer sur le bouton BOUTIQUES DES MODULES COMPLEMTAIRES 1 pour afficher les add-ons disponibles.

Dans la zone de rechercher, entrer tail 1 pour filtrer les add-ons puis cliquer sur Tailscale 2.

Cliquer sur INSTALLER 1.

L’add-on Tailscale installé, cliquer sur DEMARRER 1.

Le conteneur Tailscale est maintenant démarré, cliquer sur OUVRIR L’INTERFACE UTILISATEUR WEB 1.

Il est nécessaire de s’authentifier pour connecter Home Assistant au VPN, cliquer sur le bouton Reauthenticate 1.

Sur la nouvelle page qui s’ouvre, cliquer sur Connect 1.

L’authentification a réussi.

Dans la console Tailscale, on retrouve maintenant notre Home Assistant.

De retour sur Home Assistant, on peut voir que celui-ci est connecté.

Comme on peut le voir sur la capture, il y a un message qui s’affiche indiquant que Home Assistant fonctionne comme Exit node.

Si on le souhaite, on peut configurer le serveur Home Assistant comme passerelle par défaut pour tous les clients VPN qui seront connecté par Tailscale. Avec cette option d’activer, si vous connectez par exemple votre téléphone au VPN Tailscale, en allant sur Internet vous passerez par le Home Assistant puis votre boxe Internet.

Tailscale est installé et fonctionnel.

Configuration du virtualhost sur Nginx

On va maintenant retourner sur notre VPS pour configurer la publication de notre Home Assistant.

A cette étape du tutoriel, vous devez avoir configurer un enregistrement DNS qui point sur votre serveur VPS.

On va commencer par créer le fichier de configuration :

sudo nano /etc/nginx/sites-available/homeassistant

Voici le configuration du virtualhost que vous devez adapter en modifiant server_name pour que cela correspondent à votre enregistrement et pass_pass avec l’adresse IP du homeassistant sur son interface VPN Tailscale.

On va maintenant activer le virtualhost pour Home Assistant :

sudo ln -s /etc/nginx/sites-available/homeassistant /etc/nginx/site-enabled/

Tester la configuration de Nginx :

sudo nginx -t

S’il n’y a pas d’erreur, recharger la configuration :

sudo systemctl reload nginx

On va maintenant tester la configuration, depuis un navigateur Internet entrer le nom de domaine configurer pour Home Assistant. Si tout se passe correctement au niveau du Reverse proxy, vous arrivez sur une page d’erreur 400: Bad Request.

Cette erreur est normale, car nous n’avons pas encore configurer Home Assistant pour lui indiquer qu’il se trouve derrière un reverse proxy.

Pour le tester, vous pouvez aussi utiliser votre mobile sans être connecté au Wifi de la maison.

Configurer Home Assistant derrière un reverse proxy

Pour cette partie, si vous ne l’avez pas encore installé, vous aurez besoin du Module complémentaire File editor.

On va commencer par configurer l’url Internet, dans Home Assistant, Aller dans Paramètres / Système / Réseau, dans la partie URL de Home Assistant, dans le champ Internet, indiquer le nom de domaine 1 avec http:// devant et cliquer sur ENREGISTRER 2.

On va maintenant passer à l’édition du fichier configuration.yaml. Ouvrir le fichier de configuration de Home Assistant avec File editor.

Dans le fichier ajouter les lignes suivantes :

Sauvegarder le fichier de configuration et redémarrer Home Assistant.

Maintenant vous devriez arriver sur la page d’authentification.

Passer en HTTPS pour sécuriser le trafic vers Home Assistant

La dernière étape de ce tutoriel va être de passer en HTTPS en générant un certificat Let’s Encrypt avec certbot.

Sur le serveur VPS entrer la commande suivante :

sudo certbot

Entrer le numéro qui correspond au nom de domaine de la publication Home Assistant.

Si c’est la première fois que vous utilisez certbot, vous devrez indiquer votre adresse email et accepter les conditions d’utilisation.

Il est aussi possible que l’assistant vous demande si vous souhaitez rediriger le trafic HTTP vers HTTPS, il faut le faire.

Pour finir retourner dans Home Assistant et changer l’url internet cette fois en indiquant HTTPS.


Ce tutoriel est terminé, on va vu comment publier Home Assistant à travers un reverse proxy extérieure et faire la liaison avec le VPN Tailscale.

Pour aller plus loin, si vous souhaitez durcir la sécurité de votre serveur VPS, vous pouvez installer Crowdsec qui va vous permettre de bloquer une partie du trafic malveillant.

BMAX Mini PC 16 Go DDR4 512 Go SSD

NiPoGi AK1 Plus

TAPO Prise connectée P110




Laisser un commentaire