Home Assistant via Reverse Proxy Synology

Après avoir cherché un moment, je partage l’astuce pour se connecter à Home Assistant via le reverse proxy d’un NAS Synology à partir de DSM 6.2.

Pour savoir à quoi sert un reverse proxy, vous pouvez aller voir la page Wikipedia. Dans mon cas il me sert uniquement d’intermédiaire de sécurité en étant le seul à connaitre le nom de domaine vers mon Home Assistant.

Voici la procédure :

  1. Tout d’abord il faut se connecter avec un compte admin et se rendre dans le Panneau de configuration image puis cliquer sur Portail des applications image .

  2. Aller sur l’onglet Proxy inversé

  3. Cliquer sur Créer et remplir les champs ainsi :

  • Description : On y met ce qu’on veut, par exemple Home Assistant

  • Source : C’est l’adresse avec laquelle on se connectera depuis internet pour acceder à Home Assitant
    Protocole : Le protocole avec lequel on se connectera et qu’on doit préalablement rediriger vers le NAS dans la configuration du routeur (HTTPS conseillé)
    Nom d’hôte : Il faut ajouter un nom de domaine au choix au nom de domaine principal (celui qui permet de se connecter au NAS). Par exemple si mon nom de domaine principal est toto.synology.me, je peux choisir ha.toto.synology.me.
    Port : Le port qui correspond au protocole, 80 pour HTTP et 443 pour HTTPS

  • Destination : C’est l’adresse du réseau local pour accéder à Home Assistant
    Protocole : Le protocole avec le lequel on se connecte en local à Home Assistant (HTTP ou HTTPS)
    Nom d’hôte : L’adresse IP locale de Home Assistant, par exemple 192.168.0.10
    Port : Le port qui correspond au protocole, 80 pour HTTP et 443 pour HTTPS

Si on s’arrête à cette étape comme j’ai toujours fait, ça ne fonctionnera pas, avec l’adresse externe on tombe sur un logo Home Assistant avec marqué « Retry » et ce message d’erreur dans le journal :


Je l’écris pour l’indexer :

