Page modifiée le :

Mise à jour de Nextcloud 25 à 26 et de Debian 11 à 12 sur Freebox Delta

Préambule :

Pense bête suite au 2 autres articles : Comment mettre à jour un Nextcloud 25 sur Debian 11 avec php 7.4 incompatible avec Nextcloud 26 avec php 8.2 qui est incompatible avec Nextcloud 25. Vouloir mettre à jour l'un implique mettre à jour l'autre.

Prérequis :

Vous devez avoir une VM debian 11 (stable) avec un nextcloud 25.x à jour. Les datas de Nextcloud sont dans un dossier à part. La base de données est MariaDB. Je conserve en l'état les données et la base.

Sauvegarde de votre VM :

Il n'y a pas de procédure automatique pour tout mettre à jour d'un coup. Il est important de sauvegarder votre VM. En cas d'erreur, il n'est pas possible de revenir en arrière.

Arrêtez votre VM debian 11 avec Nextcloud. Faite une copie de la VM xxxx.qow2 et du fichier xxxx.efivars.

Mettez à jour la VM debian 11 pour passer en debian 12 (Testing).

Faite une mise à jour de la VM (apt update puis apt upgrade).

Édition du fichier /etc/apt/sources.list (update et backport sont désactivés en attendant la sortie officielle de bookworm).

freebox@my1:~$ sudo nano /etc/apt/sources.list
deb  bookworm main   
deb-src  bookworm main   
deb  bookworm-security main   
deb-src  bookworm-security main   
\# deb  bullseye-updates main   
\# deb-src  bullseye-updates main   
\# deb  bullseye-backports main   
\# deb-src  bullseye-backports main

Puis

freebox@my1:~$ sudo apt update
freebox@my1:~$ sudo apt upgrade
freebox@my1:~$ sudo apt dist-upgrade

Vous avez maintenant une VM debain 12 avec un Nextcloud 25.x. Et Nextcloud ne marche plus 😱 .

Deux commandes m’ont aidés à trouver ce qui n'allait pas
root@my1:/home# cat /var/log/apache2/error.log

root@my1:/home# sudo -u www-data php /var/www/nextcloud/occ maintenance:mode --off
Nextcloud 26 :

On met de coté l'ancienne version de Nextcloud, on télécharge la dernière version de Nextcloud 26, On récupère le config.php de Nextcloud 25 et on fini par donner les droits à www-data.

root@my1:/home/freebox# mv -R /var/www/nextcloud /var/www/nextcloud-25 
root@my1:/home/freebox# wget https://download.nextcloud.com/server/releases/latest-26.zip 
root@my1:/home/freebox# unzip latest-26.zip
root@my1:/home/freebox# cp nextcloud-25/config/config.php nextcloud/config/config.php
root@my1:/home/freebox# chown -R www-data nextcloud
Php 8.2 :

Et Nextcloud ne marche plus 😱 . La mise à jour de Debian conserve l'ancienne configuration php 7.4. On désactive php 7.4 d'Apache et on active php 8.2.

root@my1:/home/freebox# a2dismod php7.4
root@my1:/home/freebox# a2enmod php8.2
root@my1:/home/freebox# update-alternatives --set php /usr/bin/php8.2
root@my1:/home/freebox# update-alternatives --set phar /usr/bin/phar8.2
root@my1:/home/freebox# update-alternatives --set phar.phar /usr/bin/phar.phar8.2
root@my1:/home/freebox# update-alternatives --set phpize /usr/bin/phpize8.2
root@my1:/home/freebox# update-alternatives --set php-config /usr/bin/php-config8.2
Driver manquant pour la base de données :

Pourquoi ? la mise à jour ne m'as pas réinstallé php-mysql en version 8.2.

root@my1:/home/freebox# apt install php-mysql
root@my1:/home/freebox# systemctl restart apache2
root@my1:/home/freebox# nano /var/www/nextcloud/data/nextcloud.log
root@my1:/home/freebox# cp -R /var/www/nextcloud-25/data /var/www/nextcloud/ 
root@my1:/home/freebox# chown -R www-data /var/www/nextcloud/data
On récupère l'ancienne conf de php :
root@my1:/home/freebox# cp /etc/php/7.4/apache2/conf.d/99-nextcloud.ini /etc/php/8.2/apache2/conf.d/
root@my1:/home/freebox# systemctl restart apache2
On lance la mise à jour de Nextcloud :
root@my1:/home/freebox# sudo -u www-data php /var/www/nextcloud/occ upgrade
On lance une reparation :
root@my1:/home/freebox# sudo -u www-data php --define apc.enable_cli=1 /var/www/nextcloud/occ maintenance:repair 
root@my1:/home/freebox# sudo -u www-data php --define apc.enable_cli=1 /var/www/nextcloud/occ db:add-missing-indices
Finalisation :

A ce stade, on doit avoir accès à Nextcloud via un navigateur. Dans Paramètres d'administration -> Vue d'ensemble, vérifier ce qui manque.

root@my1:/home/freebox# apt install php-intl 
root@my1:/home/freebox# a2enmod php-intl 
root@my1:/home/freebox# a2enmod intl
root@my1:/home/freebox# apt install php8.2-intl
root@my1:/home/freebox# systemctl restart apache2
Cron :

Cron ne se lance pas. Créer le crontab de www-data :

root@my1:/home/freebox# sudo -u www-data crontab -e
# Edit this file to introduce tasks to be run by cron.
# 
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
# 
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').
# 
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
# 
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
# 
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
# 
# For more information see the manual pages of crontab(5) and cron(8)
# 
# m h  dom mon dow   command

*/5  *  *  *  * /usr/bin/php -f /var/www/nextcloud/cron.php

Le cron ne marche pas, on configure php apcu pour les scripts cli.

root@my1:/home/freebox# nano /etc/php/8.2/cli/conf.d/99-apcu.ini 
apc.enable_cli=1

On test :

root@my1:/home/freebox# sudo -u www-data /usr/bin/php -f /var/www/nextcloud/cron.php

Conclusion :

Ce n'est pas tout automatique, mais on s'en sort avec les messages d'erreur qui aiguillent bien.