Nextcloud sur NAS Synology : mise à jour version 13 à 14

Hier, je me suis décidé à passer mon instance NextCloud de la version 13 à la version 14. Mon instance NextCloud tourne sur la baie Synology (voir cet article pour l’installation).

En effet, j’avais des soucis lors du transfert de photos du smartphone vers NextCloud qui échouaient de manière aléatoire et avec un « error unknown » dans les logs côté smartphone… Problème pas forcément lié, mais j’ai préféré commencer par installer une version plus récente avant d’investiguer plus loin côté smartphone.

La mise à jour automatique proposée via l’interface web de Nextcloud échouant avec un message « Extracting : Can’t handle Zip file. Error code is : 28″(problème sans doute du à la version Zip utilisée par le serveur PHP de Synology), j’ai du y aller à la mano, et même si ce que j’ai fait n’est pas nickel, cela a finit par fonctionner. Alors voilà un petit retour, si ça peut aider…

Je me suis ensuite reporté sur une page du forum d’aide nextcloud décrivant l’opération manuelle d’une mise à jour sur Synology, mais la première commande occ (owncloud console, un script php) pour passer le serveur en mode maintenance échouait :

sudo -u http php70 occ maintenance:mode --on
An unhandled exception has been thrown:
Doctrine\DBAL\DBALException: Failed to connect to the database: An exception occured in driver: could not find driver in /volume1/web/nextcloud/lib/private/DB/Connection.php:64

Peut-être un problème d’extension PHP sur la baie Synology ? 🙁

Bref, je recommence alors en suivant les instructions indiquées par NextCloud sur la page « Update manually« . On verra que par la suite je suis retombé sur la même erreur avec occ, mais que la mise à jour a tout de même pu se terminer via la page web. J’ai aussi du installer deux extensions php supplémentaires : intl et iconv.

Allez hop, on commence par télécharger la dernière version de NextCloud. En l’occurrence, j’ai préféré télécharger le version 14 car les mises à jour (upgrade) en sautant une version majeure ne sont pas supportées (Skipping major releases is not supported). J’ai donc récupéré ici le fichier nextcloud-14.0.7.zip que j’ai ensuite copié sur la baie Synology en utilisant le « File Station » de DSM.

Ensuite il faut se logguer en ssh sur la baie Synology, passer root, se déplacer au bon endroit, puis recopier le fichier nextcloud récupéré précédemment dans le répertoire courant :

sudo su
cd /volume1/web
cp /volume1/homes/pascal/nextcloud-14.0.7.zip .

J’ai ensuite passé le serveur en mode maintenance manuellement. Pas sûr d’ailleurs que cette étape soit réellement nécessaire, cela empêche les accès pendant la phase de mise à jour, alors si vous êtes seul à utiliser votre serveur…). Néanmoins, il suffit d’éditer le fichier config.php dans le répertoire config, et de passer le paramètre ‘maintenance’ à ‘true’ avec l’aide de vi, l’éditeurdont il est utile de connaître les bases…

cd nextcloud/config
vi config.php

Sauvegarde

Comme il faut tout de même essayer de faire les choses bien, on fait une sauvegarde des fichiers au cas où :

rsync -avx nextcloud/ nextcloud-dirbck_`date +"%Y%m%d`/

Pour la base de données, la commande ‘mysqldump’ ne fonctionnant pas (problème Synology certainement), je suis passé par phpMyAdmin de DSM pour faire une sauvegarde de la base de données nextcloud.

On peut maintenant passer à la mise à jour proprement dit. Nous allons d’abord renommer le répertoire nextcloud existant, puis dézipper le fichier de la version 14 (ce qui crée un nouveau répertoire nextcloud), et enfin copier l’ancien fichier config.php à la place du nouveau :

cd /volume1/web
mv nextcloud nextcloud-old
7z x nextcloud-14.0.7.zip .
cp ./nextcloud-old/config/config.php ./nextcloud/config/config.php

Il n’y a rien à faire pour les data, puisque le répertoire est placé dans /volume1/homes/pascal/NextCloud (voir installation). Et je n’utilise pas d’application « 3rd party ».
Reste à appliquer les permissions comme lors de l’installation. Le script est toujours là, il suffit donc de le lancer (toujours en tant que root !) :

./nextcloud-permissions.sh

Jusque là tout s’est bien passé. Mais il faut maintenant lancer la commande d’upgrade, et celle-ci va échouer comme attendu (même problème que pour passer en mode maintenance) :

sudo -u http php70 occ upgrade
An unhandled exception has been thrown:
Doctrine\DBAL\DBALException: Failed to connect to the database: An exception occured in driver: could not find driver in /volume1/web/nextcloud/lib/private/DB/Connection.php:64

Ce serait bien sûr sympa de trouver la solution à ce message d’erreur, mais je n’ai pas fait de recherches sur ce point. J’ai repassé le serveur en ‘maintenance’ => false, puis je me suis contenté de recharger la page web de mon instance Nextcloud, et là miracle, l’upgrade a commencé à s’exécuter :

Puis j’ai eu une erreur heureusement sans conséquence :

Lancement de la vérification d’intégrité du code
Une erreur est survenue.
Veuillez recharger la page.

J’ai rechargé la page, et tout s’est bien passé. Je suis tout de même allé voir dans les Paramètres – Journalisation, et j’ai vu un message récurrent à propos d’une extension php intl manquante. D’ailleurs, le lendemain, en passant par l’application Nextcloud d’Ubuntu, j’ai vu un autre problème similaire avec l’extension iconv. Je suis donc allé via DSM, ouvert Web Station, et ajouté ces deux extensions :

Et voilà… Mon instance Nextcloud est désormais opérationnelle et en version 14.0.7.

Peut-être les problèmes PHP rencontrés sont dus à des extensions manquantes ? J’ai également noté que j’ai encore la version 5.6 d’installée, même si c’est la version 7 qui est déclarée par défaut… Le fait que l’upgrade se soit lancée via l’interface web me fait penser que l’environnement via la connexion SSH ne doit pas être correct. À voir, pour la prochaine mise à jour !! j’attends un peu pour la version 15, rien ne presse.

 

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *