Proxmox yunohost box orange - pb redirection en boucle

bonjour,
J’ai installé yunohost sur une VM (192.168.1.43) sur un proxmox (192.168.1.39).

Si sur la livebox orange, je map le port 443 sur 192.168.1.43 ça marche à merveille. mais ce n’est pas ce que je veux, je dispose d’une seule adresse IP, je veux mapper le port 443 sur mon proxmox et utiliser nginx pour rediriger suivant le CNAME sur telle ou telle VM.

Dans mon cas, je redirige ecole.pmnc.fr sur yunohost (192.168.1.43), et ça marche pour atteindre l’application admin, je peux configurer, ajouter des utilisateurs des applications et tutti quanti.

En revanche, la connexion au portail part en boucle de redirections et finit par une 502 ou par revenir sur la page admin. Il doit manquer qq chose à ma configuration. Any help ?

ma configuration nginx sur proxmox est
server {
listen 443;
server_name ecole.pmnc.fr;
ssl on;
ssl_certificate /etc/pve/local/pve-ssl.pem
ssl_certificate_key /etc/pve/local/pve-ssl.key

proxy_http_version 1.1;
proxy_set_header X-Nginx-proxy true;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Host $host:$server_port;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection “upgrade”;

location / {
proxy_pass https://192.168.1.43/;
}
}

Salut, je pense que tu vas galérer si tu proxy ta VM depuis ton Proxmox. YunoHost gère tellement de proxy différents qu’il va difficilement accepter de se faire lui-même “proxyfier”

De manière alternative, tu pourrais avoir YunoHost comme 443 et proxyfier depuis YunoHost vers Proxmox (avec l’application redirect_ynh). Ce serait moins problématique.

Par contre si ta VM est down tu ne pourras en effet plus intervenir sur proxmox à distance …
Ne pourrais-tu pas sinon transférer proxmox sur un autre port ? Je pense vraiment que faire transiter le 443 de YNH par proxmox risque de créer pas mal de soucis

Pour faire part de mon expérience, je te proposerai même de louer un vps à pas chère (genre une scaleway) pour y mettre yunohost… Et tu héberges avec ton proxmox des vm plus simple à proxifier.
C’est ce que je fais, et ça juste marche. Surtout ça permet de ne pas tout mettre dans le même panier, si l’un plante, il te reste l’autre serveur en secours…

Merci pour ta réponse, je pense que c’est le SSO qui pose problème - un cookie, une session, j’epsère que quelqu’un a déjà résolu le pb ou que je trouverai.

Oui je peux mapper un autre port mais c’est frustrant, sinon passer par ma vm pour atteindre une autre vm, l’idée ne me plait pas trop.

1 Like

J’ai trouvé et voici comment faire:

Toute la confusion vient de la documentation “postinstall” de yunohost, il “faut” un domaine déjà enregistré ou un sous domaine gracieusement offert par sous “nohost.st”.

Une fois les choses clairement posées, nginx sur proxmox doit proxifier un domaine local derrière la box de ton FAI, une solution consiste:

  1. émuler un domaine local derrière ta box et qui sert à yunohost
  2. configurer ton proxy sur proxmox

1) Emulation du domaine local, ce sujet a fait l’objet de quelques posts.

Pour être concret, dans mon cas:

  • pmnc.fr est mon domaine entregistré chez ovh
  • ecole.pmnc.fr un sous domaine pointant sur l’IP de mon FAI (orange)
  • ecole-47.home le nom du domaine local que je donne à l’étape “postinstall” de yunohost

Proxmox est installée sur 192.168.1.39 (ip fixée)
la vm yunohost est sur 192.168.1.47 (ip fixée)

Sur ma livebox play, j’ai la possibilité de donner un nom associé à la mac address de la VM ici je choisis ecole-47. ecole-47.home est alors automatiquement résolu en 192.168.1.47. Je l’ai fait avant l’étape de post install. Une alternative consiste à renseigner le ficher /etc/hosts des instances concernées.

2) Installer et configurer nginx sur proxmox

D’abord il faut installer nginx-extras la version de nginx qui comporte les modules nécessaires au bon fonctionnement et notamment ngx_http_substitutions_filter_module. Pour l’installer sudo apt-get install nginx-extras.

