OMV7 Problèmes suite upgrade OMV & Portainer

Sylphaël

Nouveau membre
21 Décembre 2022
10
0
6
Bonsoir,

Ca fait maintenant 2 ans que j'ai un NAS DIY qui tourne plutôt bien, j'ai rencontré quelques petits problèmes mais j'ai toujours su me débrouiller.
Je ne suis pas un pro des environnements Linux mais je connais les commandes de base grâce à mon métier d'admin réseau.

Cette fois, après avoir passé de nombreuses heures, j'ai besoin de votre aide suite à deux problèmes que je rencontre depuis avant-hier.

Problème 1 :

Au départ, je souhaitais faire un upgrade de Portainer depuis le menu "omv-extras" de OMV.
Or, une fois dans le menu, je me suis rendu compte que je ne pouvais plus faire comme d'habitude, le menu avait changé.
N'arrivant pas à mes fins, j'ai décidé de mettre à jour OMV de la version 6 à la version 7 en ligne de commande.
Depuis, j'ai de gros problèmes pour accéder à mes services, je rencontre des erreurs 200, des erreurs 500, des messages du type "Failed to connect to socket: No such file or directory"...

Auriez vous une idée de la manière dont je pourrai résoudre cette problématique ?

J'ai essayé pas mal de choses (tellement que je ne saurai plus les énumérer), j'ai même tenté avec la commande omv-firstaid mais rien à faire.

Problème 2 :
Il découle du premier, car ne pouvant plus faire la mise à jour de Portainer depuis le menu omv-extras, j'ai décidé de l'upgrader en ligne de commande :
- docker stop portainer
- docker rm portainer
- docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=unless-stopped -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer

J'ai ensuite voulu me connecter à mon tenant habituel mais je suis tombé sur une page m'indiquant qu'il fallait que je crée un compte (déjà, ça ne sentait pas bon).
Une fois connecté avec mon nouveau compte, je me suis rendant dans le menu des stack et je me suis rendu compte que j'avais perdu la main sur ces derniers.
J'ai désormais un contrôle limité sur ces derniers, avec ce message : "This stack was created outside of Portainer. Control over this stack is limited."

Je pense que le problème vient de la 3eme commande générique, et que le problème vient du path que j'ai indiqué.
J'ai cherché en vain où se trouvait mon itération de base de Portainer mais impossible de mettre la main dessus.

Je précise que j'ai toujours un accès ssh.

Merci d'avance

PS : Si besoin je peux splitter les deux sujets en deux posts distincts.

Sylphaël
 
Hello
Je ne peux pas beaucoup t'aider pour ton premier point car je n'utilise pas les plugins d'OMV (et visiblement bien m'en a pris^^), mais tu peux peut être avoir un peu de matière sur ce lien

Pour le deuxième point, si tu arrives à récupérer le chemin de ton portainer initial (le volume data je crois), ça devrait résoudre le souci.
Sinon il existe une image docker qui te permet de générer les fichiers compose (stacks) à partir de containers existants, j'ai fait un tuto dessus ici
 
Dernière édition:
Bonjour,

Merci pour ton retour.
Je suis bien embêté car je n'arrive plus à me connecter à mon interface web OMV, j'ai systématiquement une erreur 502, voici un extrait des logs :

Code:
09:27:22 [crit] 414021#414021: *5536 connect() to unix:/run/php/php8.2-fpm-openmediavault-webgui.sock failed (2: No such file or directory) while connecting to upstream, client: 172.27.0.9, server: openmediavaul
t-webgui, request: "POST /rpc.php HTTP/1.1", upstream: "fastcgi://unix:/run/php/php8.2-fpm-openmediavault-webgui.sock:", host: "monserveur", referrer: "https://monserveur/"

Voici les erreurs obtenues lorsque je tape la commande "omv-engined -d -f"

Code:
monuser@monnas:~# omv-engined -d -f
PHP Fatal error:  Uncaught Error: Call to undefined function mb_strtolower() in /usr/share/php/openmediavault/autoloader.inc:28
Stack trace:
#0 /usr/sbin/omv-engined(357): {closure}()
#1 {main}
  thrown in /usr/share/php/openmediavault/autoloader.inc on line 28
