Reverse proxy et app companion

Bonjour à tous,

Je rencontre un problème étrange de connexion avec l’app companion que je préssens associé a un certificat, mais je n’arrive pas à le résoudre depuis plusieurs jours :

J’accède depuis plusieurs années a HA en externe via duckdns sans problème (VM HAOS sur proxmox et livebox).

Je me suis décidé il y a quelques jours a configurer un reverse proxy sur mon nas Synology pour dépendre un peu moins d’un service externe.

Pas de soucis pour le configurer, j’accède bien depuis un browser sur PC en wifi a l’extérieur de mon domicile à HA via la nouvelle adresse configurée, a savoir une adresse en https://ha.xxxx.synology.me a la place de l’adresse en https://xxxx.duckdns.org:8123

J’en viens directement à mon problème : ce reverse proxy marche dans absolument TOUTES les configurations de connexion externe que j’ai pu tester (détail ci-dessous), mais pas en 4g/5g avec l’app companion android, a savoir :

  • wifi hors de mon domicile sur browser PC : OK
  • wifi hors de mon domicile sur app companion : OK
  • 4g sur browser smartphone : OK
  • wifi sur browser PC en Access Point sur la 4g du smartphone : OK

MAIS

  • 4g sur app companion sur 2 smartphones différents : NOK

Je ne pige pas pourquoi ça ne fonctionne pas, un problème de certificat https pour l’app? Mais dans ce cas pourquoi seulement en 4g et pas pour les accès wifi ?

Merci a tous de votre aide, je sèche complètement là…

Salut

Je n’utilise ni duckdns, ni Synology. Mais je ne comprends pas ta démarche…

Duckdns ou Synology, c’est pareil, tu dépends toujours d’un service externe… :thinking:
En utilisant un nom de domaine Synology, tu dépends toujours d’un service externe.
Donc tu te compliques la vie pour rien si ça fonctionne déjà.

1 « J'aime »

Je souhaite rationaliser les accès externes avec d’autres services passant déjà par le reverse proxy, et j’ai un peu plus confiance en syno qu’en duckdns pour assurer de la continuité de service (question de goûts ?).

Et de plus, sans animosité, la démarche de rester avec ce qui marche sans comprendre pourquoi ça ne marche pas ne me satisfait pas trop…

Je comprends mieux ta démarche.

En analysant, je pense que c’est l’activité principale de DuckDNS, contrairement à Synology. De plus, les principaux clients de DuckDNS sont des entreprises, contrairement à Synology pour ce service. Donc j’aurais plus confiance en DuckDNS pour ce service. Mais dans les 2 cas, ça reste un service gratuit. Avec une solution payante, tu as sûrement un meilleur SLA.
Mais effectivement, c’est un choix personnel.

Comment as-tu configuré les informations de connexion dans l’application (url de connexion, interne, ssid) ?
Tu as rajouté un serveur ou modifié l’existant ?

As-tu essayé de vider le cache de l’application ?

Url externe = mon url duckdns, que j’ai remplacée par mon url de reverse proxy

SSID inchangés.

Pas d’URL interne.

J’ai d’abord changé mon url externe dans le serveur existant, ça marche bien en wifi (externe a mon réseau local je rappelle) mais pas en 4g, et j’ai ensuite créé un autre serveur : idem, ça marche en wifi mais pas en 4g.

J’ai vidé le cache et rien n’a changé.

J’ai l’impression que les certificats configurés pour duckdns bloquent la connexion avec le reverse proxy syno depuis l’app companion, ou qu’il y a un autre problème avec le https, mais ma compréhension de cet aspect ne me permet pas de mettre le doigt dessus…

Je suis retourné à ma config duckdns en attendant, mais je ne suis pas satisfait de ne pas comprendre…

Si ça peut aider quelq’un a comprendre j’ai ça dans mon configuration.yaml, et si je mets en commentaire les 2 lignes ssl mon adresse de reverse proxy ne fonctionne plus (message d’erreur du syno) :

http:
  ssl_certificate: /ssl/fullchain.pem
  ssl_key: /ssl/privkey.pem
  use_x_forwarded_for: true
  trusted_proxies: 192.168.1.17
  ip_ban_enabled: false

homeassistant:
  internal_url: "https://192.168.1.54:8123/"

Il me manque des choses ? Ou je peux remplacer ce qu’il y a au bout des chemins ssl par autre chose ?

Tu nous a dit que si tu tapes ton HA depuis l’extérieur en HTTPS depuis ton nom de domaine de ton reverse proxy sur le port 443 cela fonctionne
Avec une URL du typehttps://ha.mondomaine.fr sans port 8123 ?
Si c’est le cas c’est exactement la même URL sans 8123 que tu as utilisé dans companion ?
Pourrions nous voir ta configuré companion ?

Par contre pour ce qui est de Synology hors de question de dépendre de cette marque de nas surtout avec proxmox tubas tout pour monter ton reverse proxy a base de nginx proxy manager, swag, caddy, traeffiik… Et maîtriser la chaine de bout en bout

