Nextcloud: Mise à jour manuelle sur OpenBSD (astuce)

Article publié, le
5 minute(s) de lecture

Cet article contient 997 mots.
Source brute de l'article : MD

Description

Mettre à jour NC (Nextcloud ) n’est pas compliqué en soit… Soit, vous le faites :

  • Par le biais de l’interface web d’administration.
  • Manuellement
  • Par le gestionnaire de paquets, s’il y a lieu.

Cet article a juste pour propos d’expliquer succinctement le processus manuel sous OpenBSD. L’instance que j’administre est donc sous OpenBSD, desservie par le serveur web Nginx, et le couple PHP+MySQL (en l’occurence actuellement PHP 7.3)

Processus de mise à jour

C’est le processus que j’utilise depuis plusieurs années, depuis la version 15.*, qui en fait se veut simple, pratique et rapide.

Arrêt du service web

La première chose que je fais est de désactiver le domaine au niveau de nginx :

Code : sh

# rm -f /etc/nginx/sites-enabled/mon-domaine.net
# nginx -t && rcctl restart nginx

Préparations

Partons du principe que l’utilisateur web est www.

Les actions qui suivent sont à faire avec ces droits : $ su -l www

  1. Direction vers le répertoire de nextcloud :
    cd www/nextcloud
  2. Il faut légérement modifier le fichier de config :
    sed -i -e 's#/htdocs#/var/www/htdocs#' config/config.php
  3. Activation du mode de maintenance:
    php-7.3 occ maintenance:mode --on

Téléchargement

Astuce d’informaticien :

  1. Direction le répertoire parent www\ :
  2. Création d’une variable de version v qui sera bien utile.
  3. Téléchargement de l’archive actuelle correspondante à la version, ainsi que du fichier de sommes de contrôle sha256, fournis par le projet NC.
  4. Vérification de la somme de contrôle

Code : sh

$ cd ../
$ v="17.0.1"
$ for ext in bz2 bz2.sha256; do curl -O https://download.nextcloud.com/server/releases/nextcloud-$v.tar.$ext; done
$ sha256 -c nextcloud-$v.tar.bz2.sha256

Si par exemple, le résultat du SHA est (SHA256) nextcloud-$v.tar.bz2: OK, c’est tout bon.

Installation

Passons à la phse d’installation :

  • déplace l’actuel répertoire nextcloud en le renommant suivi de la date de transformation et du numéro de l’ancienne version
  • décompression de l’archive,
  • suppression d’un fichier (on ne cherche pas à installer, ni à ré-installer NC).

Code : sh

$ oldvers="16.0.6"
$ date="$(date '+%Y%m%d%H%M%S')"
$ oldnc="nextcloud-${date}-${oldvers}"
$ mv nextcloud ${oldnc}

$ tar xjvf nextcloud-$v.tar.bz2
$ rm -fP config/CAN_INSTALL

Vérifications primaires

Là, il faut être un peu plus attentif :

  • Copie l’ancien fichier de configuration vers le nouveau répertoire de configuration :
    cp ${oldnc}/config/config.php nextcloud/config/
  • Maintenant, il faut parcourir l’ancien répertoire des applications pour copier celles qui ne sont pas natives vers le nouveau répertoire d’applications. ne recopiez pas telle qu’elle la commande qui suit, c’est juste pour mémo :
    cp all ${oldnc}/apps diff to new nextcloud-app
  • Pour finir, si besoin, il faut faire de même avec le répertoire des thèmes.

Permissions

  • Attribution des droits utilisateurs sur tous les nouveaux fichiers et répertoires dans le répertoire nextcloud/.
  • Puis, attribution des droits nécessaires d’abord sur tous les répertoires enfants, ensuite ceux pour les fichiers enfants.

Code : sh

$ webuser="www"
$ chown -R "${webuser}":www nextcloud
$ find nextcloud/ -type d -exec chmod 750 {} \;
$ find nextcloud/ -type f -exec chmod 640 {} \;

