Migrer de Nextcloud Hub 7 (27.0.x) à Hub 8 (28.0.x) avec Docker

Feuille blanche dans une machine à écrire Olympia avec écrit en gros "Update"
Photo by Markus Winkler / Unsplash

Je viens juste de finir la migration de mon Nextcloud auto-hébergé, de sa version 27.0.2, qui correspond au Hub 7, à la version 28.0.2 qui est le Hub 8.

J'ai rencontré 3 petits irritants techniques à l'issue de la migration, donc je voulais les noter ici pour ne pas les oublier si jamais ça devait arriver (encore) dans le futur. Et si ça peut vous aider dans votre migration, c'est tant mieux ! C'est ça, la magie d'Internet.

Environnement Docker

Avant de commencer le processus de migration, et pour être sûr que la suite peut s'appliquer à votre cas, je vous présente mon installation. Il s'agit d'un environnement 100 % Docker avec 3 conteneurs :

  • Nextcloud, basé sur l'image nextcloud en version 27.0.2 ;
  • Redis, basé sur l'image redis ;
  • MariaDB, basé sur l'image mariadb.

Les étapes de la migration

Pour faire ma migration, je réalise les étapes suivantes (manuellement) :

Faire des back-up de mes données

Pour ce faire, une copie des volumes contenant mes données et ma configuration nextcloud, sans oublier la base de données MariaDB, me suffit.

sudo cp -r mariadb-data/ mariadb-data-backup-04022024
sudo cp -r nextcloud-data/ nextcloud-data-backup-04022024

Update le fichier docker-compose.yml

Ensuite, on update le fichier docker-compose.yml correspondant à votre installation en passant la version de l'image de nextcloud de la version 27.0.2 à la version 28.0.2.

⚠️
Attention de bien update vers la dernière version patchée (ici, il faut aller jusqu'en 27.0.2) avant de changer de version majeure !
nextcloud:
  image: nextcloud:28.0.2

Relancer votre compose

Une fois votre fichier compose modifié, vous pouvez relancer le tout avec un :

docker compose up -d

Regarder les logs de Nextcloud et vérifier que tout va bien

La dernière étape consiste à vérifier les logs de Nextcloud et vous assurez que tout va bien pendant la mise-à-jour, et après en allant voir la page de résumé de votre instance dans le menu d'administration.

Pour voir les logs pendant la mise-à-jour, je regarde tout simplement les logs du conteneur :

docker logs -f --tail 200 nextcloud

Les irritants à corriger

En regardant le dashboard sur votre Nextcloud flambant neuf, vous aurez probablement 3 problèmes :

  • le plugin PHP bz2 n'est pas installé ;
  • vous n'avez pas indiqué de valeur pour la propriété maintenance_window_start ;
  • vous avez plusieurs milliers d'erreurs dans vos logs qui vous sont maintenant indiquées.
❤️‍🩹
On commence tout de suite par déstresser : votre instance n'est pas en train d'exploser ! Son fonctionnement reste normal. Donc prenez une grande respiration et traitez les problèmes un par un, sans paniquer.

Installer le plugin PHP bz2

Pour installer le plugin PHP manquant, vous allez devoir le faire directement dans votre conteneur.

💡
Note : ce plugin n'est probablement pas utilisé mais comme il est passé dans la liste des "recommandés", il y a maintenant un warning indiquant son absence, même s'il ne sert pas... Encore une information et une installation potentiellement inutile qui vient polluer vos remontées d'administration dans votre dashboard...

La commande magique :

docker exec -ti nextcloud apt-get update && apt-get install -y libbz2-dev && docker-php-ext-install bz2

Un petit restart du conteneur n'est pas de refus :

docker compose restart nextcloud

La source de l'information est là : https://help.nextcloud.com/t/docker-image-setup-warning-missing-bz2-after-update-to-nc-28-0-0/176605/4

La question qui se pose est donc : pourquoi ce paquet n'est pas installé directement à la génération de l'image Docker fournie ? Il y a un lien vers le ticket GitHub associé, si vous souhaitez y faire un tour.

Mettre une valeur à maintenance_window_start

Pour initialiser cette variable, vous pouvez la mettre à "1", ce qui indiquera alors d’exécuter certaines tâches à partir de 1 heure du matin et pendant les 4 heures suivantes. On va utiliser la ligne de commande occ fournie par Nextcloud pour modifier le fichier config.php de votre instance :

$ docker exec -ti --user www-data nextcloud /var/www/html/occ config:system:set maintenance_window_start --value="1" --type=integer
System config value maintenance_window_start set to integer 1

Et on n'oublie pas de restart le conteneur again :

docker compose restart nextcloud

Et voici le lien vers une source indiquant la solution : https://help.nextcloud.com/t/nextcloud-server-has-no-maintenance-window-start-time-configured-error/180556.

Et surtout, le lien vers la documentation : https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/background_jobs_configuration.html#maintenance-window-start

Gérer les milliers d'erreurs

Pourquoi avez-vous, d'un coup lors du changement de version, des milliers d'erreurs qui apparaissent dans votre tableau de bord d'administration de votre instance Nextcloud ?

C'est une excellente question, que tout le monde se pose ! Pour information, ces erreurs ne sont probablement pas nouvelles, ni liées à votre changement de version. Elles devaient déjà exister avant. Mais là, elles sont mises en avant directement dans votre tableau de bord.

C'est assez anxiogène pour beaucoup, et une réflexion est en cours sur le sujet côté Nextcloud apparemment (puisqu'ils n'ont apparemment pas beaucoup réfléchi aux conséquences en amont...).

Pas de réponse magique de mon côté, à part le fait de rester calme ! Vous pouvez aller faire un tour dans vos logs côté Nextcloud et essayer de comprendre d'où viennent les erreurs. De mon côté, par exemple, c'était surtout l'application "sharerenamer" qui plantait. Ne l'utilisant finalement pas, je l'ai supprimée et je vais voir si cela s'arrange.

Bon courage dans votre mise-à-jour !

Mastodon