Impossible d'accéder au SSO via un reverse proxy, mais accès apps OK

Mes serveurs YunoHost

Matériel: Raspberry Pi 4 + serveur dédié chez OVH
Version de YunoHost: 11.2.4 pour tout le monde
J’ai accès à mon serveur : En SSH | Par la webadmin | En direct avec un clavier/écran (sauf pour le serveur dédié)
Êtes-vous dans un contexte particulier ou avez-vous effectué des modificiations particulières sur votre instance ? : oui, un YNH sert de reverse proxy à l’autre

Bonjour,
j’aurais besoin de conseils / d’idées car je suis bloqué, et malgrès un nombre déraisonable d’heures passé, j’ai un problème de SSO que je ne peux résoudre.
Désolé d’être un peu long dans mon mail, mais si celà peut aider…
Merci de vos suggestions.

Description du problème

J’ai un serveur à la maison (raspberry pi4) sur lequel YNH et des logiciels sont installés. Je peux accéder à tous les logiciels, sauf au SSO ! j’ai une erreur “404 Not Found”.
Je précise tout de suite que ce serveur est derrière un autre serveur YNH chez OVH qui agit comme un reverse proxy.

Contexte

Dans mon idée, je me connecte à mon serveur OVH (domaine laborderie.site), et si je demande une appli du sous-domaine gif.laborderie.site, je suis redirigé vers le pi4 de mon domicile.

J’ai un serveur dédié chez OVH sur lequel j’ai installé YNH, des logiciels et qui tourne sans problème.
J’ai aussi un serveur raspberry pi4 à la maison, sur lequel j’ai installé YNH et des logiciels (par exemple calibre-web pour mes livres ou une landing page).
Dans les deux cas j’ai installé WireGuard, pour créer un réseau local virtuel (en10.10.10.x).

Sur le serveur chez OVH, j’ai créé des sous-domaines qui sont redirigés vers le pi4 grâce à l’appli Redirect. Celà fonctionne bien pour accéder en direct aux applis.
Pour chaque appli de mon pi4 domestique, je crée un (sous) sous domaine correspondant sur le serveur OVH, j’y installe l’appli Redirect. Celà marche pour des applis installées à la racine d’un sous domaine (calibre.gif.laborderie.site) ou sur un répertoire (gif.laborderie.site/landing pour l’appli My_Webapp qui gère une page d’accueil html).

Par contre, si depuis la landing page je clique sur un lien qui me renvoit vers le SSO pi4, oubien si j’essaie depuis l’extérieur d’y accéder (laborderie.site/yunohost/sso dans les deux cas) cela ne marche pas et j’ai l’erreur “404 Not Found” retournée par le serveur OVH. Je ne comprends pas pourquoi.

les fichiers logs

Voici la partie des fichiers nginx lors d’un accès, à la landing page depuis le web (via téléphone, 37.174.142.253), à 08:25, puis clique sur le lien vers le SSO à 08:36.
Il me semble comprendre que le serveur OVH (10.10.10.0) essaie de fournir la page SSO localement, au lieu de faire suivre la demande au serveur pi4.

Sur YNH Pi4,

`sudo cat
/var/log/nginx/gif.laborderie.site-access.log`

`10.10.10.0 - - [06/Oct/2023:07:57:17 +0100]
"GET /landing/ HTTP/1.1" 200 1433 "-"
"Mozilla/5.0 (Android 8.0.0; Mobile; rv:109.0) Gecko/118.0
Firefox/118.0"`

`10.10.10.0 - - [06/Oct/2023:08:07:07 +0100]
"GET /landing/ HTTP/1.1" 200 1433 "-"
"Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:109.0)
Gecko/20100101 Firefox/118.0"`

`10.10.10.0 - - [06/Oct/2023:08:25:28 +0100]
"GET / HTTP/1.1" 302 138 "-" "Mozilla/5.0
(Windows NT 10.0; rv:109.0) Gecko/20100101 Firefox/118.0"`

`10.10.10.0 - - [06/Oct/2023:08:25:28 +0100]
"GET /landing HTTP/1.1" 301 162 "-" "Mozilla/5.0
(Windows NT 10.0; rv:109.0) Gecko/20100101 Firefox/118.0"`