Logger: homeassistant.components.http.ban
Source: components/http/ban.py:114
Integration: HTTP ([documentation](https://www.home-assistant.io/integrations/http), [issues](https://github.com/home-assistant/home-assistant/issues?q=is%3Aissue+is%3Aopen+label%3A%22integration%3A+http%22))
First occurred: 00:08:43 (12 occurrences)
Last logged: 14:49:06

* Login attempt or request with invalid authentication from 192.168.0.10 (192.168.0.10) (Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:82.0) Gecko/20100101 Firefox/82.0)
* Login attempt or request with invalid authentication from 192.168.0.10 (192.168.0.10) (Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:83.0) Gecko/20100101 Firefox/83.0)
  • L’étape primordiale est d’aller dans le 2e onglet En-tête personnalisé, cliquer sur la flêche de Créer et sélectionner WebSocket. Deux lignes vont automatiquement s’ajouter.
    image

  • Cliquer sur OK et le tour est joué, vous aurez accès à Home assistant avec l’adresse externe (https://ha.mon.domaine.fr pour mon exemple dans la copie d’écran)

Pour info j’ai trouvé l’astuce sur le site officiel (en anglais donc) ici.

4 J'aime

Merci d’avoir partagé.
Je me souviens avoir galéré aussi à l’époque avant de trouver sur le forum anglophone. D’ailleurs à l’époque il fallait modifier un fichier de conf du Synology à la main à l’aide d’un ssh root.

Effectivement avant DSM6.2 il faut le faire manuellement :
Avec un ssh en root éditer /usr/syno/share/nginx/Portal.mustache et ajouter les lignes suivantes dans la section Location :

        proxy_set_header        Upgrade             $http_upgrade;
        proxy_set_header        Connection          "upgrade";
        proxy_read_timeout      86400;

Puis redémarrer le démon NGINX:

sudo synoservicecfg --restart nginx

Merci pour le partage.

Bonsoir

J’ai tenté cette configuration sans succès. Y a t’il quelque chose à modifier dans le fichier configuration.yaml ?

Salut @crislaet
Non le reverse proxy ne dépend pas de la config Home Assistant donc rien à modifier dans le yaml.

Salut, j’ai la même configuration (Syno, sinon je suis chez Orange) - faut il faire des modifications sur ton serveur DNS ?

Merci

Bonjour @djtef

J’avais déjà commencé cette configuration avant de tomber sur ton topic.
J’ai un nom de domaine chez OVH, ou j’ai déjà fait un DynHost pour accéder a mon NAS ce qui fonctionne depuis des années.
nas.mondomain.fr.
J’ai ajouté un second dynhost sur OVH sous la forme assistant.nas.domain.fr

Config reverse proxy de DSM (j’ai bien entendu anonymiser l’URL). Je précise que j’ai bien les headers de configurés.


Config Hass de configuration.yaml

http:
    use_x_forwarded_for: true
    trusted_proxies:
        - 192.168.X.XX #IP NAS Synology

A chaque fois, j’arrive sur une page d’erreur de Syno. Une idée ? Le problème provient de ma config sur Hass ?

Une idée ?
Merci :slight_smile:

As-tu essayé sans cette configuration sur Hass ? Pour ma part je ne l’utilise pas et dans un réseau local … c’est une surprotection :wink:

Et as-tu définit les entêtes personnalisés ? … oups je n’ai rien dit, tu l’as précisé :slight_smile:

Merci de ta réponse.

J’ai bien les deux headers
Capture d’écran du 2021-02-16 13-59-15

Je vais enlever la config http de Hass ce soir en rentrant voir si ça change quelque chose.

Pour être sur, on est d’accord qu’il n’y a pas besoin que WebStation soit lancé pour que le reverse proxy fonctionne ?

Oui, WebStation est inutile.

@Darslan T’as quoi comme box ?
Perso avec la Livebox je peux pas accéder avec l’adresse publique depuis mon réseau local. T’as essayé d’y accéder depuis la 4G pour être sûr ?

Je viens de rentrer.
J’ai une box SFR.

Sur mon pc, connecté au même réseau local en wifi que le RPI, je peux accéder a mon adresse assistant.nas.mondomain.ovh
ça confirme au moins que le reverse proxy sur le NAS est opérationnel.

Depuis mon téléphone en 4G, ça ne fonctionne pas. J’arrive sur une page « Echec de la connexion sécurisée ». Il m’indique que mon certificat n’est pas valide alors que sur l’adresse de mon nas (nas.mondomain.ovh) il est bien validé par Let’s Encrypt.

Pourtant sur DSM, dans Sécurité->Certificat j’ai bien activé mon certificat pour mon url asssitant.nas.mondomain.ovh

Un problème de cache sur le navigateur de ton tel peut-être.

J’ai essayé en navigateur privé mais idem :confused:

Finalement c’est bon, il fallait accepter l’erreur de sécurité du certificat sur le téléphone.
Par contre j’aimerais bien résoudre le problème de certificat non validé.

Bonjour à tous,

J’essaie de mettre en place le reverse proxy. Sans HTTPS j’y arrive.: http://ha.mondomaine.com m’affiche bien HA. Par contre avec https://ha.mondomaine.com j’ai le message :

Ce site est inaccessible

ha.domaine.com a mis trop de temps à répondre.

Voila ma config :


J’ai bien activé les deux header également.

La différence par rapport au tuto c’est que j’ai créé un certificat Let’sEncrypt sur mon syno pour ce domaine et je ne peux pas le supprimer pour tester, la possibilité est grisée :

Merci d’avance pour vos lumières

Je me répond à moi même, je ne forwardais pas le bon port vers mon Syno 433 au lieu de 443 :unamused: