Table des matières
Avoir le logiciel domotique Home Assistant au coeur de son installation, c’est avoir la certitude d’une domotique haut de gamme et un des plus puissantes possibles. On est en effet à l’opposé des “jouets” que peuvent être les assistants vocaux comme Google Home ou Amazon Alexa. Ces assistants sont certes très pratiques pour interagir par la voix et s’améliorent d’années en années mais ils sont encore loin d’atteindre la puissance d’une vraie box domotique comme Home Assistant.
Avoir Home Assistant qui ne fonctionnerait que lorsqu’on est connecté, chez soi, à son réseau local, ce serait se priver inutilement. Rien de mieux, en effet, que de pouvoir piloter Home Assistant depuis l’extérieur, au travers d’une belle URL et via un protocole sécurisé HTTPS (avec des certificats SSL). C’est aussi, par ailleurs, un pré-requis si l’on souhaite interconnecter Home Assistant avec les assistants vocaux (Google Home, Amazon Alexa) pour bénéficier de commandes vocales.
Dans l’environnement Home Assistant, Nabu Casa propose un service payant qui permet un accès externe à son instance Home Assistant et qui sert, aussi, à financer les développeurs et l’infrastructure Cloud. A l’heure d’écrire cet article, soit fin 2024, le prix est de 75 euros par an. Ce n’est pas un montant exagéré mais la curiosité intellectuelle m’a poussé à tenter de configurer cela par moi-même. J’ai donc choisi une solution en réutilisant un de mes domaines OVH (à 2,99 euros par an) et en utilisant les tunnels gratuits de Cloudflare pour une sécurisation maximale.
Un nom de domaine chez OVH
L’achat du nom de domaine OVH est facile: https://www.ovh.com/fr/domaines/. Le prix varie selon l’extension du nom de domaine (.be, .fr, .com,…..). Les .ovh sont souvent les moins chers. Il y a bien entendu moyen de trouver des noms de domaines gratuits (chez son fournisseur internet par exemple) mais, pour 2,99 euros, je préfère avoir l’expertise OVH.
Une fois acheté, le domaine est disponible après quelques dizaines de minutes. Pour la clarté de cet article, supposons que j’aie acheté le domaine mondomaine.ovh et que je souhaite utiliser l’URL homeassistant.mondomaine.ovh pour me connecter à mon instance Home Assistant.
Cloudfare
Cloudflare est un service qui améliore la sécurité, la performance et la disponibilité de son instance Home Assistant lorsqu’elle est accessible depuis Internet. Les principaux avantages de Cloudflare sont :
- Sécurisation avec SSL/TLS : Cloudflare fournit un certificat SSL/TLS gratuit, ce qui permet de sécuriser les connexions entre le navigateur et Home Assistant en chiffrant les données. Cela protège les informations personnelles contre les attaques de type “man-in-the-middle”.
- Protection contre les attaques DDoS (Déni de Service Distribué) : Cloudflare protège l’instance de Home Assistant contre les attaques DDoS en filtrant les trafics malveillants avant qu’ils n’atteignent l’instance de Home Assistant
- Optimisation des performances : Cloudflare améliore la performance de son instance Home Assistant en utilisant son réseau de serveurs répartis dans le monde entier (CDN), ce qui permet de réduire la latence et d’accélérer le chargement des pages,
- Accès à travers un domaine personnalisé : On peut utiliser un domaine personnalisé, comme celui acheté chez OVH, pour accéder à son instance Home Assistant, tout en bénéficiant de la gestion de DNS de Cloudflare.
- Accès conditionnel (firewall) : Cloudflare propose des fonctionnalités avancées de gestion des accès, comme la mise en place de règles de pare-feu pour limiter l’accès à l’instance Home Assistant. Par exemple, on peut restreindre l’accès à l’interface d’administration à certains pays ou adresses IP spécifiques.
- Protection de l’adresse IP de son instance Home Assistant : l’adresse IP n’est connue que de Cloudflare.
Comment utiliser Cloudflare et Home Assistant ?
Un point important à savoir, c’est que l’utilisation gratuite de Cloudflare n’est possible qu’avec le nom de domaine en entier. Il n’est pas possible de configurer Cloudflare uniquement pour un seul des sous-domaines comme homeassistant.mondomaine.ovh. Ce sera donc tout le domaine mondomaine.ovh (et tous ses sous-domaines dont homeassistant.mondomaine.ovh) ou rien.
Créer un compte sur Cloudflare
On débute avec la création d’un compte sur Cloudflare.
On communique à Cloudflare le nom de domaine OVH que l’on a acheté. Cela sera donc de la forme mondomain.ovh et non pas un sous-domaine comme homeassistant.mondomaine.ovh.
On choisit le plan, le plus adapté à ses besoins. Dans mon cas, le plan FREE est bien suffisant.
Configurer les entrées DNS sur Cloudflare
L’étape suivante consiste à configurer les entrées DNS sur Cloudflare. Le plus facile, surtout quand on n’est pas un spécialiste, est de cliquer sur le lien “Quick Scan”.
Cloudflare récupère alors toutes les entrées DNS existantes.
Parmi ce qui a été récupéré par Cloudflare sur les DNS d’OVH, il faut faire un peu de ménage. Il est important, à ce stade, d’effacer les éventuels sous-domaines qui auraient été récupérés car ces derniers seront ajoutés plus tard, par Cloudflare, lors de la création des tunnels.
Voici ce que cela donne pour mon domaine .ovh, une fois la configuration terminée:
Il n’y a qu’un seul record de type A (la première ligne). La colonne name contient “mondomaine.ovh” soit le domaine acheté chez OVH. Dans la colonne Content, on trouve l’adresse IP publique de son routeur internet (et donc pas l’adresse IP du réseau local commençant par 192……). On indique donc ici, par ce record, que Cloudflare doit rediriger le domaine acheté chez OVH vers son routeur internet (puisque l’instance Home Assistant se trouve sur le réseau local). Ce record n’étant connu que par Cloudflare, l’adresse IP de son routeur internet n’est pas exposée et ce dernier s’en trouve protégé.
Les deux entrées suivantes, de type CNAME, seront créées automatiquement par Cloudflare lors de la création des tunnels. Un des tunnels sera créé par Home Assistant lors de l’utilisation de l’add-on (voir ci-dessous). Dans la colonne Name, on lit cette fois le sous-domaine utilisé pour se connecter à Home Assistant (par exemple homeassistant.mondomaine.ovh). Le second tunnel a été créé manuellement, avec un autre sous-domaine et est utilisé pour accéder à une autre box domotique : Jeedom.
La troisième entrée de type CNAME sert à rediriger le trafic de www.mondomaine.ovh vers mondomaine.ovh.
Les autres entrées dépendent de la configuration de chacun. On trouve, ici, les entrées pour les emails de la messagerie OVH.
Changer les Nameservers sur OVH
Cloudflare demande ensuite, dans la procédure d’installation, de mettre à jour deux nameservers.
Ces nameservers doivent être introduits dans la zone DNS chez OVH. Il faut en effet faire comprendre, à OVH, que le domaine qu’on a acheté chez eux doit être redirigé vers Cloudflare puisque c’est Cloudflare qui se chargera, maintenant, de rediriger le trafic (autorisé par Cloudflare) vers l’instance de Home Assistant.
On se connecte donc sur la console d’administration de son domaine chez OVH. On serait tenté d’aller dans l’onglet “DNS zone” et d’y ajouter deux entrées de type NS avec, au niveau du champ ‘target’, les nameserveurs de Cloudflare. Mais OVH ne permet pas cela, grisant le bouton qui permet de sauver l’entrée DNS pour la créer.
C’est dans l’onglet “DNS servers” que la configuration doit se faire
Il faut cliquer sur “Modify DNS servers”, choisir l’option “Use my own DNS” et introduire les deux nameserveurs de Cloudflare. OVH demande une confirmation
On voit ensuite que OVH traite la mise à jour, effaçant les deux serveurs de OVH et ajoutant les deux serveurs de Cloudflare:
Dans l’onglet “DNS Zone” d’OVH, on prend bien soin aussi d’effacer les entrées de type A s’il y en a. On ne doit pas non plus retrouver de configuration pour des sous-domaines. S’il y a des entrées pour les sous-domaines, il faut aussi les supprimer car les sous-domaines seront gérés par Cloudflare, via les tunnels.
La configuration dans l’onglet “DNS Zone” de OVH doit donc ressembler à ceci :
J’étais un peu étonné par les deux dernières entrées de type NS pointant vers les DNS de OVH. J’aurais pensé les voir pointer vers les les DNS de Cloudflare (qu’on a ajouté dans l’onglet “DNS Servers”) mais ce n’est pas le cas. J’ai essayé de les supprimer mais elles sont revenues. De toute façon, peu importe puisque cela n’a pas posé de soucis par la suite.
Installer l’add-on pour Cloudflared dans Home Assistant
On se connecte maintenant à son instance Home Assistant pour la suite de la procédure.
Aller dans Paramètres / Modules Complémentaires / “BOUTIQUE DES MODULES COMPLEMENTAIRES”
En haut à droit, cliquer sur les trois petits points verticaux et choisir “Dépôts”.
Mentionner l’adresse du module complémentaire Cloudflared à savoir https://github.com/brenner-tobias/ha-addons et cliquer sur “AJOUTER” et puis “FERMER”
Rafraîchir la page et cliquer sur le module “Cloudflared”
Cliquer sur “INSTALLER”. Une fois installé, il est recommandé d’activer les trois options “Lancer au démarrage”, “Chien de garde” et “Mise à jour automatique”. Cliquer ensuite sur “DEMARRER”
Autoriser les proxy de Cloudflare à se connecter à Home Assistant
A cette étape, on va configurer le fichier configuration.yaml à l’aide du module complémentaire “File editor” (qui avait déjà été installé dans Home Assistant).
Par défaut, Home Assistant bloque les accès à travers les serveurs proxys, dont ceux de Cloudflare. Pour lever ce blocage, il faut ajouter les lignes suivantes dans le fichier configuration.yaml
http:
use_x_forwarded_for: true
trusted_proxies:
– 172.30.33.0/24 # You may also provide the subnet mask
On redémarre Home Assistant pour être sûr que cette configuration soit bien chargée.
Configurer le nom de sous-domaine
On va maintenant indiquer, dans le module complémentaire, quel est le nom de sous-domaine qui va être utilisé pour se connecter à Home Assistant.
Aller dans Paramètres / Modules Complémentaires / Cloudflared
Cliquer sur l’onglet “Configuration”. Dans la première zone de texte, indiquer le nom de sous-domaine à utiliser. Par exemple, homeassistant.mondomaine.ovh
On clique ensuite sur l’onglet “Info” et on clique sur le bouton “DEMARRER”
Dans l’onglet “Journal”, dans la liste des événements, il y a une URL commençant par https://dash.cloudflare.com/…. qu’il faut copier et coller dans un navigateur internet.
Cette URL conduit au site Cloudflare où l’on doit choisir le tunnel, qui a été créé par l’add-on Cloudflared de Home Assistant
Après avoir cliqué sur le tunnel, on l’autorise via le bouton “Authorize”
Si tout se passe bien, un message “Success” est affiché et on peut commencer à utiliser le tunnel. On peut maintenant se connecter à Home Assistant à partir de son sous-domaine OVH selon ce que l’on a configuré.
On remarque aussi, si l’on retourne dans l’onglet DNS sur Cloudflare, qu’une entrée de type CNAME a été créée pour le tunnel.
Via son compte Cloudflare, on peut aussi se connecter au tableau de bord Cloudflare Zero Trust : https://one.dash.cloudflare.com/. On y voit plus d’informations sur le tunnel. Il se peut que Cloudflare demande que le tunnel soit migré pour être modifiable. J’ai accepté cette migration et cela s’est fait sans le moindre souci.
On trouve ici deux tunnels : celui créé par Home Assistant lors de l’installation décrite dans cet article et un second que j’ai créé manuellement pour la box domotique Jeedom (via un autre sous-domaine).
Si on édite le tunnel créé pour Home Assistant et qu’on clique sur “Public Hostname”, on voit alors que le sous-domaine OVH utilisé pour Home Assistant (celui indiqué lors de l’installation via le module complémentaire Cloudflared dans Home Assistant) pointe vers l’adresse, sur le réseau local, de l’instance de Home Assistant (qui est, par défaut, http://homeassistant:8123)
La dernière ligne, http_status:404 peut faire peur mais ce n’est en rien une erreur et il ne faut donc pas s’en inquiéter.
Ouverture des ports sur le routeur
On aurait tendance à penser qu’il faut encore ouvrir plusieurs ports sur son routeur internet pour que cela fonctionne. Mais non, pas besoin. Cela est rendu possible grâce au tunnel chiffré entre Home Assistant et le datacenter de Cloudflare le plus proche. Ce tunnel est une connexion privée entre son instance de Home Assistant et Cloudflare. Le tunnel fait en sorte que seul le trafic transitant par Cloudflare puisse atteindre Home Assistant. Un tunnel peut être vu comme une boîte postale virtuelle qui permet à quelqu’un d’envoyer des paquets sans connaître la véritable adresse du destinataire. Seul Cloudflare connaît l’instance Home Assistant et peut communiquer avec lui. Pour le reste du monde Internet, c’est comme si le serveur n’était pas là.
Conclusions
Pour 2,99 euros par an, on dispose maintenant d’un nom de domaine OVH et d’un accès sécurisé par Cloudflare. On peut l’utiliser pour un accès externe à Home Assistant mais aussi pour plein d’autres choses (comme par exemple un accès externe à une seconde box domotique, à un NAS,…). En plus du nom de domaine OVH, il y la possibilité d’activer un petit hébergement gratuit de 10 Mo et une adresse email personnelle.
Laisser un commentaire