Deux yunohost derrière une seule box?

Si ça fonctionne, c’est simplement les mails systèmes que je n’ai pas réussi à mettre en place sur le 2ème serveur, j’ai cherché un peu mais je n’ai pas insisté comme c’est un serveur de test.

Salut @Kimous

J’ai la meme config, un NPM sur un RPI et deux serveur derrière dont un autre RPI avec YNH et un serveur windows.

Les deux serveur sont accessible depuis l’extérieur mais seul les port 22, 80 et 443 sont ouvert.
Peut-tu me dire comment tu as fait pour ouvrir les autres? Je ne suis pas sur d’avoir compris.

  • Sur ton routeur tu redirige les ports 80 et 443 vers l’ip locale de ton NPM

  • Sur ton NPM tu créer d’abord X hotes proxy selon le nombre de serveur.
    Par exemple chez moi ca donne ca.

  • ensuite tu va bidouiller dans ta box pour rediriger les ports supplémentaires mais je ne suis pas sur si tu redirige sur l’ip locale de la machine cible ou bien si tu dirige de nouveau sur le proxy…

J’ai cru comprendre que la fonction stream permettait justement de rediriger les ports supplémentaire mais j’ai beau la config dans tout les sens… ca donne riendutoutdutout :face_with_diagonal_mouth:

Voila ce que j’ai fait sur la partie stream.

Trouvé!

Pour celle et ceux que cela intéresse il faut bien ajouter des règle de streams mais il faut aussi modif le fichier docker-compose.yml situé dans le dossier ~/nginx-proxy-manager#.

Sur mon routeur j’ai également rediriger les ports supplémentaire vers le proxy.

Ah et j’ai aussi désactiver le pare-feu sur le serveur windows… ca aide un peu lol

1 Like

Effectivement NPM fonctionne en front de Yunohost en :

  • Créant un Proxy Host pour le port 443
  • Créant des streams pour les autres port : 25, 587, 5222, …
  • Ouvrant tous ces ports dans le .yml du docker

Reste cependant des problématiques/questions :

  • Certificat(s) : Pour le proxy host en https, j’ai demandé a npm de créer un certificat auprès de let’s encrypt, ca fonctionne, mais ca me gène un peu, car de ce que je comprends, il y a du coup deux certificats pour le meme domaine, un coté yunohost et un autre coté npm. Doit-on copier les certificats + clés de yunohost dans npm et repasser le domaine yunohost en auto-signé ?

  • Diagnostic yunohost : Sans doute est-ce lié au point ci-dessus, mais le diagnostic yunohost nous alerte par ce message “Web : Le domaine xxx.ynh.fr est inaccessible en HTTP depuis l’exterieur.”. J’ai peur que ca gène le renouvellement automatique let’s encrypt de yunohost.

J’aimerai bien vos avis éclairés sur ces points SVP.

Salut,
j’ai eu une config un peu spéciale avec ce genre de problème, c’est peut-être lié ? Ou du moins ça peut peut-être aider à comprendre des configs postfix, car ce n’est pas tout à fait le même problème, l’idée est d’utiliser un mail de Gandi sur un des noms de domaine et garder les mails Yunohost pour les autres domaines:

1 Like

j’ai configuré Nginx Proxy Manager dans docker, j’ai une adresse IP locale proxy yunohost avec ssl chiffrons, tout fonctionne, mais toutes les 10 à 30 minutes, tous les domaines se déconnectent pendant 1 à 2 minutes à plusieurs reprises

Bonjour,

Je cherche une solution similaire pour mettre 2 VMs YNH sur Proxmox.

J’ai voulut essayer avec OPNsense et HAProxy, mais découvrant l’un et l’autre, ce n’est pas evident.

Je viens de voir et lire ce fil de discussion qui me semble plus facile connaissant déjà NPM.

Est ce qu’il est possible de laisser YNH gérer les ndd en faisant une wildcard depuis npm et rediriger*.ndd vers la VM ? Arrivera-t-il a ge’erer les sous domaine etc?

Je comprend bien que s’il y a oiverture des ports il faudra que je le fasse via stream.

Merci d’avance

1 Like

Il y a une PR dans ce sens ici, mais pas totalement terminée : feature: new global setting options to enable SNI-forward to external domains by alexAubin · Pull Request #1697 · YunoHost/yunohost · GitHub

1 Like

Le but est depuis un yunohost d’en gerer plusieurs ? Je crois avoirdeja vue ce lien surement sur les chatons.

Je regarde ca

le problème du proxy par un raspberry pi c’est le débit maximum drastiquement réduit par rapport à une connexion gigabit ethernet standard

Désolé d’ouvrir à nouveau ce sujet.

S’il y a un serveur qui fait SNI Proxy (très simple avec Nginx), il faut que les serveur derrière le SNI Proxy sachent qu’elles reçoivent les requêtes depuis un SNI Proxy.

Dans mon cas, seul l’IPv4 est concerné, parce qu’en IPv6, ça arrive directement sur les Yunohost sans passer par le reverse proxy (ce qui permet de valider/renouveler les certificats Let’s Encrypt par chacun des Yunhost)

