
Voilà un moment que je cherchais comment mettre à jour proprement mon instance Docker de Nextcloud. En fait l’info était bien disponible, bien que peu détaillée, sur la page du container, mais je me mélangeais un peu les pinceaux entre l’image, le container, et l’application elle-même.
Voilà ce qui est indiqué dans la documentation fournie par Linuxserver.io, ce n’est pas hyper clair, et la section « Updating Info » pour chaque container n’est vraiment ni détaillée ni très explicite :
La plupart de nos images sont statiques, versionnées, et nécessitent une mise à jour de l’image et une recréation du conteneur pour mettre à jour l’application qu’elles contiennent. À quelques exceptions près (par exemple, nextcloud, plex), nous ne recommandons ni ne prenons en charge la mise à jour des applications à l’intérieur du conteneur.
Sur les forums Docker, on déconseille également l’utilisation de Portainer, l’interface fournie par défaut dans OpenMediaVault pour gérer ses images et containers Docker. En particulier pour des problèmes de gestion de version des applications justement.
Donc pour la création d’un nouveau container, rien ne vaut une bonne vieille commande docker run
, et tant qu’à faire autant la mettre dans un script pour pouvoir la réutiliser facilement. Pour Plex, cela suffira à utiliser la dernière version de l’application au sein de ce nouveau container. Pour Nextcloud, on procédera de la même manière pour mettre à jour le container (si nécessaire), sinon on passera par l’interface de Nextcloud pour faire les mises à jour, cela fonctionne très bien.
Enfin, je parlerai vite fait de la mise à jour d’OMV lui-même à la fin de l’article.
Allons-y…
Plex
Commençons par le plus simple… J’ai commencé par vouloir faire la mise à jour à partir de Portainer : mais j’avais beau recréer une nouvelle image puis un nouveau container, ce n’était jamais la bonne version de binaire qui était exécutée quand je vérifais les logs.
Après plusieurs essais infructueux, j’ai fini par poser des questions sur un forum Discourse consacré à Docker. On m’a alors fortement déconseillé l’utilisation de Portainer typiquement pour les problèmes que j’avais observés. On me recommandait d’utiliser les commandes docker
, directement, afin d’éviter tout problème.
J’ai donc fini par faire un script pour recréer un nouveau container (plex2023) comme si c’était la première création, tout en gardant les mêmes emplacements pour mes dossiers médias bien entendu. Ça donne ceci dans mon cas :
docker run -d --name=plex2023 --net=host -e PUID=997 -e PGID=100 -e VERSION=docker -v /srv/dev-disk-by-label-DATA/AppData/Plex:/config -v /srv/dev-disk-by-label-DATA/OMV-DATA/Series:/Series -v /srv/dev-disk-by-label-DATA/OMV-DATA/Films:/Films -v /srv/dev-disk-by-label-DATA/OMV-DATA/Docus:/Docus lscr.io/linuxserver/plex:latest
Voilà, c’est tout simple. Il suffit d’arrêter l’ancien container Plex et de lancer celui-ci, et c’est la dernière version de Plex qui tourne. Une fois que l’on a vérifié que tout fonctionne correctement, il ne reste plus qu’à effacer l’ancien container.
Nextcloud
Mise à jour majeure
Pour passer d’une version majeure à une autre, ou cas de problème lors d’une mise à jour via l’interface comme ci-dessus, il peut être aussi simple de recréer de nouveaux containers à partir de nouvelles images.
On commence par arrêter les 3 containers (nextcloud-mariadb-swag), puis télécharger les dernières versions des images Docker. Là aussi, autant passer passer par le mode commande de Docker, c’est aussi simple et plus clair :
$ sudo docker image pull linuxserver/nextcloud:latest
$ sudo docker image pull linuxserver/mariadb:latest
$ sudo docker image pull linuxserver/swag:latest
Les nouvelles images vont apparaître dans Portainer, ce sont celles-ci qui seront utilisées pour créer les containers. Pour cela, je vais utiliser Portainer et les « stacks » qui sont bien pratiques pour tout créer en une seule fois. J’ai juste changé le nom des containers pour me repérer (en ajoutant « 2023 » à la fin), et gardé les mêmes chemins des volumes (config, data…). Pour les détails de la config, voir le premier article sur la création du container Nextcloud.
--- version: "2.1" services: nextcloud: image: linuxserver/nextcloud container_name: nextcloud2023 environment: - PUID=997 - PGID=100 - TZ=Europe/Paris volumes: - /srv/dev-disk-by-label-DATA/AppData/Nextcloud/config:/config - /srv/dev-disk-by-label-DATA/AppData/Nextcloud/data:/data ports: - 443:443 depends_on: - mariadb restart: unless-stopped mariadb: image: linuxserver/mariadb container_name: nextclouddb2023 environment: - PUID=997 - PGID=100 - MYSQL_ROOT_PASSWORD=keepsecret - TZ=Europe/Paris volumes: - /srv/dev-disk-by-label-DATA/AppData/Nextclouddb:/config ports: - 3306:3306 restart: unless-stopped swag: image: linuxserver/swag container_name: swag2023 cap_add: - NET_ADMIN environment: - PUID=997 - PGID=100 - TZ=Europe/Paris - URL=xxx.pled.fr - SUBDOMAINS=nextcloud - VALIDATION=http - EMAIL=yyy@zzz volumes: - /srv/dev-disk-by-label-DATA/AppData/swag:/config ports: - 444:443 - 81:80 restart: unless-stopped
Penser tout de même à vérifier sur les pages de linuxserver (ici pour nextcloud) pour chaque container si les paramètres à utiliser n’ont pas changé.
Une fois les containers créés, il n’y a plus qu’à les lancer. Mais en procédant ainsi, Nextcloud n’est pas mis à jour, je suis toujours en version 23 (comme pour Plex plus haut donc). Pourtant quand je regarde mon image Docker, c’est bien la v25 (qui est censée fournir Nextcloud 25) :
$ sudo docker inspect -f '{{ index .Config.Labels "build_version" }}' nextcloud2023
[sudo] password for pascal:
Linuxserver.io version:- 25.0.2-ls216 Build-date:- 2023-01-08T09:28:17-06:00
Ce n’est donc pas suffisant, même si c’est toujours utile de mettre à jour le container. J’ai fini par tomber sur cette page, qui donne la bonne solution (et même 2 manières de procéder, j’ai choisi la seconde puisqu’il est mentionné que c’est la meilleure). Et tout a parfaitement fonctionné.
ssh
sur la machine, cela peut toujours servir. On peut aussi directement exécuter les comandes occ upgrade
à partir de la console que propose Portainer pour le container Nextcloud.
Je lance donc la première commande une fois connecté en ssh à mon NAS OMV : à noter que c’est bien l’utilisateur abc
qu’il faut utiliser ! J’ai d’abord cru à un exemple et remplacé par admin
ou mon nom d’utilisateur nextcloud, mais non, il faut garder la commande telle quelle.
Répondre « yes » pour l’update, puis « no » pour l’upgrade d’occ. Garder le mode maintenance actif si c’est demandé.
$ sudo docker exec -it nextcloud2023 sudo -u abc php /config/www/nextcloud/occ upgrade
Nextcloud or one of the apps require upgrade - only a limited number of commands are available
You may use your browser or the occ upgrade command to do the upgrade
Setting log level to debug
Updating database schema
Updated database
Updating ...
Updated to 1.12.0
Updating ...
Updated to 1.12.0
Updating ...
Updated to 1.14.0
Updating ...
Updated to 1.19.0
Updating ...
Updated to 2.16.0
Updating ...
Updated to 1.7.0
Updating ...
Fix broken values of calendar objects
Done
0/0 [->--------------------------] 0%
Clean up old calendar subscriptions from deleted users that were not cleaned-up
Done
0/0 [----->----------------------] 0%
Updated to 1.22.0
Updating ...
Updated to 1.16.2
Updating ...
Updated to 1.14.0
Updating ...
Updated to 1.17.0
Updating ...
Updated to 2.6.0
Updating ...
Updated to 1.14.0
Updating ...
Updated to 2.13.0
Updating ...
Updated to 1.13.0
Updating ...
Updated to 2.12.1
Updating ...
Updated to 1.15.0
Updating ...
Migrate old user config
Done
1/1 [============================] 100%
Updated to 1.10.0
Updating ...
Updated to 7.4.0
Updating ...
Updated to 1.14.0
Updating ...
Updated to 2.5.0
Updating ...
Updated to 1.3.0
Updating ...
Updated to 2.9.0
Updating ...
Updated to 1.6.0
Updating ...
Updated to 1.8.0
Updating ...
Updated to 1.14.0
Updating ...
Updated to 1.3.0
Updating ...
Updated to 1.14.0
Updating ...
Updated to 1.6.0
Updating ...
Updated to 1.7.0
Updating ...
Updated to 1.12.0
Updating ...
Updated to 3.5.1
Updating ...
Updated to 1.13.0
Updating ...
Updated to 1.14.0
Updating ...
Updated to 1.4.0
Updating ...
Updated to 1.8.0
Starting code integrity check...
Finished code integrity check
Update successful
Maintenance mode is kept active
Resetting log level
Tout cela prend un peu de temps, mais la commande s’exécute sans erreur. Puis on lance la deuxième commande pour mettre à jour occ (le nom vient à l’origine de owncloud console) :
$ docker exec -it nextcloud sudo -u abc php /config/www/nextcloud/occ upgrade
Enfin, on désactive le mode maintenance :
$ sudo docker exec -it nextcloud2023 sudo -u abc php /config/www/nextcloud/occ maintenance:mode --off
Et voilà : j’ai enfin mis à jour mon container Nextcloud ! Il ne reste plus qu’à aller sur la page web pour vérifer tout ça.