`10.10.10.0 - - [06/Oct/2023:08:25:28 +0100]
"GET /landing/ HTTP/1.1" 200 1433 "-"
"Mozilla/5.0 (Windows NT 10.0; rv:109.0) Gecko/20100101
Firefox/118.0"`
sudo tail  /var/log/nginx/gif.laborderie.site-error.log

pas d’erreur

sur YNO OVH,

`sudo tail -n 100 /var/log/nginx/gif.laborderie.site-access.log `

`37.174.142.253 - - [06/Oct/2023:07:25:29
+0000] "GET /ynhtheme/custom_portal.js HTTP/2.0" 404 418
"https://gif.laborderie.site/landing/" "Mozilla/5.0
(Windows NT 10.0; rv:109.0) Gecko/20100101 Firefox/118.0"`

`37.174.142.253 - - [06/Oct/2023:07:25:29
+0000] "GET /ynhtheme/custom_overlay.css HTTP/2.0" 404 418
"https://gif.laborderie.site/landing/" "Mozilla/5.0
(Windows NT 10.0; rv:109.0) Gecko/20100101 Firefox/118.0"`

`37.174.142.253 - - [06/Oct/2023:07:31:04
+0000] "GET /yunohost/sso HTTP/2.0" 301 162
"https://gif.laborderie.site/landing/" "Mozilla/5.0
(Windows NT 10.0; rv:109.0) Gecko/20100101 Firefox/118.0"`

`37.174.142.253 - - [06/Oct/2023:07:31:04
+0000] "GET /yunohost/sso/ HTTP/2.0" 404 146
"https://gif.laborderie.site/landing/" "Mozilla/5.0
(Windows NT 10.0; rv:109.0) Gecko/20100101 Firefox/118.0"`

`37.174.142.253 - - [06/Oct/2023:07:36:39
+0000] "GET /yunohost/sso/ HTTP/2.0" 404 146
"https://gif.laborderie.site/landing/" "Mozilla/5.0
(Windows NT 10.0; rv:109.0) Gecko/20100101 Firefox/118.0"`
`sudo tail -n 100 /var/log/nginx/gif.laborderie.site-error.log `

`2023/10/06 07:25:29 [error] 3799744#3799744:
*75837 open() "/usr/share/nginx/html/ynh_portal.js" failed
(2: No such file or directory), client: 37.174.142.253, server:
gif.laborderie.site, request: "GET /ynh_portal.js HTTP/2.0",
host: "gif.laborderie.site", referrer:
"https://gif.laborderie.site/landing/"`

`2023/10/06 07:25:29 [error] 3799744#3799744:
*75837 open() "/usr/share/nginx/html/ynh_overlay.css"
failed (2: No such file or directory), client: 37.174.142.253,
server: gif.laborderie.site, request: "GET /ynh_overlay.css
HTTP/2.0", host: "gif.laborderie.site", referrer:
"https://gif.laborderie.site/landing/"`

`2023/10/06 07:25:29 [error] 3799744#3799744:
*75837 open() "/usr/share/nginx/html/ynhtheme/custom_portal.js"
failed (2: No such file or directory), client: 37.174.142.253,
server: gif.laborderie.site, request: "GET
/ynhtheme/custom_portal.js HTTP/2.0", host:
"gif.laborderie.site", referrer:
"https://gif.laborderie.site/landing/"`

`2023/10/06 07:25:29 [error] 3799744#3799744:
*75837 open() "/usr/share/nginx/html/ynhtheme/custom_overlay.css"
failed (2: No such file or directory), client: 37.174.142.253,
server: gif.laborderie.site, request: "GET
/ynhtheme/custom_overlay.css HTTP/2.0", host:
"gif.laborderie.site", referrer:
"https://gif.laborderie.site/landing/"`

`2023/10/06 07:25:29 [error] 3799744#3799744:
*75837 open() "/usr/share/nginx/html/ynh_overlay.css"
failed (2: No such file or directory), client: 37.174.142.253,
server: gif.laborderie.site, request: "GET /ynh_overlay.css
HTTP/2.0", host: "gif.laborderie.site", referrer:
"https://gif.laborderie.site/landing/"`

