Accès interface web appli externe dans Yunohost

Bonjour à tous,

D’abord, je viens de découvrir yunohost et c’est un super produit, cependant je me pose une question concernant l’intégration d’interface WEB tiers dans Yunohost.

Mon Yunohost est installée sur une VM sur un ESX. je dispose d’une IP publique qui me redirige vers un reverse proxy (NGINX) qui lui même redirige vers ma VM Yunohost, en fonction du nom de domaine (yunohost.mondomaine.tld), tout cela fonctionne très bien.

Sur mon ESX j’ai d’autres VM qui fournissent un service WEB (OpenVZ, Plex, Firewall…), dans l’idée je souhaiterais intégrer les interfaces WEB de ces services dans une app Yunohost, afin d’y accèder depuis l’interface de Yunohost, et seulement depuis yunohost.

En résumé je voudrais par exemple pouvoir accéder à l’interface web de mon firewall qui se trouve sur l’adresse 192.168.1.254, depuis une app sur le yunohost. Mais je ne veux pas que l’interface WEB de mon firewall soit directement accessible depuis l’exterieur sans se connecter à Yunohost.

Je ne sais pas si ma demande est réalisable, j’ai déjà cherché sur le forum un équivalent j’ai trouvé un poste qui pourrait correpondre à ce que je veux faire; https://forum.yunohost.org/t/reverse-proxy-avec-nginx/207 mais cela ne fonctionne pas, j’ai aussi essayé avec l’app redirect_ynh, mais cela me renvoie vers la page de base de yunohost quand je clique sur l’app.

Voilà je ne sais pas si tout cela est très clair, mais en gros est-ce que je peux accéder à des interfaces web tierces de mon réseau local dans yunhost, et seulement dans celui ci ?

En vous remerciant par avance pour l’aide que vous pourrez m’apporter.:grinning:

Salut, tu tombes bien j’ai déjà packagé une application qui fait exactement ça :wink: https://github.com/scith/redirect_ynh
Je m’en sers pour rediriger des conteneurs docker privés (non accessibles ailleurs que sur localhost) mais j’ai entendu que d’autres s’en servaient par exemple pour rediriger des cozycloud sur leur réseau local.

Une seule limite, ton imagination … Non je déconne la plus grosse limite de mon app c’est NGINX. Certaines applications ne supportent pas de se faire “reverse proxer” ailleurs que sur la racine par exemple, et certaines requièrent des configurations nginx exotiques. Pour celles-ci tu devras donc sans doute bidouiller le fichier de conf nginx pour l’adapter à tes besoins.

Le fichier nginx de l’application Redirect est assez générique pour couvrir pas mal de besoins.

Salut,

De mon côté je pense à quelque chose comme ça si tu veux le faire à la main (pas testé, ce sont les grandes lignes)

  • Ajouter dans ton /etc/hosts de ton serveur Yunohost une ligne comme :
192.168.1.254 firewallServer
  • Créer un nouveau fichier de config dans nginx, par exemple firewall.conf (avec la commande nano /etc/nginx/conf.d/tonNomDeDomain.tld.d/firewall.conf, avec comme contenu quelque chose comme :
location /firewall {
     proxy_pass http://firewallServer/;
     proxy_set_header Host $host;
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
     proxy_set_header X-Forwarded-Proto $scheme;
}

(pas sur de savoir quels proxy_set_header il faut vraiment mettre)

  • par défaut, SSOwat n’autorisera uniquement l’accès à tonNomDeDomain.tld/firewall que si tu es identifié sur le SSO (sauf si tu dis explicitement dans /etc/ssowat/conf.json.persistent que l’accès est non protégé)

  • tester la config nginx avec nginx -t et reload avec service nginx reload

Est-ce que tu aurais une idée @scith pourquoi il retourne vers la “page de base” du coup ? :stuck_out_tongue:

Oups j’ai zappé cette ligne dans le message … :laughing:
On dirait qu’il trouve pas l’hôte en effet. J’avoue que je n’ai pas testé avec des IPs autres que localhost.
L’idée de @CaptainSqrt2 de faire une ligne dans /etc/hosts puis de reessayer Redirect avec ce nom est à essayer …

Si tu veux compléxifier les choses sinon tu peux faire un tunnel SSH vers un port libre de ton serveur YunoHost …

D’abord merci à vous pour les réponses.

J’ai essayé de créer une entrée dans le fichier hosts de type firewall --> 192.168.1.254 et ensuite de créer un fichier de configuration pour NGINX afin de faire la redirection vers la bonne page comme indiqué par CaptainSqrt2 , mais cela ne fonctionne pas, je me retrouve toujours sur la page d’accueil de yunohost.

J’ai ensuite réessayé avec l’app redirect_ynh avec le nom firewall. cela me redirige vers la page de login de mon firewall (PFSense), mais il n’y a aucune mise en forme juste une page blanche avec admin et mot de passe, lorsque je me loggue je retourne sur la page d’acceuil de yunohost. J’ai essayé avec d’autres pages (Plex, OpenVZ, Transmission…) selon les services cela renvoie sur la page d’accueil yunohost, ou sur une page non mise en forme.

Je ne maîtrise pas la notion de reverse proxy, mais je pense que la redirection se fait mais qu’il n’utilise pas le bon chemin pour accéder aux contenus des pages (CSS, images,…). Du coup mon problème doit simplement venir d’un rewrite d’URL pour enlever le /firewall de l’URL, ou quelque chose comme ça. Enfin c’est ce que je crois sans aucune maîtrise du sujet :yum:

Enfin voilà, si quelqu’un a une idée des proxy_set_header, d’un rewrite URL ou d’une autre façon de procéder, je lui en serais très reconnaissant. :smile:

Tu as accès à un sous-domaine ? (par exemple firewall.tondomaine.tld)
Tes applications plex/firewall/etc… sont sur quel chemin dans ton hôte ?

L’idéal serait de garder la même structure. Si tu as 192.168.1.254/firewall, alors garde /firewall, mais si c’est à la racine essaye d’installer à la racine d’un sous-domaine.

Je sais pas si je suis très clair …
Certaines apps peuvent aussi créer des soucis quand les liens vers la mise en forme ne sont pas bien codés en relatif. Tu peux afficher le code source de la page web qui s’affiche et regarder où est-ce qu’il va chercher le CSS et les images, ça aidera à identifier le problème.