Mettre à jour Owncloud manuellement

Lorsqu’une nouvelle version de Owncloud est disponible, il est normalement possible de faire cette mise à jour depuis l’interface d’administration.
Sauf que j’ai systématiquement une erreur du type

Unable to move /var/www/owncloud/_oc-upgrade/VERSION/core/resources to /var/www/owncloud/resources

Donc j’ai décidé de passer par la méthode manuelle en ligne de commande, fiable et efficace.
Dont voici les détails:

Sauvegarder

On commence par une sauvegarde préventive. Car Owncloud est facétieux…
Donc si possible, on sauvegarde le dossier des données utilisateurs.

sudo cp -a /home/yunohost.app/owncloud/data ~/owncloud_data

Désactiver les applications tierces

Et oui, owncloud n’aime pas les applications tierces. La mise à jour échouera si des applications tierces sont activées. Il faut donc les désactiver avant de poursuivre.

Mode maintenance

On passe en mode maintenance pour s’assurer qu’aucun utilisateur ne viennent faire des bêtises pendant la mise à jour.

cd /var/www/owncloud
sudo -u owncloud php occ maintenance:mode --on

Téléchargement de la mise à jour

On télécharge la version proposée par notre owncloud, et surtout pas la dernière version. Car les mises à jour doivent se faire dans l’ordre.
On trouvera le lien vers l’archive à télécharger sur le site d’owncloud. (Et on ne se laisse toujours pas tenter par la dernière version!)

cd ~
wget download.owncloud.com

Décompression de l’archive

tar xjf owncloud-VERSION

On déplace owncloud

Le dossier owncloud va être renommé en owncloud.old pour laisser la place à la nouvelle version.

sudo mv /var/www/owncloud /var/www/owncloud.old

Copie du fichier de config

On copie le fichier de config dans la nouvelle version.
Et on le fait avant de placer le dossier à sa place pour garder le mode maintenance activé.

sudo cp -a /var/www/owncloud.old/config/config.php owncloud/config/config.php

Copie du nouveau owncloud

sudo cp -a owncloud /var/www/owncloud

Copie du dossier d’app

Le dossier d’app doit être copié éventuellement aussi le cas échéant.
Attention toutefois, si des applications tierces sont activées, la mise à jour échouera.

sudo cp -a /var/www/owncloud.old/apps/. /var/www/owncloud/apps

Restauration des droits

sudo chown owncloud: -R /var/www/owncloud

Application de la mise à jour

cd /var/www/owncloud
sudo -u owncloud php occ upgrade

On retire le mode maintenance.

sudo -u owncloud php occ maintenance:mode --off

Si tout va bien, on nettoye

Après avoir retiré le mode maintenance, on peut vérifier que tout va bien sur notre nouveau owncloud.
Et constater aussi qu’il veut encore faire une mise à jour… Puisqu’il les fait dans l’ordre.
Quoi qu’il en soit, si la mise à jour s’est bien passée, il faut faire le ménage!

On supprime donc l’ancien owncloud

sudo rm -r /var/www/owncloud.old

Ainsi que la mise à jour d’owncloud téléchargée.

sudo rm -r ~/owncloud-VERSION ~/owncloud

Et après vérification, on peut également supprimer le dossier data dupliqué.

sudo rm -r ~/owncloud_data


Pour ma part la mise à jour manuelle fait suite à la découverte de la merveilleuse fonction de public upload, qui est buggée en version 8.2.0
Pour faire simple, cette fonction consiste à partager un dossier publiquement avec un accès anonyme en écriture. On peut également, comme tout partage, protéger par mot de passe et fixer une durée de validité.
On peut ainsi permettre à un utilisateur tiers d’envoyer des fichiers sur notre owncloud sans pour autant lui créer un compte.

Il suffit de partager un dossier quelconque et de choisir

Partager par lien public

Puis de cocher

Permettre la modification

Hi
I tried to upgrade the Owncloud .

  1. sudo cp -a /var/www/owncloud.old/apps /var/www/owncloud/apps

    This command made a folder name apps in /var/www/owncloud/apps/ and coppied the files from /var/www/owncloud.old/apps to this folder.

  2. After upgrade I can not login from the desktop client.
    I get warning in the admin interface:
    Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken.

In the error log I get this :

Error 	PHP 	Call to a member function isUserAgent() on null at /var/www/owncloud/lib/private/connector/sabre/serverfactory.php#111 	2016-04-04T22:51:04+00:00
Error 	PHP 	Undefined variable: request at /var/www/owncloud/lib/private/connector/sabre/serverfactory.php#80 	2016-04-04T22:51:04+00:00
Error 	PHP 	Argument 8 passed to OC\Connector\Sabre\ServerFactory::__construct() must implement interface OCP\IRequest, none given, called in /var/www/owncloud/apps/files/appinfo/remote.php on line 43 and defined at /var/www/owncloud/lib/private/connector/sabre/serverfactory.php#72 	2016-04-04T22:51:04+00:00
Debug	user_ldap	LDAP error Invalid DN syntax (34) after calling ldap_read 

Maybe this issue is related to this https://github.com/owncloud/core/issues/23015

Je n’ai pas testé cette commande, j’ai abandonné les apps supplémentaire sur owncloud après avoir crashé mon owncloud sur la mise à jour du package.
Je pense que c’est simplement ma commande qui est foireuse…
Le dossier apps doit contenir directement les applications. Il faut que tu corriges manuellement.
Je corrigerais demain, j’ai que mon téléphone sous la main !

C’est corrigé, simplement /. à la fin du dossier apps

sudo mv /var/www/owncloud /var/www/owncloud.old mv: impossible d’évaluer « /var/www/owncloud »: Aucun fichier ou dossier de ce type

Je n’ai plus de OwnCloud maintenant…

Bonjour,

C’est étonnant que tu n’aies plus de dossier owncloud. Ne l’aurais-tu pas déplacé ou copié ailleurs ?

Sinon, puisque tu n’as plus ce dossier, tu peux continuer le reste de la procédure pour avoir ton nouveau dossierà jour.

Il va manquer l’ancien fichier de config de Owncloud, qui doit être copié durant le remplacement.
En rappelant les commandes précédentes, tu devrais pouvoir retrouver ce que tu as fait.