Le protocole HTTPS vous permet d’avoir une connexion sécurisée entre Home Assistant (votre serveur) et le navigateur sur lequel vous êtes connecté (votre client) en cryptant les données qui transitent entre eux. L’utilisation de ce protocole devient de plus en plus indispensable et les navigateurs Web commencent à refuser de se connecter à des sites en HTTP.
Si vous souhaitez utiliser un nom de domaine (NDD) Freebox et le fournisseur de certificats Let’s Encrypt, vous pouvez vous diriger vers l’article Accès de l’extérieur en HTTPS avec un NDD Freebox et Let’s Encrypt, et celui-ci pour DuckDns, nous allons voir ici comment utiliser un autre solution via l’add-on Nginx Proxy Manager.
Niveau requis
- Débutant / Intermédiaire / Avancé
Matériels nécessaires / Matériels utilisés / Prérequis
- Version de HA : v2020.12.1,
- Avoir un nom de domaine que je noterai
<mon-ndd>
dans la suite de ce tutoriel, - connaitre le modèle de son routeur.
L’architecture
Voici un schéma (merci à @Pozzi ) pour expliquer le flux que nous allons mettre en place.
Configuration de Home Assistant
Nettoyage de la configuration
Il faut vérifier qu’aucune autre installation de certificat ne viendra en conflit avec l’installation que nous allons mettre en place. Nous allons vérifier les fichiers de configurations YAML via File Editor (voir Installer File Editor et modifier vos fichiers de configuration)
Via le Menu latéral
> File Editor
, choisissez le fichier config/configuration.yaml
Si vous voyez les lignes surlignées en bleu, commentez les en ajoutant en début de ligne le caractère #
:
Si vous avez fait des modifications dans le fichier configuration.yaml
, cliquez sur le bouton sauvegarder en haut à droite
Pour être sûr que votre configuration est toujours valide, dans le Menu latéral
> Configuration
> Contrôle du serveur
> VERIFIER LA CONFIGURATION
.
Accès interne
Comme on a pu le voir dans le schéma précédent, il faut pouvoir accéder à Home Assistant via l’URL suivante :
http://<ip_hote_ha>:8123
<ip_hote_ha>
étant une adresse IP interne sous la forme 192.168.x.x
.
Pour pouvoir accéder à Home Assistant via cette URL, il faut la configurer dans menu latéral
> Configuration
> Général
> URL interne
puis cliquez sur ENREGISTRER
.
Vérifiez que vous avez accès à votre Home Assistant en ouvrant votre navigateur et en renseignant dans la barre d’adresse :
http://<ip_hote_ha>:8123
En remplaçant <ip_hote_ha>
par l’adresse IP du serveur hébergeant votre Home Assistant.
Renseigner l’URL externe n’est pas obligatoire puisque c’est Nginx qui sera le point d’entrée du flux HTTPS.
Prise en compte des modifications
Dans le Menu latéral
> Configuration
> Contrôle du serveur
> VERIFIER LA CONFIGURATION
.
Si la configuration est valide, cliquez sur REDEMARRER
Routage des ports (NAT)
En suivant le tutoriel Redirection des ports, ajouter les redirections :
- vers le port 80 de votre hôte de Home Assistant
- vers le port 443 de votre hôte de Home Assistant
Installation
L’installation est assez simple, si vous maitrisez la langue de Shakespeare, vous pouvez suivre ce tutoriel.
Sinon je vais vous détailler la procédure d’installation.
MariaDB
Il faut installer MariaDB si vous ne l’aviez pas déjà pour autre chose. C’est un prérequis à l’installation de Nginx Proxy Manager (sa configuration est sauvegardée dans la Base de données MariaDB).
Suivez le tutoriel Ajouter une extension Officielle ou Non Officielle sur Home Assistant en installant un add-on Officiel et en remplaçant Mosquitto Broker
par MariaDB
.
Avant de cliquer sur START
, n’oubliez pas de modifier le utilisateur / mot de passe dans la configuration de l’add-on MariaDB en cliquant sur l’onglet Configuration
de cet add-on.
Une fois configuré, cliquez sur SAVE
puis revenez sur l’onglet Info
pour cliquez sur START
.
Vérifiez les logs en cliquant sur l’onglet Logs
, pour être sûr que tout c’est bien passé. N’hésitez pas à cliquer sur REFRESH
en bas à gauche.
Nginx Proxy Manager
Il faut installer le nouvel add-on Nginx Proxy Manager.
Procédez de la même manière que précédemment avec MariaDB.
Aucune configuration n’est nécessaire pour cet add-on, donc une fois installé, vous pouvez cliquez sur START
.
Vérifiez bien évidemment les logs pour être sûr que tout se déroule bien.
Une fois installé, revenez sur l’onglet Info
, puis cliquez sur OPEN WEB UI
.
Renseignez le compte admin@example.com
/ changeme
pour votre 1ère connexion.
Il vous sera demandé de renseigner le compte Admin puis un nouveau mot de passe (surtout ne l’oubliez pas !).
Configuration
Le nom de domaine
Pour accéder à l’interface de Nginx Proxy Manager, il faut soit :
- passer par
Supervisor
>Dashboard
>Nginx Proxy Manager
>OPEN WEB UI
- si ça ne fonctionne pas, essayez via l’URL http://ip_hote_ha:81/login
Renseignez le compte et mot de passe Admin que vous avez mis à jour dans le précédent paragraphe Installation Nginx Proxy Manager.
Dans l’interface de Nginx Proxy Manager, cliquez dans le menu sur Hosts
Puis Proxy Hosts
Puis sur Add Proxy Host
.
Dans la nouvelle fenêtre New Proxy Host
, renseignez comme suit :
- Domaine Names : le nom de domaine que vous avez
<mon-ndd>
, ne pas oubliez de cliquer suradd <mon-ndd>
- Scheme : http
- Forward Hostname / IP : l’IP de l’hôte de Home Assistant (voir URL Interne)
- Forward Port : 8123
- Websockets Support : coché
Cliquez sur SAVE
Testez si vous pouvez accéder à votre Home Assistant via votre nom de domaine en HTTP en cliquant sur le nom de votre domaine dans la colonne SOURCE
.
Le passage en HTTPS
Si vous pouvez vous connecter à votre Home Assistant via votre nom de domaine, vous pouvez passer à la suite.
Nous allons maintenant passez votre Home Assistant en HTTPS en cliquant sur les 3 petits points complètement à droite sur la ligne de votre SOURCE
.
Cliquez sur Edit
,
puis sur l’onglet SSL
, choisissez Request a new SSL Certificat
dans SSL Certificate
puis cochez Force SSL
, activez I Agree ...
puis Save
.
Let’s Encrypt va vous fournir un certificat sur votre Home Assistant.
Nettoyage
La redirection du port 80 n’étant plus nécessaire, il est bon de la supprimer.
Depuis la 2021.7
Il est maintenant nécessaire d’ajouter des clés dans la configuration de HA afin d’autoriser l’utilisation d’un reverse proxy.
Dans le fichier de configuration de HA configuration.yaml
ajouter :
#configuration.yaml
[...]
http: #si cette balise n'existe pas, ajoutez la, sinon ajouter seulement la suite (pas de duplication)
use_x_forwarded_for: true
trusted_proxies:
- 172.18.0.1
[...]
Si vous avez du mal trouver l’@ip à renseigner, procédez comme suit :
- Renseigner l’adresse
10.0.0.1
ou172.16.0.1
ou192.168.1.1
Ces adresses correspondent aux premières @ip privées - Assurez-vous d’avoir accès au log de HA
home-assistant.log
- Une fois le reverse proxy en fonctionnement, redémarrez HA
- Accédez au fichier de log
home-assistant.log
- Vous verrez apparaitre plusieurs lignes indiquant depuis quelle @ip le reverse proxy est hébergé :
2021-07-10 23:46:36 ERROR (MainThread) [homeassistant.components.http.forwarded] Received X-Forwarded-For header from an untrusted proxy 172.18.0.1
- Remplacer l’@IP dans le fichier de configuration par celle que HA vous indique
- Redémarrez HA
Voilà, c’est fini
Vous pouvez désormais accéder à votre Home Assistant via https://<mon-ndd>
et ce, depuis vos navigateurs, comme sur Home Assistant Companion (en modifiant l’URL dans Configuration de l'application
> URL de Home Assistant
).
Une question, un problème
Remerciement(s)
Annexes
Les sources
- Installer File Editor et modifier vos fichiers de configuration
- Accéder à Home Assistant depuis l’extérieur avec l’extension DuckDNS
- Accès de l’extérieur en HTTPS avec un NDD Freebox et Let’s Encrypt.
- Redirection des ports
- MariaDB
- Nginx Proxy Manager
- Ajouter une extension Officielle ou Non Officielle sur Home Assistant.
- Home Assistant Companion
Suivi des modifications
-
10/07/2021 : Ajout des clés
use_x_forwarded_for
ettrusted_proxies
nécessaire depuis la 2021.7 @Clemalex - 30/01/2021 : Passage en article officiel ( ) @Sylvain_G
- 15/01/2021 : Ajout du schéma de l’architecture @Sylvain_G
- 30/12/2020 : Ajout lien Home Assistant Companion & chapitre Nettoyage, Mise à jour des sources @Sylvain_G
- 29/12/2020 : Initialisation de l’article @Sylvain_G