Mise à jour

  • La mise à jour de NC en soit ; rien de particulier, pour autant qu’on soit dans le bon répertoire :
    cd nextcloud/
  • Ensuite, utilisation de l’outil occ : php-7.3 occ upgrade
    • Si cela finit avec le message de succès, sortie du mode maintenance :
      php-7.3 occ maintenance:mode --off

Pour finir, ré-édition du fichier de configuration pour supprimer /var/www :
sed -i -e 's#/var/www/htdocs#/htdocs#' config/config.php

Rédemarrage Service Web

  • Ré-active le domaine et redémarrage du service web :

Code : sh

# cd /etc/nginx/sites-available/
# ln -s mon-domaine.net ../sites-enabled/
# nginx -t && rcctl restart nginx
  • Puis connexion à l’interface web d’administration en tant qu’administrateur, et mise à jour des différentes applications

Et, voilà !

TL;DR

Attention si vous ne faites que recopier tel quel ce TL;DR, vous allez au casse-pipe !

Code : sh

// stop web services
# rm -f /etc/nginx/sites-enabled/mon-domaine.net
# nginx -t && rcctl restart nginx

// connexion as user web
# webuser="www"
# su -l $webuser

$ cd /var/www/htdocs/mon-domaine.net/www/nextcloud/
$ sed -i -e 's#/htdocs#/var/www/htdocs#' config/config.php
$ php-7.3 occ maintenance:mode --on

// downlad archives, and checksum
$ cd ../
$ v="17.0.1"
$ for ext in bz2 bz2.sha256; do curl -O https://download.nextcloud.com/server/releases/nextcloud-$v.tar.$ext; done
$ sha256 -c nextcloud-$v.tar.bz2.sha256

// Untar
$ oldvers="16.0.6"
$ date="$(date '+%Y%m%d%H%M%S')"
$ oldnc="nextcloud-${date}-${oldvers}"
$ mv nextcloud ${oldnc}

$ tar xjvf nextcloud-$v.tar.bz2
$ rm -fP config/CAN_INSTALL

// cp config
$ cp ${oldnc}/config/config.php nextcloud/config/

// cp only apps not native; dont recopy this command as-is:
$ cp all ${oldnc}/apps diff to new nextcloud/apps

// egual for themes, if need
$ cp all ${oldnc}/themes to new nextcloud/themes

$ chown -R "${webuser}":www nextcloud
$ find nextcloud/ -type d -exec chmod 750 {} \;
$ find nextcloud/ -type f -exec chmod 640 {} \;

// occ upgrage process
$ cd nextcloud/
$ php-7.3 occ upgrade
$ php-7.3 occ maintenance:mode --off

$ sed -i -e 's#/var/www/htdocs#/htdocs#' config/config.php

// exit

// restart web services
# cd /etc/nginx/sites-available/
# ln -s mon-domaine.net ../sites-enabled/
# nginx -t && rcctl restart nginx

Dépannages

Si la mise à jour échoue, avec l’un de ces messages d’erreurs :

Erreur : Nextcloud is not installed

Tel que :

Code : sh

$ php-7.3 occ help upgrade
Nextcloud is not installed - only a limited number of commands are available


  Command "upgrade" is not defined.


help [--format FORMAT] [--raw] [--] [<command_name>]

Première chose à s’assurer est de vérifier que vous avez bien recopié l’ancien fichier de configuration vers le nouveau répertoire de configuration.

Si oui, et que le problème perdure, essayez : php-7.3 occ maintenance:repair

Erreur: vous essayez de réinstaller votre Nextcloud

Lorsque vous vous connectez à l’interface web, vous avez le message suivant :

Citation :

Erreur

On dirait que vous essayez de réinstaller votre Nextcloud. Toutefois, le fichier CAN_INSTALL est absent de votre répertoire de configuration. Veuillez créer le fichier CAN_INSTALL dans votre dossier de configuration pour continuer

Allez supprimer le fichier CAN_INSTALL qui se trouve dans le nouveau répertoire de configuration

Les fichiers ne sont plus visibles

Essayez : php-7.3 console.php files:scan --all


Commandes OCC

Pour rappel, les différentes commandes occ, bien utiles : php occ list

Retrouvez une liste d’informations bien pratique sur la page occ .