Erreur nginx dans /etc/nginx/conf.d/yunohost_panel.conf.inc

[Résolu : problème causé par Searx, correction (bientôt) faite là-bas.]

Bonjour,

J’explorais un peu l’utilisation de Yunohost sur la Brique en ligne de commande (je regardais le fonctionnement via https://yunohost.org/#/troubleshooting_guide_fr).
À un moment donné, j’ai remarqué que les applications étaient inaccessibles, avec une erreur Nginx.
Il est en effet planté et refuse de redémarrer…

nginx -t me donne :

nginx: [emerg] "sub_filter_once" directive is duplicate in /etc/nginx/conf.d/yunohost_panel.conf.inc:2
nginx: configuration file /etc/nginx/nginx.conf test failed

Et voilà le contenu du fichier yunohost_panel.conf.inc :

# Insert YunoHost panel
sub_filter </head> '<script type="text/javascript" src="/ynhpanel.js"></script></head>';
sub_filter_once on;
# Apply to other mime types than text/html
sub_filter_types application/xhtml+xml;
# Prevent YunoHost panel files from being blocked by specific app rules
location ~ ynhpanel\.(js|json|css) {
}

Je trouve des traces de ce fichier ici : https://github.com/YunoHost/yunohost-config-nginx/blob/unstable/config/yunohost_panel.conf.inc, mais je vois que ce n’est pas forcément la version à jour. [P.S. Voir réponse ci-dessous : dernière version ici.]

C’est bien ce fichier qui pose problème vu que si je mets les deux premières lignes en commentaire, nginx redémarre (juste fait pour tester ! je n’ai aucune idée de ce que ça implique).

J’ai remarqué l’erreur après avoir fait une mise à jour manuelle d’etherpad_mypads via sudo yunohost app upgrade -u https://github.com/YunoHost-Apps/etherpad_mypads_ynh etherpad_mypads.

Avant cela, j’ai testé la mise à jour de la Brique en ligne de commande (mais je l’avais faite via l’interface web il y a quelques jours, j’ai été surpris qu’il trouve des choses à mettre à jour…).

Quelle est l’erreur dans ce fichier yunohost_panel.conf.inc ?

Merci !

Hi,
You have the right yunohost_panel.conf.inc file. For your information, the most recent version is located here.

I guess the problem doesn’t reside in this configuration file, but most probably in the use of the sub_filter_once directive in another nginx configuration file (faulty app?).
Could you please try typing:

sudo grep -R "sub_filter_once" /etc/nginx/

and come back with the result?

Thanks!

P.S. : Oups, je me rends compte que j’ai répondu spontanément en anglais… désolé :slight_smile:

Merci pour la réponse ! Pas de soucis pour l’anglais, je comprends bien (mais j’écris moins bien en anglais).

Ça donne ceci :

admin@brique:~$ sudo grep -R "sub_filter_once" /etc/nginx/
/etc/nginx/conf.d/yunohost_panel.conf.inc:# sub_filter_once on;
admin@brique:~$ 

(Il est en commentaire pour l’instant dans le fichier, d’où le “#”.)

Hmm… Du coup ça n’est pas très concluant…
Te rappelles-tu des manipulations que tu as pu faire dans ton “exploration” ?
Ce fichier de configuration sert pour l’incrustation de la “tuile” YunoHost" en bas à droit pour afficher le menu principal. Je suppose que s’il y a une autre déclaration du paramètre quelque part, ta tuile apparait bien sur les applis malgré ta mise en commentaires… tu confirmes ?
Tu pourrais rester en l’état, mais tu risques d’avoir des soucis lors d’une mise à jour ultérieure de YunoHost (bien que ce fichier soit modifié une fois tous les millénaires).

Non, en fait je n’ai plus la tuile en bas à droite… (Ce qui ne me gêne pas dans l’absolu.)

Donc j’ai regardé cette page : https://yunohost.org/#/troubleshooting_guide_fr
J’ai regardé l’utilisation de la RAM, du disque, les logs, les services actifs, j’ai même pas été voir la partie nginx, sachant que je comprendrais rien. Comme tout ça n’a rien modifié sur le système, je suppose que c’est pas ça.

Par contre, et c’est sans doute ça, j’ai fait
sudo apt-get update && sudo apt-get dist-upgrade
Puis :

sudo apt-get install debian-goodies
sudo checkrestart

J’ai redémarré ma brique ici (checkrestart m’indiquait beaucoup de choses qui tournait sur d’anciennes versions).

Et donc après ça j’ai fait la mise à jour d’etherpad_mypads et me suis aperçu seulement là que nginx avait planté.

Faut peut-être pas faire ça (apt-get) sur une Brique ?
(J’imagine que mon terme « exploration » ne rassure pas. :smile:
Mais je compte sur la Brique pour apprendre des choses, quitte à faire quelques erreurs.)

J’ai ça comme màj dans dpkg.log :
libgcrypt20:armhf 1.6.3-2+deb8u3 1.6.3-2+deb8u4
libc-bin:armhf 2.19-18+deb8u10
linux-image-3.16.0-4-armmp:armhf 3.16.43-2+deb8u1 3.16.43-2+deb8u2
linux-libc-dev:armhf 3.16.43-2+deb8u1 3.16.43-2+deb8u2
openvpn:armhf 2.3.4-5+deb8u1 2.3.4-5+deb8u2
man-db:armhf 2.7.0.2-5
systemd:armhf 215-17+deb8u7
flash-kernel:armhf 3.35+deb8u3
dctrl-tools:armhf 2.23
transmission-cli:armhf 2.84-0.2
libminiupnpc10:armhf 1.9.20140610-2+deb8u1
libnatpmp1:armhf 20110808-3
minissdpd:armhf 1.2.20130907-3+deb8u1
transmission-common:all 2.84-0.2
hicolor-icon-theme:all 0.13-1

En fait, avec les “sub_filters” en commentaire, si je fais nginx -t, il me met : « duplicate MIME type “application/xhtml+xml” in /etc/nginx/conf.d/yunohost_panel.conf.inc:5 ».
(Mais il démarre quand même.)

Comme si le fichier était en double, mais je trouve pas.

Au cas où, j’ai nginx 1.6.2.

Les manipulations que tu as réalisées sont parfaitement autorisées (et nécessaires), soit donc rassuré sur ce point :wink:

Pour ton problème, je pencherais plutôt vers une application donc la conf nginx inclut deux fois yunohost_panel.conf.inc pour une même location.
Quelles sont les applications que tu as installées ?

tu peux faire grep -R 'yunohost_panel' /etc/nginx/ pour voir si un fichier l’appelle 2 fois

Ouf. Merci. Je suis un peu rassuré. :slight_smile:

Via yunohost app list j’ai :

apps: 
  0: 
    description: Client web pour CalDAV
    id: agendav
    installed: False
    label: None
    license: GPL-3
    name: AgenDAV
  1: 
    description: Serveur CalDAV+CardDAV léger
    id: baikal
    installed: False
    label: None
    license: GPL-3
    name: Baikal
  2: 
    description: Doctor Cube s'assure que votre Brique Internet fonctionne comme prévue
    id: doctorcube
    installed: True
    label: Doctor Cube
    license: GPL-3+
    name: Doctor Cube
  3: 
    description: DokuWiki est un wiki Open Source simple à utiliser et très polyvalent qui n'exige aucune base de données.
    id: dokuwiki
    installed: False
    label: None
    license: free
    name: Dokuwiki
  4: 
    description: Clone de Framapad, un éditeur en ligne fournissant l'édition collaborative en temps réel.
    id: etherpad_mypads
    installed: True
    label: Etherpad Mypads
    license: Apache-2.0
    name: Etherpad Mypads
  5: 
    description: Un jeu de puzzle très rapide.
    id: hextris
    installed: False
    label: None
    license: indéfinie
    name: Hextris
  6: 
    description: Hotspot Wifi
    id: hotspot
    installed: True
    label: Wifi Hotspot
    license: AGPL-3
    name: Wifi Hotspot
  7: 
    description: Hébergez simplement un fichier et partagez-le avec un lien unique
    id: jirafeau
    installed: True
    label: Jirafeau
    license: free
    name: Jirafeau
  8: 
    description: Kanboard est une application web de management de tâches simples
    id: kanboard
    installed: False
    label: None
    license: indéfinie
    name: Kanboard
  9: 
    description: The Kickass Social Network
    id: movim
    installed: True
    label: Movim
    license: AGPL-3
    name: Movim
  10: 
    description: Application Web personnalisée avec accès SFTP
    id: my_webapp
    installed: False
    label: None
    license: free
    name: Custom Webapp
  11: 
    description: Application gérant les configurations spécifiques à Neutrinet
    id: neutrinet
    installed: True
    label: Neutrinet
    license: GPL-3+
    name: Neutrinet
  12: 
    description: Consultez et partagez vos fichiers, agendas, carnets d'adresses, emails et bien plus depuis les appareils de votre choix, sous vos conditions
    id: nextcloud
    installed: True
    label: Nextcloud
    license: AGPL-3
    name: Nextcloud
  13: 
    description: OpenSondage sert à faire des sondages sans authentification pour trouver une date de réunion qui convienne à toutes les personnes concernées.
    id: opensondage
    installed: False
    label: None
    license: indéfinie
    name: OpenSondage
  14: 
    description: Application web de gestion des bases de données MySQL
    id: phpmyadmin
    installed: False
    label: None
    license: free
    name: phpMyAdmin
  15: 
    description: PirateBox
    id: piratebox
    installed: False
    label: None
    license: AGPL-3
    name: PirateBox
  16: 
    description: Webmail léger multi-comptes
    id: rainloop
    installed: True
    label: Rainloop
    license: AGPL-3.0
    name: Rainloop
  17: 
    description: Webmail Open Source
    id: roundcube
    installed: True
    label: Roundcube
    license: GPL-3
    name: Roundcube
  18: 
    description: Un méta-moteur de recherche respectueux de la vie privée et bidouillable
    id: searx
    installed: True
    label: Searx
    license: AGPLv3
    name: Searx
  19: 
    description: Émulateur de terminal web
    id: shellinabox
    installed: False
    label: None
    license: free
    name: Shell In A Box
  20: 
    description: Strut est un éditeur de slide permetant de créer des présentation impress.js.
    id: strut
    installed: True
    label: Strut
    license: indéfinie
    name: Strut
  21: 
    description: Un client BitTorrent libre et rapide
    id: transmission
    installed: False
    label: None
    license: indéfinie
    name: Transmission
  22: 
    description: Un lecteur de flux en PHP et Ajax
    id: ttrss
    installed: True
    label: Tiny Tiny RSS
    license: indéfinie
    name: Tiny Tiny RSS
  23: 
    description: Client VPN
    id: vpnclient
    installed: True
    label: VPN Client
    license: AGPL-3
    name: VPN Client
  24: 
    description: Une application de lecture-plus-tard auto-hébergeable
    id: wallabag
    installed: False
    label: None
    license: MIT
    name: Wallabag
  25: 
    description: Logiciel de création de blog ou de site Web
    id: wordpress
    installed: False
    label: None
    license: GPLv2
    name: WordPress
  26: 
    description: Un pastebin minimaliste, libre et où le serveur n'a aucune connaissance des données copiées
    id: zerobin
    installed: False
    label: None
    license: indéfinie
    name: Zerobin

Je vois qu’il ne supprime pas définitivement celles que j’ai testées.

Via yunohost app list -i :

apps: 
  0: 
    description: Doctor Cube s'assure que votre Brique Internet fonctionne comme prévue
    id: doctorcube
    installed: True
    label: Doctor Cube
    license: GPL-3+
    name: Doctor Cube
  1: 
    description: Clone de Framapad, un éditeur en ligne fournissant l'édition collaborative en temps réel.
    id: etherpad_mypads
    installed: True
    label: Etherpad Mypads
    license: Apache-2.0
    name: Etherpad Mypads
  2: 
    description: Hotspot Wifi
    id: hotspot
    installed: True
    label: Wifi Hotspot
    license: AGPL-3
    name: Wifi Hotspot
  3: 
    description: Hébergez simplement un fichier et partagez-le avec un lien unique
    id: jirafeau
    installed: True
    label: Jirafeau
    license: free
    name: Jirafeau
  4: 
    description: The Kickass Social Network
    id: movim
    installed: True
    label: Movim
    license: AGPL-3
    name: Movim
  5: 
    description: Application gérant les configurations spécifiques à Neutrinet
    id: neutrinet
    installed: True
    label: Neutrinet
    license: GPL-3+
    name: Neutrinet
  6: 
    description: Consultez et partagez vos fichiers, agendas, carnets d'adresses, emails et bien plus depuis les appareils de votre choix, sous vos conditions
    id: nextcloud
    installed: True
    label: Nextcloud
    license: AGPL-3
    name: Nextcloud
  7: 
    description: Webmail léger multi-comptes
    id: rainloop
    installed: True
    label: Rainloop
    license: AGPL-3.0
    name: Rainloop
  8: 
    description: Webmail Open Source
    id: roundcube
    installed: True
    label: Roundcube
    license: GPL-3
    name: Roundcube
  9: 
    description: Un méta-moteur de recherche respectueux de la vie privée et bidouillable
    id: searx
    installed: True
    label: Searx
    license: AGPLv3
    name: Searx
  10: 
    description: Strut est un éditeur de slide permetant de créer des présentation impress.js.
    id: strut
    installed: True
    label: Strut
    license: indéfinie
    name: Strut
  11: 
    description: Un lecteur de flux en PHP et Ajax
    id: ttrss
    installed: True
    label: Tiny Tiny RSS
    license: indéfinie
    name: Tiny Tiny RSS
  12: 
    description: Client VPN
    id: vpnclient
    installed: True
    label: VPN Client
    license: AGPL-3
    name: VPN Client

J’utilise surtout TTRSS, NextCloud, un peu etherpad (mais j’exporte régulièrement ce que j’y mets) et les autres occasionnellement (pas grand chose à y perdre).

Voilà :

/etc/nginx/conf.d/pad.brique.mondomaine.tld.d/etherpad_mypads.conf:	include conf.d/yunohost_panel.conf.inc;
/etc/nginx/conf.d/brique.mondomaine.tld.d/ttrss.conf:  include conf.d/yunohost_panel.conf.inc;
/etc/nginx/conf.d/brique.mondomaine.tld.d/wifiadmin.conf:  include conf.d/yunohost_panel.conf.inc;
/etc/nginx/conf.d/brique.mondomaine.tld.d/vpnadmin.conf:  include conf.d/yunohost_panel.conf.inc;
/etc/nginx/conf.d/brique.mondomaine.tld.d/rainloop.conf:    include conf.d/yunohost_panel.conf.inc;
/etc/nginx/conf.d/brique.mondomaine.tld.d/searx.conf:	include conf.d/yunohost_panel.conf.inc;
/etc/nginx/conf.d/brique.mondomaine.tld.d/searx.conf:include conf.d/yunohost_panel.conf.inc;
/etc/nginx/conf.d/brique.mondomaine.tld.d/strut.conf:       include conf.d/yunohost_panel.conf.inc;
/etc/nginx/conf.d/brique.mondomaine.tld.d/movim.conf:include conf.d/yunohost_panel.conf.inc;
/etc/nginx/conf.d/brique.mondomaine.tld.d/jirafeau.conf:  include conf.d/yunohost_panel.conf.inc;
/etc/nginx/conf.d/brique.mondomaine.tld.d/nextcloud.conf:  include conf.d/yunohost_panel.conf.inc;
/etc/nginx/conf.d/brique.mondomaine.tld.d/roundcube.conf:  include conf.d/yunohost_panel.conf.inc;

Curieusement, sans sudo, j’ai la même chose, mais avec cette ligne qui change :

grep: /etc/nginx/conf.d/brique.mondomaine.tld.d/jirafeau.conf: Permission non accordée

Ah j’ai pas vu tout de suite avec l’alignement différent, searx apparait 2× !

Voilà le contenu de /etc/nginx/conf.d/brique.mondomaine.tld.d/searx.conf :

 location = /searx { rewrite ^ /searx/; }

location /searx {
        if ($scheme = http) {
                rewrite ^ https://$server_name$request_uri? permanent;
        }
        try_files $uri @searx;

        # Include SSOWAT user panel.
        include conf.d/yunohost_panel.conf.inc;
}

location @searx {
        uwsgi_param SCRIPT_NAME '/searx';
        include uwsgi_params;
        uwsgi_modifier1 30;
        uwsgi_pass unix:///run/uwsgi/app/searx/socket;
}

# Include SSOWAT user panel.
include conf.d/yunohost_panel.conf.inc;

Il y a bien deux appels.

Ça correspond à : https://github.com/YunoHost-Apps/searx_ynh/blob/master/conf/nginx.conf

Si j’en mets un des deux en commentaires et décommente dans yunohost_panel.conf.inc, puis service nginx restart, ça fonctionne (et j’ai bien la tuile qui apparait en bas à droite dans les app via le web).

1 Like

Je vois ici : https://github.com/YunoHost-Apps/searx_ynh/commits/master/conf/nginx.conf que ça a été modifié récemment, mais je ne comprends pas tout et ne connait pas bien github.

Faut-il faire remonter quelque chose là-bas ?

oui, tu peux ouvrir une issue sur github. Cela nécessite d’ouvrir un compte github.(onglet -> Issues > Ouvrir une Issue)
N’oublie pas de mettre le maximum d’informations possible.(en fait surtout, le résultat de la commande “nginx -t” et ce que tu as dit ici)

Merci beaucoup,
frju365

C’est un conflit de pull request en fait, l’une déplaçant ce bloc à un endroit et l’autre ailleurs.
Je fais une PR sur searx.

OK, je vois que c’est remonté du coup.

Merci beaucoup à tous pour vos réponses (et votre travail) ! J’ai appris des trucs, c’est l’essentiel. :relaxed:

1 Like

Bonjour,
Pour information, la correction de searx vient d’être validée et publiée :wink:

2 Likes