Yunohost et plusieurs instances de Nextcloud (4/N)

, par  Genma , popularité : 2%

Introduction

Cet article fait suite à mon article Yunohost et plusieurs instances de Nextcloud (1/N) et Yunohost et plusieurs instances de Nextcloud (2/N).

Depuis quelques mois,j’ai donc plusieurs instances de Nextcloud sous différentes versions, pour des tests des versions bêtas et autres usages comme un serveur de démonstration, le tout sur un même serveur. Le tout sur une instance Yunohost, pour faciliter. J’ai également Onlyoffice & Collabora, activés et utilisables dans ces différents instances.

Le besoin

J’ai donc plusieurs Nextcloud et il peut être intéressant de tester deux versions différentes sur un même jeu de données (fichiers), pour comparer l’affichage, la réactivité ou autre.

Pour les utilisateurs, du fait d’avoir tout ça sur un Yunohost (qui a un annuaire LDAP), fait que je retrouve les mêmes utilisateurs sur ces différentes instances de Nextcloud. Les utilisateurs sont autorisés à accéder au cas par cas à l’une ou l’autre de ces instances, via la possibilité qu’offre Yunohost de mettre une application en publique ou ne l’autoriser qu’à certains utilisateurs.

Les données et Nextcloud

Dans Nextcloud, les données se trouvent à deux endroits distincts : dans les fichiers, qui sont dans des dossiers sur le disque. Et dans la base de données, pour tout ce qui est du référencement de ce fichiers, des droits associés, partage etc.

Nextcloud offre la possibilité de monter des disques, des dossiers du disque local.

Yunohost propose par exemple à l’installation d’une application Nextcloud d’ajouter automatiquement les dossiers utilisateurs (le /home) dans le dossier des données Nextcloud de chaque utilisateur. Mais c’est un montage les données de chaque utilisateur Yunohost ayant un compte dans une instance Nextcloud sont stockées dans le dossier commun aux données des applications (hors données stockée en base de données), à savoir :

* /home/yunohost.app/nextcloud__1/data/
* /home/yunohost.app/nextcloud__2/data/
* /home/yunohost.app/nextcloud__3/data/

Où nextcloud__X correspondant au nom interne de l’instance pour Yunohost.

Ce même chemin étant défini automatiquement à l’installation de Nextcloud par le packaging Yunohost dans le fichier de configuration de Nextcloud (/var/www/nextcloud__X/config/config.php).

  'datadirectory' => '/home/yunohost.app/nextcloud__X/data',

Les mêmes données pour les différentes instances

A l’aide de lien symbolique ou autre modification du fichier de configuration de Nextcloud, on peut faire en sorte que toutes les données d’un même utilisateur soient communes aux différentes instances. Par exemple, les données seront toutes dans /home/yunohost.app/nextcloud/data et /home/yunohost.app/nextcloud__1/data/, /home/yunohost.app/nextcloud__2/data/, /home/yunohost.app/nextcloud__3/data/ seront des liens symboliques vers ce dossier /home/yunohost.app/nextcloud/data.

Les problématiques

Avoir un même fichier utilisé par deux instances différentes peut entraîner des conflits si un même client Nextcloud (côté PC) est connecté à ces différentes instances ou si un même fichier est modifié par deux utilisateurs différents sur deux instances différentes, il y aura forcément des conflits. De même en cas de suppression au sein d’une instance, le fichier étant référencé au sein de la base de données des autres instances, cela posera des problèmes.

On a différentes bases de données, une par instance et il n’est pas envisageable de brancher les différentes instances sur une même base de données.

Une solution ?

Il y a sûrement d’autres solutions mais personnellement, je pars sur l’usage de la fonctionnalité de "Fédération" qu’offre Nextcloud. De même que l’on peut partager un dossier entre utilisateurs, il est possible de partager un dossier entre des instance Nextcloud. Cela fait théoriquement du trafic réseau, même comme les instances sont sur la même machine, ce n’est pas un soucis. Et on peut aller assez finement partager des dossiers précis pour ne pas mélanger les usages...

Pour en savoir plus sur la Fédération au sein de Nextcloud :
 https://nextcloud.com/fr_FR/federation/
 https://docs.nextcloud.com/server/19/admin_manual/configuration_files/federated_cloud_sharing_configuration.html
 https://docs.nextcloud.com/server/latest/user_manual/files/federated_cloud_sharing.html