Nextcloud : activer et configurer le cache Redis

Nextcloud : activer et configurer le cache Redis

I. Présentation

Après avoir vu comment installer Nextcloud sur CentOS, ainsi que l’intégration de Keeweb avec Nextcloud pour la gestion de vos mots de passe, je vous propose d’installer Redis sur votre serveur Nextcloud.

Pour ma part, j’utilise CentOS 8 et à l’heure où j’écris ces lignes c’est un peu spécifique car le paquet Redis pour PHP n’est pas encore disponible, il faudra le compiler.

Redis va jouer deux rôles auprès de Nextcloud :

  • Mise en cache des objets
  • Verrouillage de fichier transactionnel

D’une part, Redis va permettre d’optimiser les performances de Nextcloud grâce à la mise en cache. D’autre part, le verrouillage de fichier transactionnel, de l’anglais Transactional file locking offre une couche de sécurité supplémentaire.

En effet, cette fonctionnalité va verrouiller les fichiers lors des opérations de base afin de se protéger contre la corruption. Par exemple : lorsque vous agissez sur un fichier, vous ne pourrez pas renommer le dossier parent, grâce à Redis.

Attention, Redis ne permet pas de se protéger contre les éditions simultanées d’un même document, j’entends par là l’édition collaboration d’un document. Cela correspond à une autre fonctionnalité.

II. Installer Redis pour CentOS 8 et PHP

Commençons par installer les prérequis, à savoir Redis et l’extension Redis pour PHP. La partie serveur s’installe très facilement :

yum update
yum install redis

Maintenant, pour compiler l’extension redis pour PHP, il est nécessaire d’installer des paquets supplémentaires et de réaliser l’opération via le dépôt d’extensions PHP nommé « pecl« . Sur CentOS 7, par exemple, il aurait suffit d’installer le paquet php-pecl-redis.

yum install -y php-pear gcc curl-devel php-devel zlib-devel pcre-devel make 
pecl install redis

Dans un premier temps, nous allons charger l’extension redis pour PHP. Créez le fichier suivant :

nano /etc/php.d/50-redis.ini

Ajoutez le contenu ci-dessous qui sert simplement à charger l’extension. Il est important que cette extension soit chargée après l’extension json (d’où le nom donné au fichier).

; enable redis extension
extension=redis

Redémarrez dès maintenant Apache et PHP-FPM :

systemctl restart httpd php-fpm

Si vous listez les modules PHP chargés actuellement, redis doit apparaître dans la liste :

php -m

Maintenant, nous allons ajouter l’utilisateur Redis au groupe « apache » pour éviter les problèmes de droits.

usermod -a -G apache redis

Enfin, nous allons activer le démarrage automatique de redis puis le redémarrer maintenant :

systemctl enable --now redis
systemctl restart redis

Pour information, les logs de redis sont stockés dans le fichier suivant :

/var/log/redis/redis.log

III. Configurer le pare-feu pour Redis

Le serveur Redis peut fonctionner de deux façons : soit accessible en TCP sur le port 6379 (par défaut), soit en mode socket. D’après ce que j’ai compris, si l’on veut utiliser Redis à la fois pour le cache et le verrouillage de fichier transactionnel, il faut l’utiliser en mode TCP.

Nous allons donc ouvrir le port 6379 sur notre machine CentOS grâce à ces deux commandes : la première pour créer la règle et la seconde pour recharger la configuration.

firewall-cmd --add-port=6379/tcp --permanent
firewall-cmd --reload

IV. Activer Redis dans Nextcloud

Passons maintenant à la phase d’activation de redis au niveau de Nextcloud. Pour réaliser cette action, il est nécessaire de modifier le fichier de configuration « config.php » qui se situe à l’emplacement suivant pour ma part : /var/www/nextcloud/html/config/config.php

A la suite des autres directives du fichier, ajoutez le bloc suivant juste avant le « ); » de fin :

'filelocking.enabled' => true,
'memcache.locking' => '\OC\Memcache\Redis',
'memcache.local' => '\OC\Memcache\Redis',
'redis' => array(
'host' => 'localhost',
'port' => 6379,
'timeout' => 0.0,
'password' => '',
),

Ce qui donne :

Quelques explications :

  • La directive filelocking.enabled sert à activer le verrouillage de fichier transactionnel, et nous précisons ensuite que c’est Redis qui assure cette fonction au travers de la directive memcache.locking.
  • La directive memcache.local sert à préciser que Redis gère le cache
  • Le bloc de configuration « redis » avec les directives host, port, timeout et password sert à indiquer la configuration de notre redis. Pour passer en mode socket, il faudrait indiquer le chemin vers le socket à la place de localhost. Pour le moment, laissez la valeur mot de passe vide.

Enregistrez le fichier, redémarrez les services :

systemctl restart httpd php-fpm

Maintenant, tentez d’accéder à l’interface de Nextcloud : si vous n’obtenez pas d’erreur 500 (Internal Server Error) c’est que la configuration est bien prise en compte. Sinon, il faudrait vérifier votre fichier config.php et que l’extension PHP de redis est bien chargée.

V. Configurer un mot de passe pour Redis

Pour finir ce tutoriel, nous allons sécuriser un minimum redis en ajoutant un mot de passe. Pour cela, vous devez modifier le fichier de configuration :

nano /etc/redis.conf

Dans ce fichier, recherchez la directive requirepass qui est actuellement commentée. Pour la suite c’est tout simple, indiquiez requirepass suivi du mot de passe souhaité.

requirepass MonMotDePasseTresLongEtComplexe

Ensuite, sauvegardez le fichier et redémarrez le service redis :

systemctl restart redis

Il ne reste plus qu’à modifier à nouveau le fichier « config.php » de Nextcloud pour ajouter le mot de passe au sein de la directive password déclarée précédemment. Le tour est joué ?

Hébergez votre site à partir de 2$ sur 👉👉👉 https://www.tnctech.ca

À propos Santana

Analyste en cybersécurité avec 5 ans d'expérience dans la protection des systèmes d'information contre les menaces et les attaques. Expertise dans la surveillance des réseaux, l'analyse des vulnérabilités, et la gestion des incidents de sécurité. Passionnée par l'innovation technologique et la mise en œuvre de solutions de sécurité robustes pour protéger les données sensibles et assurer la conformité réglementaire.

Vérifiez également

comment installer un serveur dédié OVH ?

Infra Cloud : comment installer un serveur dédié OVHcloud ?

Table de Matieres1 I. Présentation2 II. Installation du serveur depuis l’espace client OVHcloud3 4 IV. …

ONLYOFFICE Workspace : trois niveaux de chiffrement pour vos données

ONLYOFFICE Workspace : trois niveaux de chiffrement pour vos données

Table de Matieres1 I. Présentation2 II. ONLYOFFICE  Workspace et le chiffrement des flux avec HTTPS3 …

Gérer ses mots de passe dans Nextcloud avec Keeweb (Keepass)

Gérer ses mots de passe dans Nextcloud avec Keeweb (Keepass)

Table de Matieres1 I. Présentation2 II. Installation de Keeweb sur Nextcloud3 III. Détection du type …

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.