Oui c’est bien ça, mon adresse via le reverse proxy est bien en https://ha.xxx.synology.me, avec redirection du port 443 sur mon syno et l’URL qui pointe vers le port 8123 de ma VM HA, et c’est bien exactement cet url que je rentre dans le companion.

Avant le reverse proxy, je devais bien préciser le port avec duckdns : https://xxx.duckdns.org:8123.

L’URL du reverse proxy fonctionne bien partout, sauf dans le companion en accès externe 4g (ça marche en externe sur un autre wifi ou en 4g dans un browser).

Pour ma curiosité, quand tu parles d’utiliser nginx sous proxmox, ça impose de prendre quand même un nom de domaine externe, non ?

Sûrement parce que dans l’app companion tu a configuré l’URL Interne + le Wifi SSId, de ce fait il y accède via l’URL interne (en http).

« Normalement », l’accès en interne peut se faire en http uniquement, pas besoin du https

Je suppose que dans HA, il y a le module « Let’s Encrypt » qui génère un certificat pour le côté https ? Mais il est inutile dans ce cas.
Si je peux me permettre, la configuration devrait être la suivante :

  • en interne, on accède à HA via l’adresse http://FQDN:8123 ou http://ADRESSEIP:8123
  • en externe, accès via l’URL « syno », à travers un reverse proxy qui redirige vers l’URL interne cité juste avant

Le SSL ne doit pas être configuré sur HA

Désinstalle et réinstalle ton application ou vide son cache c’est effectivement très étrange et tu n’as pas de message d’erreur dans ton application

Pour faire du ssl via let’s encrypt tu aura toujours besoin d’un nom de domaine où payant via OVH infomaniak scaleway ou autres provider ou gratuit via par exemple duckdns

@chpego

Sûrement parce que dans l’app companion tu a configuré l’URL Interne + le Wifi SSId, de ce fait il y accède via l’URL interne (en http).

Non, je n’ai pas configuré d’adresse interne dans l’app companion.

@ddfdom

Désinstalle et réinstalle ton application ou vide son cache c’est effectivement très étrange et tu n’as pas de message d’erreur dans ton application

J’ai installé l’app companion sur un smartphone qui ne l’avais jamais vue, et configuré directement le serveur avec l’url du reverse proxy : ça ne marche pas en 4G, mais ça marche en wifi et dans le browser en 4G.
Ca ne vient pas de l’app ou de certificats stockés dans le smartphone, ça vient bien de la config HA.

J’ai désactivé l’addon duckdns dans HA, puis commenté les 2 lignes SSL sous http dans le configuration.yaml, et mon HA n’était plus du tout accessible de l’extérieur avec le reverse proxy.

si c’etait le cas ça serait aussi le cas avec ton browser
tu n’as pas configuré d’internal_url et external_url dans ton configuration.yaml ?

Oui normal, parce que le internal_url et external_url sont mal configurés.
Il suffit pas de désactiver l’addon duckdns, et de dé-commenter les 2 lignes SSL, il faut re paramétrer internal_url, qui ne devrait pas être en https. Concernant le external_url il doit ressembler à l’adresse https://ha.xxxx.synology.me

Merci de votre aide mais je vais abandonner, je ne trouve pas d’explication à ce qui ne marche pas et je n’ai plus rien à tester :

J’ai fait les opérations suivantes :

  • desactivation addon duckdns
  • suppression des lignes ssl dans le configuration yaml
  • ajout en external url de mon adresse de reverse proxy (https)
  • passage l’internal url en http
  • création d’un nouveau serveur dans l’app avec ces paramètres

Resultat, l’adresse reverse proxy fonctionne :

  • en local (wifi) dans l’app
  • en local (wifi) dans le navigateur sur le tel et l’ordi, même en supprimant l’url interne dans la config du serveur dans l’app companion
  • hors réseau local (en wifi hors domicile) sur le navigateur
  • hors réseau sur wifi externe sur l’appli companion
    mais ça ne fonctionne toujours pas en 4g sur l’appli companion…

Ça ne vient pas d’un vieux certificat sur le smartphone, j’ai testé également en fresh install sur un smartphone n’ayant jamais connu HA.

=> Je jette l’éponge

Ke te conseille de repartir de zéro supprimer tous les addons lets encrypt, duckdns, nginx proxy ssl de faire le ménage dans ton fichier de configuration.yaml de toutes les configurations que tu as faites (en gardant un backup de ce fichier)
Un bon reboot
Et pars sur un proxy en dehors de HA qui ne viendra pas pourrir ton installation
Je te conseille nginx proxy manager en docker si tu possèdes une autre machine ou l’installer (prends très peu de ressources)

En fait, c’est peut être l’application qui n’arrive pas avec le nom de domaine synology.me :unamused:

Le reverse proxy de Synology est vraiment pas terrible enfin surtout l’intégration letsencrypt