omv-engined[847593]: PHP Fatal error: Uncaught Error: Call to undefined function mb_strtolower() in /usr/share/php/openmediavault/autoloader.inc:28
omv-engined[847593]: Stack trace:
omv-engined[847593]: #0 /usr/sbin/omv-engined(357): {closure}()
omv-engined[847593]: #1 {main}
omv-engined[847593]:   thrown in /usr/share/php/openmediavault/autoloader.inc on line 28
PHP Fatal error: Uncaught Error: Call to undefined function mb_strtolower() in /usr/share/php/openmediavault/autoloader.inc:28
Stack trace:
#0 /usr/sbin/omv-engined(357): {closure}()
#1 {main}
  thrown in /usr/share/php/openmediavault/autoloader.inc on line 28

Je me suis baladé de forum en forum pour trouver une solution mais en vain.
Si quelqu'un a une idée.

Concernant le 2eme point, je te remercie pour le tuto, je vais tester dès que j'ai un peu de temps.
 
Ça donne l'impression que ton php8.2-fpm est en rideau.
En ssh, que donne `service php8.2-fpm status` ?
S'il est en rideau, tu dois normalement avoir un message pour te dire de consulter les logs de systemctl ou journal
Il y a probablement qqch qui s'est mal mis à jour ou installé lors du passage de omv6 à omv7.

Tu as encore accès au log de la mise à jour ?
 
Voici le résultat de la commande :

Code:
monuser@monnas:~# service php8.2-fpm status
Unit php8.2-fpm.service could not be found.

Pourtant, il y a bien des traces de php 8.2 d'après cette commande :