Mise à jour mineure
Plus tard, pour une mise à jour mineure, j’ai utilisé l’interface de Nextcloud, il s’agissait de passer de la v25.0.2 à la v25.0.12. Et tout s’est passé sans souci. Il y a deux étapes, il faut patienter un peu, mais globalement c’est parfait .

OMV
Pour OMV, la première chose à faire est d’aller dans le Gestionnaire de mises à jour et de les appliquer. Il y a peut-être un paquet openmediavault
de proposé parmi toutes les mises à jour disponibles. En fait c’est l’équivalent d’un sudo apt update ; sudo apt upgrade
en ligne de commande.
Je l’ai fait récemment, et je suis passé en 5.6.26-1 :
$ sudo apt policy openmediavault
[sudo] password for pascal:
openmediavault:
Installed: 5.6.26-1
Candidate: 5.6.26-1
Version table:
*** 5.6.26-1 500
500 http://packages.openmediavault.org/public usul/main armhf Packages
500 https://openmediavault.github.io/packages usul/main armhf Packages
100 /var/lib/dpkg/status
Il y a aussi la commande omv-upgrade
, qui fait exactement la même chose, comme l’indique la documentation.
En l’état, je suis donc en OMV v5 avec un système avec les toutes dernières mises à jour de cette version. Comment faire pour passer en OMV v6 ? Ce sera la commande omv-release-upgrade
, et la documentation indique ceci :
omv-release-upgrade Il s’agit d’un script qui n’est inclus que dans les dernières versions d’openmediavault avant de passer à la version majeure suivante, par exemple de 5.6.x à 6.x. Cette commande migre le système vers la version majeure suivante d’openmediavault (qui inclut généralement une mise à jour de la distribution Debian).
Personnellement, je ne l’ai pas encore fait, puisque tout fonctionne comme je le souhaite avec la v5. Je verrai cela plus tard. D’autant que OMV 6 est basé sur Bebian 11 (Bullseye), le script effectuera en même temps la mise à jour du système puisque je suis en Debian 10 Buster :

Ce n’est donc pas une « minor update », mais bien une « major upgrade » ! Il faut donc préparer sérieusement ce genre de mise à jour avant de se lancer ! On trouve des conseils sur cette page du forum OMV. Les pré-requis sont indiqués ici.
Conclusion
Je suis plutôt content, car ça faisait un bout de temps que je voulais mettre à jour mon Nextcloud sans trouver la bonne méthode. Avec celle décrite ici, c’est nickel.
J’ai pu aussi voir les limites de Portainer, car j’ai passé du temps et fait pas mal d’essais infructueux pour essayer d’upgrader Plex. Finalement le mode commande de Docker est très puissant, assez simple à utiliser, la documentation bien faite, alors autant l’utiliser parce qu’au on est sûr de ce que l’on fait… et ça marche !
Salut,
Merci pour ton topic.
En attendant entre tes deux super billets pour ton install plex sur odroid O2 et celui-ci tu as franchi un step…
C’est à dire que le néophyte pouvait suivre le premier tuto, celui ci est désormais trop compliqué pour moi.
Je vais refaire une install
Merci en tout cas 😉