`2023/10/06 07:25:29 [error] 3799744#3799744:
*75837 open() "/usr/share/nginx/html/ynhtheme/custom_overlay.css"
failed (2: No such file or directory), client: 37.174.142.253,
server: gif.laborderie.site, request: "GET
/ynhtheme/custom_overlay.css HTTP/2.0", host:
"gif.laborderie.site", referrer:
"https://gif.laborderie.site/landing/"`

`2023/10/06 07:25:29 [error] 3799744#3799744:
*75837 open() "/usr/share/nginx/html/ynh_portal.js" failed
(2: No such file or directory), client: 37.174.142.253, server:
gif.laborderie.site, request: "GET /ynh_portal.js HTTP/2.0",
host: "gif.laborderie.site", referrer:
"https://gif.laborderie.site/landing/"`

`2023/10/06 07:25:29 [error] 3799744#3799744:
*75837 open() "/usr/share/nginx/html/ynh_overlay.css"
failed (2: No such file or directory), client: 37.174.142.253,
server: gif.laborderie.site, request: "GET /ynh_overlay.css
HTTP/2.0", host: "gif.laborderie.site", referrer:
"https://gif.laborderie.site/landing/"`

`2023/10/06 07:25:29 [error] 3799744#3799744:
*75837 open() "/usr/share/nginx/html/ynhtheme/custom_portal.js"
failed (2: No such file or directory), client: 37.174.142.253,
server: gif.laborderie.site, request: "GET
/ynhtheme/custom_portal.js HTTP/2.0", host:
"gif.laborderie.site", referrer:
"https://gif.laborderie.site/landing/"`

`2023/10/06 07:25:29 [error] 3799744#3799744:
*75837 open() "/usr/share/nginx/html/ynhtheme/custom_overlay.css"
failed (2: No such file or directory), client: 37.174.142.253,
server: gif.laborderie.site, request: "GET
/ynhtheme/custom_overlay.css HTTP/2.0", host:
"gif.laborderie.site", referrer:
"https://gif.laborderie.site/landing/"`

`2023/10/06 07:31:04 [error] 3799744#3799744:
*75981 "/usr/share/nginx/html/yunohost/sso/index.html" is
not found (2: No such file or directory), client: 37.174.142.253,
server: gif.laborderie.site, request: "GET /yunohost/sso/
HTTP/2.0", host: "gif.laborderie.site", referrer:
"https://gif.laborderie.site/landing/"`

`2023/10/06 07:36:39 [error] 3799744#3799744:
*76127 "/usr/share/nginx/html/yunohost/sso/index.html" is
not found (2: No such file or directory), client: 37.174.142.253,
server: gif.laborderie.site, request: "GET /yunohost/sso/
HTTP/2.0", host: "gif.laborderie.site", referrer:
"https://gif.laborderie.site/landing/"`

Ce que j’ai fait

ci-après une suite de contrôles, suite à la lecture de ce fil https://forum.yunohost.org/t/404-error-on-sso-page-usr-share-nginx-yunohost-sso-failed-2-no-such-file-or-directory/10948/2
Je n’en tire rien de particulier.

sur YNH OVH

sudo cat /etc/ssowat/conf.json.persistent

{
}
sudo grep portal_domain /etc/ssowat/conf.json
 "portal_domain": "laborderie.site",
sudo yunohost app map | grep laborderie.site
calibre.gif.laborderie.site: Redirect
fred.laborderie.site/galerie: GalerieFred
gif.laborderie.site: Redirect-gif
ha.gif.laborderie.site: Redirect-ha.gif
laborderie.site/cloud: CloudFamille
laborderie.site/gravure: GravurePortfolio
laborderie.site/gravure/admin:
GravurePortfolio (admin)
laborderie.site/lumiere: LumièrePortfolio
laborderie.site/lumiere/admin:
LumièrePortfolio (admin)
laborderie.site/photo: PhotoPortfolio
laborderie.site/portail: PortailCollectif
vpn.laborderie.site: WireGuard_VPN
www.laborderie.site: Redirect www
cat /etc/hosts
127.0.0.1	localhost
127.0.1.1	ns3352898.ip-37-187-17.eu	ns3352898

# The following lines are desirable for IPv6
capable hosts

::1	localhost	ip6-localhost ip6-loopback
ff02::1	ip6-allnodes
ff02::2	ip6-allrouters

37.187.17.74	ns3352898.ip-37-187-17.eu	ns3352898
127.0.0.1	laborderie
yunohost tools regen-conf nginx –dry-run