Code:
dpkg -l | grep -E "php|openme"
ii  openmediavault                     7.4.8-1                                        all          openmediavault - The open network attached storage solution
ic  openmediavault-backup              7.1.4                                          all          backup plugin for OpenMediaVault.
ii  openmediavault-flashmemory         7.0.1                                          all          folder2ram plugin for openmediavault
ii  openmediavault-keyring             1.0.2-2                                        all          GnuPG archive keys of the openmediavault archive
ii  openmediavault-omvextrasorg        7.0                                            all          OMV-Extras.org Package Repositories for OpenMediaVault
ii  php-bcmath                         2:8.3+95+0~20240927.54+debian12~1.gbpe0084c    all          Bcmath module for PHP [default]
ii  php-cgi                            2:8.3+95+0~20240927.54+debian12~1.gbpe0084c    all          server-side, HTML-embedded scripting language (CGI binary) (default)
ii  php-common                         2:95+0~20240927.54+debian12~1.gbpe0084c        all          Common files for PHP packages
ii  php-fpm                            2:8.3+95+0~20240927.54+debian12~1.gbpe0084c    all          server-side, HTML-embedded scripting language (FPM-CGI binary) (default)
ii  php-mbstring                       2:8.3+95+0~20240927.54+debian12~1.gbpe0084c    all          MBSTRING module for PHP [default]
ii  php-pam                            2.2.4-1+deb12u1                                amd64        pam module for PHP 8.2
ii  php-xml                            2:8.3+95+0~20240927.54+debian12~1.gbpe0084c    all          DOM, SimpleXML, WDDX, XML, and XSL module for PHP [default]
ii  php-yaml                           2.2.3-2+0~20231125.35+debian12~1.gbp22e23d     amd64        YAML-1.1 parser and emitter for PHP
ii  php7.4-bcmath                      1:7.4.33-15+0~20240927.95+debian12~1.gbp1b3cac amd64        Bcmath module for PHP
ii  php7.4-cgi                         1:7.4.33-15+0~20240927.95+debian12~1.gbp1b3cac amd64        server-side, HTML-embedded scripting language (CGI binary)
ii  php7.4-cli                         1:7.4.33-15+0~20240927.95+debian12~1.gbp1b3cac amd64        command-line interpreter for the PHP scripting language
ii  php7.4-common                      1:7.4.33-15+0~20240927.95+debian12~1.gbp1b3cac amd64        documentation, examples and common module for PHP
ii  php7.4-fpm                         1:7.4.33-15+0~20240927.95+debian12~1.gbp1b3cac amd64        server-side, HTML-embedded scripting language (FPM-CGI binary)
ii  php7.4-json                        1:7.4.33-15+0~20240927.95+debian12~1.gbp1b3cac amd64        JSON module for PHP
ii  php7.4-mbstring                    1:7.4.33-15+0~20240927.95+debian12~1.gbp1b3cac amd64        MBSTRING module for PHP
ii  php7.4-opcache                     1:7.4.33-15+0~20240927.95+debian12~1.gbp1b3cac amd64        Zend OpCache module for PHP
ii  php7.4-readline                    1:7.4.33-15+0~20240927.95+debian12~1.gbp1b3cac amd64        readline module for PHP
ii  php7.4-xml                         1:7.4.33-15+0~20240927.95+debian12~1.gbp1b3cac amd64        DOM, SimpleXML, XML, and XSL module for PHP
ii  php8.2-cli                         8.2.24-1+0~20240927.61+debian12~1.gbpbf08e8    amd64        command-line interpreter for the PHP scripting language
ii  php8.2-common                      8.2.24-1+0~20240927.61+debian12~1.gbpbf08e8    amd64        documentation, examples and common module for PHP
ii  php8.2-opcache                     8.2.24-1+0~20240927.61+debian12~1.gbpbf08e8    amd64        Zend OpCache module for PHP
ii  php8.2-phpdbg                      8.2.24-1+0~20240927.61+debian12~1.gbpbf08e8    amd64        server-side, HTML-embedded scripting language (PHPDBG binary)
ii  php8.2-readline                    8.2.24-1+0~20240927.61+debian12~1.gbpbf08e8    amd64        readline module for PHP
ii  php8.3-bcmath                      8.3.12-1+0~20240927.43+debian12~1.gbpad3b8c    amd64        Bcmath module for PHP
ii  php8.3-cgi                         8.3.12-1+0~20240927.43+debian12~1.gbpad3b8c    amd64        server-side, HTML-embedded scripting language (CGI binary)
ii  php8.3-cli                         8.3.12-1+0~20240927.43+debian12~1.gbpad3b8c    amd64        command-line interpreter for the PHP scripting language
ii  php8.3-common                      8.3.12-1+0~20240927.43+debian12~1.gbpad3b8c    amd64        documentation, examples and common module for PHP
ii  php8.3-fpm                         8.3.12-1+0~20240927.43+debian12~1.gbpad3b8c    amd64        server-side, HTML-embedded scripting language (FPM-CGI binary)
ii  php8.3-mbstring                    8.3.12-1+0~20240927.43+debian12~1.gbpad3b8c    amd64        MBSTRING module for PHP
ii  php8.3-opcache                     8.3.12-1+0~20240927.43+debian12~1.gbpad3b8c    amd64        Zend OpCache module for PHP
ii  php8.3-phpdbg                      8.3.12-1+0~20240927.43+debian12~1.gbpad3b8c    amd64        server-side, HTML-embedded scripting language (PHPDBG binary)
ii  php8.3-readline                    8.3.12-1+0~20240927.43+debian12~1.gbpad3b8c    amd64        readline module for PHP
ii  php8.3-xml                         8.3.12-1+0~20240927.43+debian12~1.gbpad3b8c    amd64        DOM, SimpleXML, XML, and XSL module for PHP
ii  php8.3-yaml                        2.2.3-2+0~20231125.35+debian12~1.gbp22e23d     amd64        YAML-1.1 parser and emitter for PHP

Tu sais où se trouvent les logs liés à la MAJ ?
 
Bonjour EVO,

J'avais essayé ce genre de chose, mais j'ai systématiquement ces erreurs :

Code:
----------
          ID: configure_phpfpm_webgui
    Function: file.managed
        Name: /etc/php/8.2/fpm/pool.d/openmediavault-webgui.conf
      Result: False
     Comment: Parent directory not present
     Started: 11:46:15.687207
    Duration: 1.665 ms
     Changes:
----------
          ID: test_phpfpm_service_config
    Function: cmd.run
        Name: php-fpm8.2 --test
      Result: False
     Comment: Command "php-fpm8.2 --test" run
     Started: 11:46:15.689010
    Duration: 4.071 ms
     Changes:
              ----------
              pid:
                  868603
              retcode:
                  127
              stderr:
                  /bin/bash: line 1: php-fpm8.2: command not found
              stdout:
