Comme vous le savez, j’ai récemment acheté un Raspberry. Plus que y héberger mon blog, j’aimerai par la même sensibiliser ma famille au danger que représente les GAFAM.
C’est un combat assez difficile, puisque tous ont une utilisation d’internet très différente. Ma femme utilise un dropbox et ne se déconnecte jamais de Facebook, mon père vit du commerce en ligne et connaît donc bien ce que je connais peu, le business internet, le référencement etc, et ma mère n’en est pas très coutumière. Elle a même réussit à me souhaiter mon anniversaire sur Facebook (que je n’utilise pas), à quelqu’un qui n’a même pas le même nom que moi. Véridique.
Mes frères et sœurs sont également de la partie, avec une vie sociale virtuelle allant du no-life sur Wow au Twitter addict.
Pour ma part, je suis le petit extraterrestre qui bidouille sur PC et fait du code bizarre alors que ça ne me rapporte pas un sou.
Bref, chacun utilise internet comme il en a besoin/envie.
J’ai donc monté un nextcloud (sur Yunohost) sur mon Raspberry pour inciter tout ce petit monde à se libérer des méchants commerciaux (utopie inside).
N’ayant que 28Go de disponible sur la mini SD, voyons comment monter nextcloud sur un disque dur externe avec Yunohost. Les manipulations ont été faites sur un Raspberry mais sont également valables pour un PC ou autre serveur Yunohost.

Monter un disque dur externe

Prenons l’exemple scolaire où rien n’est monté sur le serveur.
Récupérez un disque dur externe qui traîne et branchez-le sur le serveur.
Pour ma part, j’ai pris un DD 2.5 SATA de 750Go qui faisait autrefois office de disque interne pour mon PC actuel (remplacé par un SSD), que j’ai mis dans un boîtier.

Une fois le disque branché en USB, nous allons pouvoir récupérer son UUID.

Récupérer l’UUID d’un disque

L’UUID d’un disque est un identifiant censé être unique, ce qui va nous permettre de le reconnaître quand il sera branché.
Pour le récupérer, il faut, une fois connecté en root sur le serveur, lancer la commande blkid :

Les 3 premières lignes correspondent à :

  • La carte SD de la Raspberry
  • La partition boot de la carte SD
  • La partition root de la carte SD, celle qui contient les données de tout le serveur.

La dernière ligne correspond au disque dur que je viens de brancher.
On peut voir que je lui ai donné le nom de ‘Data’ lors du formatage et que l’unique partition est de type ext4.

L’élément important est l’UUID. Copiez-le, nous en aurons besoin plus tard.

Montage automatique du disque

Ici, nous allons définir comment le disque devra être monté au démarrage de la machine.
Il est possible de le monter à la main, mais il est plus pratique qu’il se remonte tout seul en cas de coupure :/

Pour cela, nous allons éditer le fichier /etc/fstab :

La partie haute est ce qu’il y avait par défaut.
J’ai passé une ligne et rajouté ceci :

3 points à vérifier :

  • L’ UUID doit être celui de votre disque, ne prenez pas le mien, ça ne fonctionnera pas 😉
  • /media/data  est le point de montage du disque. Ce qui veut dire que pour mettre des fichiers dessus, il faudra les envoyer vers /media/data/cequevousvoulez. Libre à vous de changer.
  • Enfin, ext4 signifie que le type de système de fichiers est ext4.

Pour en savoir plus sur le fichier fstab, la doc sur Debian est très bien faite.

Important : pour votre tranquillité, n’essayez pas d’utiliser une partition ntfs pour vos applications Yunohost. Ce type de fichiers ne gère pas bien les permissions et encore moins les propriétaires, indispensables pour votre serveur Yunohost.

Pour enregistrer, faites Ctrl+O, Enter, puis Ctrl+X pour quitter nano et revenir au Shell.

Pour vérifier que le disque se monte bien au démarrage du serveur, redémarrez-le avec la commande reboot , puis essayer de lister les dossiers et fichiers présents dans /media :