Suivre la doc pour créer un fichier par exemple proxmox dans /etc/nginx/sites-available/ puis dans /etc/nginx/sites-enabled/ un lien vers le ficher proxmox créé précédemment et l’éditer:

server {
listen 443;
server_name ecole.pmnc.fr;
ssl on;
ssl_certificate /etc/pve/local/pve-ssl.pem
ssl_certificate_key /etc/pve/local/pve-ssl.key

proxy_http_version 1.1;
proxy_set_header X-Nginx-proxy true;
proxy_set_header X-Real-IP $remote_addr; 
proxy_set_header X-Forwarded-Host $host:$server_port; 
proxy_set_header X-Forwarded-Server $host; 
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_http_version 1.1; 
proxy_set_header Upgrade $http_upgrade; 
proxy_set_header Connection "upgrade";

proxy_cookie_domain ecole-47.home ecole.pmnc.fr;

location / {
    proxy_pass https://ecole-47.home/; 

    subs_filter_types text/html css/html text/xml;
    subs_filter https://ecole-47.home https://ecole.pmnc.fr;
    proxy_set_header Accept-Encoding "";
} 

}

3) sur la box orange, NAT du port 443 sur proxmox, dans mon cas 192.168.1.39

A la maison: https://ecole-47.home/blog pour accéder à wordpress par exemple

Ailleurs: https://ecole.pmnc.fr/blog

Volià! En tout cas ça a marché pour moi, au moins pour l’application wordpress. Prochaine étape lets encrypt…

Il semble que j’ai été un peu trop optimiste hier assez tard, car si les applications marchent correctement au détail près que les règles de filtrage de la réponse peuvent devoir être adaptées, notamment il faut supprimer le https:// ca certaines mettent des URLs dans du javascript et les / sont alors escapées, j’ai vu aussi certains “localhost” qui trainent :wink: - le sso ne marche pas.

Le sso me semble être la valeur ajoutée majeure de yunohost … donc mon échec sonne le glas … Je vais opter pour des images docker des applications dont j’ai besoin et j’intégrerai plus tard un sso (gluu server ou autre) .

J’ai quand même une question, le SSO marche t’il dans le mode nominal, en effet à ma façon le mode local marche, j’accède au portail, je me loggue avec succès mais à ma grande surprise je dois encore me logguer dans wordpress ?! Si c’est confirmé mon intérêt est s’arrête ici.

@Maniack_Crudelis pourra te répondre pour WordPress mais je crois que par défaut il se loggue tout seul qu’en WordPress privé, mais qu’il est possible d’activer le plugin en public aussi

Merci pour ta réponse. J’ai enfin trouvé une solution qui marche VRAIMENT et qui est super simple :innocent: . En regardant le code du sso qui se trouve /usr/share/ssowat, l’idée m’est venu que la configuration du sso et/ou des certificats étaient faits pendant la phase de postinstall et liés fortement au domaine initial. Je ne sais pas trop l’expliquer et franchement je n’ai pas envie de me plonger plus dans ce sso, mais voici comment j’ai fait - merci proxmox les vms c’est pratique!

  • la configuration du nginx du proxmox est alors plus simple:
    server {
    listen 443;
    server_name ecole.pmnc.fr;
    ssl on;
    ssl_certificate /etc/pve/local/pve-ssl.pem
    ssl_certificate_key /etc/pve/local/pve-ssl.key

proxy_http_version 1.1;
proxy_set_header X-Nginx-proxy true;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Host $host:$server_port;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection “upgrade”;

location / {
proxy_pass https://ecole.home.pmnc.fr;
}
}

  • l’astuce pour faire ça est de mettre dans le fichier /etc/hosts du proxmox la ligne:
    192.168.1.49 ecole.pmnc.fr

  • ne pas oublier de natter le port 443 de la livebox sur l’IP du proxmox et de redémarrer /etc/ini.d/nginx restart

  • et enfin pour la phase postinstall :

  1. partager sa connexion 4G de son smartphone en wifi
  2. utiliser son pc portable en wifi sur son smartphone (extérieur à sa box orange)
  3. ouvrir son browser et https://ecole.pmnc.fr/yunohost/admin pour terminer la phase post install de yunohost et bien sur de choisir l’option “j’ai mon domaine” et mettre son domaine, ici ecole.domaine.fr

Ca mériterait d’être ajouté dans la doc !!! ou d’expliquer comment marche ce sso, un peu bizarre à mon goût.

1 Like