Mettre à jour Nextcloud via le terminal

J’évite autant que faire ce peut les GUI pour la réalisation de mes tâches d’administration. Je préfère la simplicité et la lisibilité d’une bonne veille ligne de commande. Depuis la version 10, les développeurs de Nextcloud ont mis en place l’application Updater qui permet de mettre à jour automatiquement Nextcloud lorsqu’une version mineure est publiée, mais nous laisse la main pour migrer sur une version majeur le tout réalisable depuis l’interfac web d’amdministration. En ce jour de mise à jour majeure j’ai eu envie de passer par le terminal.

Vérifier les droits

Il est important que les droits sur le répertoire d’installation de Nextcloud soient configurés correctement. Par sécurité seul l’utilisateur web doit pouvoir modifier ces fichiers. C’est pour cela qu’il est recommandé d’exécuter la commande de mise à jour via cet utilisateur. A noter qu’il est possible d’effectuer la mise à jour en root mais il faudra par la suite réaffecter les droits correctements. Pour vérifier les droits sous Debian :

 ls -la /var/www/nextcloud
total 160
drwxr-xr-x 14 www-data www-data  4096 oct.  11 10:31 .
drwxr-xr-x 16 www-data www-data  4096 oct.   9 11:24 ..
drwxr-xr-x 32 www-data www-data  4096 oct.  11 10:31 3rdparty
drwxr-xr-x 48 www-data www-data  4096 oct.  11 10:36 apps
-rw-rw----  1 www-data www-data 12063 oct.  11 10:31 AUTHORS
drwxr-xr-x  2 www-data www-data  4096 oct.  11 10:35 config
-rw-rw----  1 www-data www-data  3805 oct.  11 10:31 console.php
-rw-rw----  1 www-data www-data 34520 oct.  11 10:31 COPYING
drwxr-xr-x 23 www-data www-data  4096 oct.  11 10:31 core
-rw-rw----  1 www-data www-data  4986 oct.  11 10:31 cron.php
-rw-rw----  1 www-data www-data  2478 oct.  11 10:35 .htaccess
-rw-rw----  1 www-data www-data   156 oct.  11 10:31 index.html
-rw-rw----  1 www-data www-data  3172 oct.  11 10:31 index.php
drwxr-xr-x  6 www-data www-data  4096 oct.  11 10:31 lib
-rwxr-xr-x  1 www-data www-data   283 oct.  11 10:31 occ
drwxr-xr-x  2 www-data www-data  4096 oct.  11 10:31 ocm-provider
drwxr-xr-x  2 www-data www-data  4096 oct.  11 10:31 ocs
drwxr-xr-x  2 www-data www-data  4096 oct.  11 10:31 ocs-provider
-rw-rw----  1 www-data www-data  2951 oct.  11 10:31 public.php
-rw-rw----  1 www-data www-data  5139 oct.  11 10:31 remote.php
drwxr-xr-x  4 www-data www-data  4096 oct.  11 10:31 resources
-rw-rw----  1 www-data www-data    26 oct.  11 10:31 robots.txt
drwxr-xr-x 12 www-data www-data  4096 oct.  11 10:31 settings
-rw-rw----  1 www-data www-data  2232 oct.  11 10:31 status.php
drwxr-xr-x  3 www-data www-data  4096 oct.  11 10:31 themes
drwxr-xr-x  2 www-data www-data  4096 févr. 27  2019 updater
-rw-rw----  1 www-data www-data   101 oct.  11 10:31 .user.ini
-rw-rw----  1 www-data www-data   362 oct.  11 10:31 version.php

Si ce n’est pas le cas il faut les accorder à l’utilisateur web, sous Debian cela donne :

sudo chown -R www-data:www-data /var/www/nextcloud
sudo chmod -R 775 /var/www/nextcloud/

Mettre à jour

Toujours dans le répertoire Nextcloud /var/www/nextcloud :

sudo -u www-data php updater/updater.phar

A cet instant le processus est lancé.

image

Pour terminer le programme vous demande si vous souhaitez garder le mode maintenance activé ou non.

Applications Tierces

A cette même occasion il est possible de mettre à jour les applications tierces téléchargées depuis le dépôt.

Vérifier les mises à jour.

sudo -u www-data php occ update:check
Update for files_rightclick to version 0.15.1 is available.
1 update available

Mettre à jour

sudo -u www-data php occ app:update --all
files_rightclick new version available: 0.15.1
files_rightclick updated

Il est possible de mettre à jour une application en particulier.

sudo -u www-data php occ app:update <nom_de_l'application>

Problème rencontré

Durant la mise à jour j’ai rencontré le message d’erreur suivant :

Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes

image

En fouillant le forum Nextcloud j’ai trouvé la solution à mon problème.

sudo mysql -u root -p
MariaDB [(none)]> use nextcloud;
MariaDB [nextcloud]> set global innodb_large_prefix=on;
MariaDB [nextcloud]> set global innodb_file_format=Barracuda;
sudo -u www-data php occ maintenance:repair