Le dossier ‘data’ apparaît, le disque est bien monté.

Droits sur le disque

Je parlais de droits tout à l’heure. Actuellement, seul l’utilisateur root a le droit de lire, écrire et exécuter sur votre disque dur.
C’est ennuyeux pour une simple raison : À l’installation d’une application, Yunohost créé un nouvel utilisateur avec les droits sur les fichiers et dossiers qu’il a à manipuler.
Mais si vous modifiez les chemins où sont stockés ces fichiers, cet utilisateur n’aura pas les droits pour y accéder.
Pour l’application Nextcloud, l’utilisateur en question est simplement nextcloud.

Pour cela, tapez cette commande dans le Shell :

Ce qui permet de modifier les droits du dossier /media/data et tout ce qu’il contient, avec tous les droits pour le propriétaire et son groupe, et le droit de lecture et d’exécution pour les autres. Pour plus de précisions sur les droits, voir la doc Ubuntu (valide Debian).

Data de Nextcloud

Intéressons-nous maintenant aux dossiers et fichiers des utilisateurs de Nextcloud.
Ceux-ci sont stockés dans le dossier /home/yunohost.app/nextcloud/data.
Pour gagner de la place, nous allons les déplacer sur le disque dur externe que nous avons montés.

Arrêt du serveur web

Avant tout, pour être sûr qu’aucun utilisateur n’envoie ou télécharge un fichier, nous allons arrêter le serveur web (Nginx).
Pour cela, tapez la commande :

Cela évitera toute corruption de fichiers.

Déplacement des fichiers

Nous pouvons à présent déplacer les fichiers utilisateurs de Nextcloud sur le disque :

Ici je prends le dossier /home/yunohost.app/nextcloud et son contenu et le déplace à la racine de notre disque, à l’emplacement /media/data/nextcloud.

Puis on peut vérifier que les fichiers ont bien été déplacés à l’endroit voulu :

Tout est bon, on continue.

Configuration

Comme le script n’est pas encore magique, il va falloir indiquer à Nextcloud où sont à présent stockées ces données.
Éditez le fichier de configuration de Nextcloud :

Remplacez la ligne :

par :

Adaptez avec le chemin que vous avez mis bien sûr.

Puis vous pouvez redémarrer Nginx, nous allons tester tout ça :

En essayant d’accéder à Nextcloud, vous ne devriez pas avoir de soucis.

.ocdata

Personnellement, j’ai eu ce soucis au départ, car je n’avais pas modifié les droits sur le disque, chose que l’on a fait plus haut.
En essayant d’accéder à mon instance Nextcloud, j’ai eu ce beau message :

yunohost-nextcloud-ext-dd-ocdata

Pour avoir essayé, la création du fameux fichier .ocdata dans le dossier data ne changera rien du tout. Ce qu’il faut, c’est vérifier et accorder les droits nécessaires à l’application.

Droits

Pour chaque dossier parent de /media/data/nextcloud/data, vérifiez que les autres utilisateurs aient au moins le droit de lecture et d’exécution sur ces dossiers.
Pour tester simplement, authentifiez-vous avec le compte nextcloud et tentez d’accéder à ces dossiers :

Si le contenu du dossier est affiché, c’est bon. En revanche, si vous avez ce message :

C’est que les droits sur le dossier ne sont pas suffisants. Corrigez comme suit :

Propriétaire

Si cela ne fonctionne toujours pas, vérifiez que le dossier /media/data/nextcloud/data possède les bons propriétaires. Comme dit plus haut, l’utilisateur détenteur doit être nextcloud, de même que le groupe.

Pour vérifier, faites un :

Vous devriez avoir les droits suivants :

Si ce n’est pas le cas, il faut attribuer le dossier à nextcloud :

Après cela, tentez à nouveau d’accéder à Nextcloud, ça devrait fonctionner, avec les fichiers sur votre disque dur externe !