----------
          ID: restart_phpfpm_service
    Function: service.running
        Name: php8.2-fpm
      Result: False
     Comment: One or more requisite failed: omv.deploy.phpfpm.default.test_phpfpm_service_config, omv.deploy.phpfpm.10webgui.configure_phpfpm_webgui
     Started: 11:46:15.693817
    Duration: 0.005 ms
     Changes:
----------
          ID: monitor_phpfpm_service
    Function: module.run
      Result: False
     Comment: One or more requisite failed: omv.deploy.phpfpm.default.restart_phpfpm_service
     Started: 11:46:15.694228
    Duration: 0.004 ms
     Changes:

Code:
Summary for debian
-------------
Succeeded: 29 (changed=18)
Failed:     4
-------------
Total states run:     33
Total run time:    2.625 s
[ERROR   ] Parent directory not present
[ERROR   ] Command 'php-fpm8.2' failed with return code: 127
[ERROR   ] stderr: /bin/bash: line 1: php-fpm8.2: command not found
[ERROR   ] retcode: 127
[ERROR   ] {'pid': 868603, 'retcode': 127, 'stdout': '', 'stderr': '/bin/bash: line 1: php-fpm8.2: command not found'}
Failed to restart php8.2-fpm.service: Unit php8.2-fpm.service not found.
Done.
 
Voici les résultats :

Code:
ls -alh /etc/php/8.2/
total 20K
drwxr-xr-x 5 root root 4.0K Sep 29 21:18 .
drwxr-xr-x 5 root root 4.0K Sep 29 21:18 ..
drwxr-xr-x 3 root root 4.0K Sep 29 21:22 cli
drwxr-xr-x 2 root root 4.0K Sep 29 21:23 mods-available
drwxr-xr-x 3 root root 4.0K Sep 29 21:23 phpdbg

Code:
ls -alh /etc/php/8.2/fpm/
ls: cannot access '/etc/php/8.2/fpm/': No such file or directory
 
Un peu plus haut il semble que tu ais php8.3-fpm
Donc ça explique l'erreur si ça essaie de pointer sur le 8.2 alors que tu es en 8.3 ça pète.
La question va plutôt être pourquoi ça a été mis à jour vers 8.3 (fpm) alors que tu as (semble t-il) php8.2
Peut être rétrograder php-fpm
 
Bonne question, en tout cas ce n'est pas moi qui ai forcé l'installation/l'utilisation de php 8.3.
Vous savez s'il y a un moyen de downgrader vers la 8.2 sans tout casser ?
Je trouve des choses sur le net mais bon, je vais éviter d'empirer la situation.
 
Bon, je me suis rendu compte que la version php8.2 était mal installée, j'ai donc réinstallé cette version.

De plus, j'ai sélectionné la version 8.2 plutôt que la 8.3 à l'aide de la commande suivante :

Code:
sudo update-alternatives --config php
There are 3 choices for the alternative php (providing /usr/bin/php).

  Selection    Path             Priority   Status
------------------------------------------------------------
  0            /usr/bin/php8.3   83        auto mode
  1            /usr/bin/php7.4   74        manual mode
* 2            /usr/bin/php8.2   82        manual mode
  3            /usr/bin/php8.3   83        manual mode

Press <enter> to keep the current choice[*], or type selection number:

J'espère ne pas avoir fait pire que mieux mais au point où j'en suis :)

Voici les erreurs que j'obtiens désormais :

Code:
more /var/log/nginx/openmediavault-webgui_error.log
2024/10/03 22:22:22 [error] 16269#16269: *8 FastCGI sent in stderr: "PHP message: PHP Fatal error:  Uncaught Error: Call to undefined function mb_strtolower() in /usr/share/php/openmediavault/autoloader.inc:28
Stack trace:
#0 /usr/share/php/openmediavault/env.inc(39): {closure}()
#1 /var/www/openmediavault/rpc.php(24): require_once('...')
#2 {main}
  thrown in /usr/share/php/openmediavault/autoloader.inc on line 28" while reading response header from upstream, client: 172.27.0.9, server: openmediavault-webgui, request: "POST /rpc.php HTTP/1.1", upstream: "fastcgi://u