Du coup, sur les configs web de chaque domaine des Yunohost, au niveau des lignes listen en IPv4, je dois ajouter un proxy_protocol

Edit : Ce fichier /usr/share/yunohost/conf/nginx/server.tpl.conf
Edit 2 : je posterai d’autres messages plus tard concernant les IP réelles

Au niveau de la configuration globale, il faudrait aussi ajouter proxy_header peut être comme ça mais je dois vérifier comment je l’ai fait. C’est pour qu’il y ait l’IP réelle dans les logs.

proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;

Ce qui m’importe, c’est que chaque Yunohost gère ses certificats Let’s Encrypt. le proxy SNI ne faisant que passe-plats, sans toucher à la couche SSL.
C’est un choix d’architecture.

Merci @Aleks de m’avoir redirige ici :slight_smile:

Du coup, j’ai cru voir que la PR n’a pas encore et merge dans dev, est ce que tu aurais une idee de quand est ce que ca sera fait ?

Mais du coup je me pose une question, dans les conversation j’ai pu lire que c’etait surtout le port 443 qui etait gere, mais dans mon cas j’ai besoin d’avoir un acces complet a tous les ports etant donne que chacun de mes yunohost est un nom de domaine a part entiere (+ les sous domaines) et par exemple chacun est un serveur mail et fait donc appel au port 25. Comment est ce que je peux gerer l’acces a ce port pour mes deux yunohost ?

Merci beaucoup pour votre aide !

La réponse courte : “tu peux pas” : ton routeur/box internet n’a aucun moyen de savoir si un paquet reçu sur un port arbitraire est à destination du domaine A / machine A ou du domaine B / machine B

La réponse longue : en fait on peut, pour certains protocoles, mais pas au niveau de la box/routeur, car la box/routeur ne fait que du routage TCP/IP. L’information de “à quel domain c’est destiné” est contenu dans les couches plus haut, en particulier pour HTTPS, ça s’appelle le SNI (serveur name indication) qui en fait contient le nom de domaine de manière non-chiffrée (bien que le reste du traffic soit confidentiel grâce à HTTPS/TLS). D’où le SNI-based forwarding dont il est question : la box transfert tout le traffic à une machine A sur le port 443, et si le SNI indique que le traffic est en fait pour le domaine B, alors on transfert tout à la machine B (tout ça sans avoir à déchiffrer le traffic, c’est l’intérêt du SNI-based forwarding)

Quid des autres protocoles ? Bon, pour le plain HTTP (port 80), on peut aussi faire du forwarding “classique” car de toute façon le traffic est en clair. Pour le mail ? C’est compliqué et je n’ai pas tous les éléments de réponse : normalement les conf postfix/dovecot forcent à ce que le traffic soit chiffré, là aussi avec TLS. Donc normalement on peut aussi faire du SNI-based forward sur les ports correspondants (et fun-fact, on peut même détourner nginx pour faire ça, car il peut aussi tout à fait écouter sur des ports arbitraires tels que les ports du mail tant que c’est juste pour faire passe-plat sur la couche TLS). Mais j’ai pas creusé la question plus que ça. Et les autres protocoles tels que XMPP et compagnie ? Aucune idée, mais la rule of thumb apriori c’est “si ça utilise TLS, y’a moyen de faire du SNI-based forward, sinon c’est mort et il faut forcément utiliser des ports différents pour distinguer les machines”

1 Like

sinon une des deux installations est accessible à la fois en IPv4 et en IPv6 quand l’autre n’est accessible qu’en IPv6
ou les deux full IPv6
ça résout le problème d’avoir une seule IPv4

Merci a tous les deux pour vos reponse :smiley:

Pour l’IPv6 j’y ai pense aussi le truc c’est que ceux n’ayant pas IPv6 ne peuvent pas acceder au serveur (ni meme envoyer des mails) et en France on a Bouygues qui ne supporte pas l’IPv6 typiquement…

Pour le redirection effectivement pour le TCP, j’ai vu qu’on pouvait utiliser le protocole TLS. Mais du coup pas de UDP, et ca, c’est triste.

Bref. Une derniere solution a laquelle je viens de penser (a vous de me dire si ca peut marcher) c’est un petit VPS avec un VPN, comme ca je recupere une “nouvelle” IP publique et du coup je devrais pouvoir host les deux serveurs en parallele
Qu’en dites vous ?

Il te faut simplement un Proxy SNI.
Nginx le fait très bien pour le web, mais, à ma connaissance, ne le fait pas pour les emails. Il est capable de gérer les emails , mais pas quand c’est chiffré.

HA-proxy, lui, c’est essentiellement son taf, du coup, il gère le Web (80 et 443), et tout ce qui a trait aux emails (25,143,993,465 etc.)

Pour l’IPv6, ce n’est pas un soucis, tu n’as pas besoin de faire Proxy SNI, sauf pour des services sans IPv6 pour lesquels tu voudrais quand même de l’IPv6.

Pour l’IPv4, il te faut du Proxy SNI, pas le choix, mais heureusement c’est simple.

Pour chaque application, genre XMPP, il faudra que tu te renseignes. S’il faut installer un service spécifique, ce n’est pas un soucis, ça n’écoute pas sur le même port que le Web ou les Emails.