…ne retourne rien

sudo grep -nr access_by_lua /var/log/yunohost/categories/*
grep: /var/log/yunohost/categories/*: No such file or directory

sur YNH PI4

sudo cat /etc/ssowat/conf.json.persistent
{}
sudo grep portal_domain /etc/ssowat/conf.json
"portal_domain": "gif.laborderie.site",
sudo yunohost app map | grep laborderie.site
calibre.gif.laborderie.site: Calibre-web
calibre.gif.laborderie.site/kobo:
Calibre-web (kobo)
calibre.gif.laborderie.site/opds: Calibre-web (opds)
gif.laborderie.site/cloud: Nextcloud
gif.laborderie.site/landing: My Webapp Landing Page
gif.laborderie.site/portail: PrettyNoemie CMS
gif.laborderie.site/portail/admin:
PrettyNoemie CMS (admin)
ha.gif.laborderie.site: Home Assistant
cat /etc/hosts`
127.0.0.1	localhost
::1		localhost ip6-localhost ip6-loopback
ff02::1		ip6-allnodes
ff02::2		ip6-allrouters
127.0.0.1       gif.local
#127.0.0.1       gif.laborderie.site
#::1             gif.laborderie.site

yunohost tools regen-conf nginx –dry-run
…ne retourne rien

sudo grep -nr access_by_lua /var/log/yunohost/categories/*
grep: /var/log/yunohost/categories/*: Nosuch file or directory

J’ai aussi regardé le fichier /etc/nginx/gif.laborderie.site du server OVH, le voici:

sudo cat gif.laborderie.site.conf
map $http_upgrade $connection_upgrade {
    default upgrade;
    ''      close;
}

server {
    listen 80;
    listen [::]:80;
    server_name gif.laborderie.site;

    access_by_lua_file /usr/share/ssowat/access.lua;

    include /etc/nginx/conf.d/acme-challenge.conf.inc;

    location ^~ '/.well-known/ynh-diagnosis/' {
        alias /var/www/.well-known/ynh-diagnosis/;
    }

    
    location ^~ '/.well-known/autoconfig/mail/' {
        alias /var/www/.well-known/gif.laborderie.site/autoconfig/mail/;
    }
    

    
    
    include /etc/nginx/conf.d/gif.laborderie.site.d/*.conf;
    

    include /etc/nginx/conf.d/yunohost_http_errors.conf.inc;

    access_log /var/log/nginx/gif.laborderie.site-access.log;
    error_log /var/log/nginx/gif.laborderie.site-error.log;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name gif.laborderie.site;

    include /etc/nginx/conf.d/security.conf.inc;

    ssl_certificate /etc/yunohost/certs/gif.laborderie.site/crt.pem;
    ssl_certificate_key /etc/yunohost/certs/gif.laborderie.site/key.pem;

    
    more_set_headers "Strict-Transport-Security : max-age=63072000; includeSubDomains; preload";
    
    
    # OCSP settings
    ssl_stapling on;
    ssl_stapling_verify on;
    ssl_trusted_certificate /etc/yunohost/certs/gif.laborderie.site/crt.pem;
    resolver 1.1.1.1 9.9.9.9 valid=300s;
    resolver_timeout 5s;
    

    
    location ^~ '/.well-known/autoconfig/mail/' {
        alias /var/www/.well-known/gif.laborderie.site/autoconfig/mail/;
    }
    

    access_by_lua_file /usr/share/ssowat/access.lua;

    include /etc/nginx/conf.d/gif.laborderie.site.d/*.conf;

    include /etc/nginx/conf.d/yunohost_sso.conf.inc;
    include /etc/nginx/conf.d/yunohost_admin.conf.inc;
    include /etc/nginx/conf.d/yunohost_api.conf.inc;
    include /etc/nginx/conf.d/yunohost_http_errors.conf.inc;

    access_log /var/log/nginx/gif.laborderie.site-access.log;
    error_log /var/log/nginx/gif.laborderie.site-error.log;
}


En fait j’y suis allé à la hache : j’ai enlevé du fichier de configuration nginx gif.laborderie.site.conf les fichiers include et le fichier lua, en laissant le reste inchangé.
Maintenant je peux avoir accès à mon serveur à la maison dans tous les cas.