nix:/run/php/php8.2-fpm-openmediavault-webgui.sock:", host: "monurl", referrer: "https://monurl/"

Code:
omv-engined -f -d
PHP Fatal error:  Uncaught Error: Call to undefined function mb_strtolower() in /usr/share/php/openmediavault/autoloader.inc:28
Stack trace:
#0 /usr/sbin/omv-engined(357): {closure}()
#1 {main}
  thrown in /usr/share/php/openmediavault/autoloader.inc on line 28
omv-engined[20368]: PHP Fatal error: Uncaught Error: Call to undefined function mb_strtolower() in /usr/share/php/openmediavault/autoloader.inc:28
omv-engined[20368]: Stack trace:
omv-engined[20368]: #0 /usr/sbin/omv-engined(357): {closure}()
omv-engined[20368]: #1 {main}
omv-engined[20368]:   thrown in /usr/share/php/openmediavault/autoloader.inc on line 28
PHP Fatal error: Uncaught Error: Call to undefined function mb_strtolower() in /usr/share/php/openmediavault/autoloader.inc:28
Stack trace:
#0 /usr/sbin/omv-engined(357): {closure}()
#1 {main}
  thrown in /usr/share/php/openmediavault/autoloader.inc on line 28

Code:
omv-engined -df
PHP Fatal error:  Uncaught Error: Call to undefined function posix_setsid() in /usr/sbin/omv-engined:150
Stack trace:
#0 /usr/sbin/omv-engined(347): daemonize()
#1 {main}
  thrown in /usr/sbin/omv-engined on line 150
omv-engined[20492]: PHP Fatal error: Uncaught Error: Call to undefined function posix_setsid() in /usr/sbin/omv-engined:150
omv-engined[20492]: Stack trace:
omv-engined[20492]: #0 /usr/sbin/omv-engined(347): daemonize()
omv-engined[20492]: #1 {main}
omv-engined[20492]:   thrown in /usr/sbin/omv-engined on line 150
PHP Fatal error: Uncaught Error: Call to undefined function posix_setsid() in /usr/sbin/omv-engined:150
Stack trace:
#0 /usr/sbin/omv-engined(347): daemonize()
#1 {main}
  thrown in /usr/sbin/omv-engined on line 150

Je me suis rendu dans les fichiers autoloader.inc et omv-engined, mais je ne sais pas quoi faire de plus sur les lignes mentionnées.
Voici les extraits (j'ai indiqué les lignes entre parenthèses) :

Code:
    }

    // Make the current process a session leader.
    if(0 > posix_setsid()) {   (= ligne 150)
        error("Could not detach from terminal\n");
        exit(1);
    }

Code:
$parts = explode("\\", trim($className, "\\"));
    $prefix = array_shift($parts);
    if ("OMV" !== $prefix)
        return;
    array_unshift($parts, "openmediavault");
  $pathName = mb_strtolower(sprintf("%s.inc", implode(DIRECTORY_SEPARATOR,  (= ligne 28)
        $parts)));
    include_once $pathName;
});
 
Bonjour, il y a ici des gens infiniment plus compétent que moi pour t’aider sur le problème de php.

Côté Portainer, Volker avais clairement indiqué qu’il ne le prenait plus en charge depuis OmvExtra.

Par contre tu le retrouve via Service/Compose/Files/Create from example.

Et c’est bien plus propre et logique ainsi.

Pour ce qui es des MAJ par la suite ; j’utilise les commandes suivantes (exemple avec la dernière version CE dispo) :

Pour arrêter puis supprimer l'ancienne version. Vos autres applications/conteneurs ne seront pas supprimés.

docker stop portainer

Puis

docker rm portainer

Maintenant que vous avez arrêté et supprimé l'ancienne version de Portainer, vous devez vous assurer que vous disposez de la version la plus récente de l'image localement. Vous pouvez le faire avec une docker pullcommande :

docker pull portainer/portainer-ce:2.21.0

Enfin, déployez la version mise à jour de Portainer :

Édition communautaire

docker run -d -p 9443:9443 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:2.21.0

Tester plusieurs fois sans souci et c’est l’occasion d’adapter les ports à tes configurations le cas échéant.

Bon courage avec la récup d’un système propre et fonctionnel.