Entretien de Nextcloud: corbeille, PHP et cache

Quand faire l’entretien de Nextcloud?

L’entretien de Nextcloud s’effectue habituellement sans enjeu en passant par l’interface web. Mais, une installation peut parfois devenir volumineuse. Elle peut aussi être affectée par les mises à jour de PHP. C’est donc important d’y revenir régulièrement en mode ligne de commandes.

Dans cet article, je détaille quelques enjeux qui peuvent se présenter lorsque l’on maintient des infrastructures qui comprennent des dizaines voir des centaines de milliers de fichiers. Aussi, je montre quelques défis qui peuvent se présenter pendant la mise à jour du système, particulièrement avec PHP.

Nextcloud a un outil de maintenance en ligne de commande nommé occ. Il est situé dans le répertoire d’installation de Nextcloud. Il s’exécute avec un interpréteur PHP avec l’utilisateur dédié à Nextcloud sur le serveur.

Vider la corbeille

Il peut arriver, lorsque la corbeille devient très chargée, qu’il ne soit plus possible de la vider via l’interface graphique. Dans ce cas-ci, il est recommandé d’utiliser la ligne de commande pour effectuer une vidange manuelle. De plus, cette méthode permet d’accomplir le travail pour plusieurs comptes à la fois, ou même pour l’ensemble de l’installation.

Premièrement, on va se positionner dans le répertoire d’installation de Nextcloud, généralement /var/www/nextcloud.

cd /var/www/nextcloud

Si votre installation est native, l’utilisateur sera www-data. Si, par contre, vous utilisez Yunohost, votre utilisateur est nextcloud, car il crée des utilisateurs pour chaque application.

nc_user=nextcloud # changer ici au besoin

Nous allons exécuter la commande suivante pour nettoyer la corbeille

sudo -u ${nc_user} php occ trashbin:cleanup --all-users

Activer le cache de PHP 7.3

Depuis la version 20, Nextcloud utilise le cache de PHP par défaut au lieu de Redis. Si les librairies de PHP ne sont pas bien configurées, vous aurez le message d’erreur suivant:

Memcache \OC\Memcache\APCu not available for local cache

J’ai fait mes recherches et je suis tombé sur le fil de discussion suivant: https://github.com/nextcloud/vm/issues/2039

J’ai fait le travail pour vous de démêler un peu tout ça pour ressortir les éléments importants. Voici donc la solution que je propose.

Pour corriger ce problème, sur Debian 10 (ou Yunohost), on corrige en ajoutant la ligne suivante.

apc.enable_cli=1

dans le fichier suivant:

/etc/php/7.3/mods-available/apcu.ini

Il faut ensuite réinitialiser le service php-fpm, qui fait l’interprétation de PHP lorsqu’on utilise le serveur web Nginx. Sur Debian, c’est comme suit

sudo systemctl restart php7.3-fpm.service

Dernière étape de l’entretien de Nextcloud: effectuer une correction de mise à jour

À la suite des modifications effectuées en passant par la ligne de commande pour corriger l’installation de PHP ou encore manipuler les fichiers de configuration de l’instance Nextcloud, je recommande une dernière étape. Nettoyer le cache des fichiers et faire une mise à jour manuelle. Celle-ci aura l’avantage de compléter une mise à jour démarrée précédemment, mais non complétée.

Pour nettoyer le cache des fichiers, la commande est similaire à celle utilisée précédemment pour vider la corbeille:

sudo -u nextcloud php occ files:cleanup

On lance ensuite la mise à jour.

sudo -u nextcloud php updater/updater.phar
Mise à jour manuelle de Nextcloud
Mise à jour manuelle de Nextcloud

Celle-ci placera automatiquement l’instance Nextcloud en mode maintenance. Ensuite, elle installe la nouvelle version du logiciel, puis elle met à jour les entrées de la base de données. Lorsque la corbeille est encombrée ou qu’il y a des problèmes dans la configuration système de PHP, c’est souvent cette étape qui plante. Mais, lors de l’installation dans l’interface web, il n’est pas toujours possible d’attraper les messages d’erreur. On aura l’impression que la mise à jour a été un succès.

Conclusion

La maintenance de Nextcloud est une tâche qu’il est essentiel de maîtriser pour garder une installation en santé. Dans ce billet, nous avons vu comment vider une corbeille trop pleine, réactiver le cache de PHP et compléter une mise à jour manuellement.

Contenus connexes