Chap 1. Prise en main du RPi et installation de Mate sur un Raspbian
Chap 2. Installation de OwnCloud sur un Raspberry Pi
Chap 3. Sécuriser votre RPi
Chap 4. Accès au serveur Web Owncloud à partir de son nom de domaine
Chap 5. Connection SSH
Chap 6. Les fichiers journaux
Chap 7. Let’s Encrypt (LE)
Chap 8. Ajout d’un disque dur externe et migration de données
Chap 9. Suppression et ajout d’une interface graphique
Chap 10. Rappel sur les différentes étapes pour mettre en place un server dédié à Owncloud
Chap 8. Ajout d’un disque dur externe et migration de données
Je vous ai parlé de sécurité tout au long des différents chapitres précédents. Au risque de vous décevoir, ce ne serait pas pour la dernière fois que je vais vous en parler de méthodes qui pourraient améliorer la sécurité sur vos serveurs.
Dans le chapitre 2, nous avons installé Owncloud avec les options par défaut, dans le répertoire racine du serveur apache, c’est à dire dans le dossier « /var/www/html/ ». Ceci dans le but de simplifier l’installation et la configuration de Owncloud pour les non-initiés.
Sachez que ce choix est loin d’être le meilleur. Ci-dessous je vais essayer de vous aider à migrer vos dossiers et configurations vers la nouvelle destination.
Si vous ne vous sentez pas à l’aise pour le faire, le meilleur choix serait de faire une nouvelle installation, puis de bien choisir les options qui vous intéressent, entre autre l’emplacement pour installer Owncloud ainsi que celui où placer les données.
/!\ Personnelement, je pense qu’il faut réinstaller Owncloud.
Ce chapitre est donc conçu à titre informative, pour vous aider à être un peu plus à l’aise avec les différentes manipulations sous linux.
I. Installation dans le dossier racine de Apache
Ceci est juste un petit rappel de la méthode décrite dans le chapitre 2. Ici, Owncloud a été installé directement dans le dossier racine par défaut du serveur Apache, c’est à dire dans /var/www/html. Comme je l’ai dit plus haut, ce n’est pas le meilleur choix, mais il est intéressant de le faire afin de pouvoir suivre les différentes étapes pour apprendre comment migrer les différentes informations de notre serveur Owncloud.
Si vous ne l’avez pas encore remarqué, le répertoire /var/www/html ainsi que son contenu, appartient par défaut à l’utilisateur root. Faites donc très attention à y appliquer un utilisateur sans privilège (ici www-data) à ce dossier.
raspi$ ls -al /var/www/html/ total 28288 drwxr-xr-x 4 root root 4096 Apr 8 19:07 . drwxr-xr-x 3 root root 4096 Jan 4 20:19 .. -rw-r--r-- 1 www-data www-data 12 Apr 3 23:21 index.html drwxr-xr-x 15 www-data www-data 4096 Apr 8 18:32 owncloud drwxr-xr-x 2 root root 4096 Apr 19 22:58 .well-known
Ceci dit, afin de limiter la casse si jamais il y a accès non autorisé à votre serveur, donner donc le minimum de permission à l’utilisateur Owncloud pour que ce dernier n’ait pas accès au reste du système. Cet utilisateur ne doit absolument pas avoir des mêmes privilèges que n’importe quel utilisateur de votre système dont la liste ne se limite pas seulement à l’utilisateur root, ou l’utilisateur principal que j’ai appelé USERNAME depuis de début de cette série d’article.
Noter que le choix du nom de l’utilisateur Owncloud n’a pas d’importance. Par défaut, l’utilisateur Apache doit appartenir au groupe www-data, et c’est par soucis de simplicité que j’ai choisi un utilisateur Apache de même nom que le groupe.
II. Installation dans le dossier /home
Pour ceux qui sont un peu plus sceptique concernant l’efficacité du choix proposé par défaut, un autre choix serait d’installer Owncloud dans /home. Ne l’oubliez pas que l’utilisateur Owncloud ne doit pas avoir les mêmes permissions que n’importe quel utilisateur du système (ie root, USERNAME, etc.).
Ce choix d’installation dans /home est un bon choix pour les utilisateurs qui ne trouvent pas pratique de travailler dans un répertoire qu’ils n’ont pas choisi.
Il est fort probable que vous avez déjà installé Owncloud dans le dossier racine de Apache, c’est à dire dans /var/www/html/owncloud. Ce n’est pas grave, je vais vous indiquer comment effectuer la migration de vos configurations et données, vers un autre répertoire de votre choix.
Migrations du répertoire Owncloud dans /home
Etape 1: Arrêter le serveur web
Arrêter le serveur Apache avant de migrer vos données.
raspi$ sudo service apache2 stop
Etape 2: Commencer la migration des données
Créer un répertoire de travail Owncloud, puis y appliquer les permissions pour l’utilisateur www-data.
raspi$ mkdir /home/USERNAME/www-dev
Migrer vos données et configurations Owncloud.
raspi$ sudo cp -rv /var/www/html/owncloud /home/USERNAME/www-dev
Appliquer et vérifier les nouvelles permissions.
raspi$ chown -R www-data:www-data /home/USERNAME/www-dev raspi$ ls -l /home/USERNAME | grep www-dev drwxr-xr-x 2 www-data www-data 4096 Jul 10 14:21 www-dev $ ls -l /home/USERNAME/owncloud total 168 drwxr-xr-x 28 www-data www-data 4096 Jul 10 14:30 3rdparty drwxr-xr-x 21 www-data www-data 4096 Jul 10 14:31 apps -rw-r--r-- 1 www-data www-data 477 Jul 10 14:31 AUTHORS drwxr-xr-x 2 www-data www-data 4096 Jul 10 14:30 config -rw-r--r-- 1 www-data www-data 3017 Jul 10 14:31 console.php -rw-r--r-- 1 www-data www-data 34520 Jul 10 14:31 COPYING-AGPL drwxr-xr-x 19 www-data www-data 4096 Jul 10 14:31 core -rw-r--r-- 1 www-data www-data 5915 Jul 10 14:31 cron.php drwxr-x--- 5 www-data www-data 4096 Jul 10 14:31 data -rw-r--r-- 1 www-data www-data 23886 Jul 10 14:31 db_structure.xml -rw-r--r-- 1 www-data www-data 179 Jul 10 14:31 index.html -rw-r--r-- 1 www-data www-data 2026 Jul 10 14:31 index.php -rw-r--r-- 1 www-data www-data 2595 Jul 10 14:31 indie.json drwxr-xr-x 3 www-data www-data 4096 Jul 10 14:31 l10n drwx--x--- 3 www-data www-data 4096 Jul 10 14:30 letsencrypt drwxr-xr-x 6 www-data www-data 4096 Jul 10 14:31 lib -rw-r--r-- 1 www-data www-data 283 Jul 10 14:31 occ drwxr-xr-x 2 www-data www-data 4096 Jul 10 14:31 ocs drwxr-xr-x 2 www-data www-data 4096 Jul 10 14:31 ocs-provider -rw-r--r-- 1 www-data www-data 2969 Jul 10 14:31 public.php -rw-r--r-- 1 www-data www-data 4521 Jul 10 14:31 remote.php drwxr-xr-x 3 www-data www-data 4096 Jul 10 14:32 resources -rw-r--r-- 1 www-data www-data 26 Jul 10 14:31 robots.txt drwxr-xr-x 13 www-data www-data 4096 Jul 10 14:31 settings -rw-r--r-- 1 www-data www-data 1817 Jul 10 14:31 status.php drwxr-xr-x 3 www-data www-data 4096 Jul 10 14:30 themes -rw-r--r-- 1 www-data www-data 233 Jul 10 14:31 version.php
Renommer l’ancien repértoire Owncloud au lieu de le suppprimer.
raspi$ sudo mv /var/www/html/owncloud /var/www/html/owncloud_original
Etape 3: Indiquer le nouveau chemin d’accès vers Owncloud au Serveur Web
Vu que notre serveur Owncloud a changé de répertoire, il faut indiquer au serveur web comment y accéder. Pour celà, il suffit de créer un lien symbolique dans /var/www/html.
raspi$ sudo ln -s /home/USERNAME/www-dev/owncloud /var/www/html/owncloud raspi$ chown -R www-data:www-data /var/www/html/owncloud
Etape 4: Relancer le serveur web Apache
Relancer le server web, puis essayer d’accéder à l’URL de votre serveur Owncloud.
$ sudo service apache2 start
Tout devrait être bon, et vous ne devriez pas avoir de problèmes de permission.
III. Déplacer le dossier Data de la carte SD vers un disque dur externe
Pourquoi direz vous qu’il est préférable d’installer les données de Owncloud sur un support extérieur au raspberry pi?
Il y a au moins deux raisons à celà. Notez tout d’abord que l’espace disponible sur une carte SD est assez limitée. Puis ayez en tête que la durée de vie d’une carte SD est beaucoup plus courte en comparaison de celle d’un disque mécanique (HDD ou SDD). Si je peux, je vais aussi évoquer le fait que monter et démonter un disque dur externe ne nécessite pas un arrêt total du raspberry pi dans le cas où vous pensez remplacer le support physique sur lequel est enregistré vos données.
/!\ Je tiens à préciser que le disque dur doit être fourni avec une alimentation externe, puisque le raspberry pi n’est pas assez puissant pour pour alimenter un autre appareil via son port USB.
Etape 1: Partitionner le disque dur externe
Brancher maintenant votre disque dur sur l’un des ports USB du raspberry pi. Puis identifier les différentes partitions.
raspi$ sudo fdisk -l !--Sortie Tronquée--! Device Boot Start End Sectors Size Id Type /dev/mmcblk0p1 8192 131071 122880 60M c W95 FAT32 (LBA) /dev/mmcblk0p2 131072 2848767 2717696 1.3G 83 Linux !--Sortie Tronquée--! Device Boot Start End Sectors Size Id Type /dev/sda1 2048 3907028991 3907026944 1.8T 83 Linux
« Rappel sur la désignation des partitions
Les périphériques sont désignés par le système par des fichiers dans le répertoire /dev/.
Les périphériques de stockage seront donc reconnus par /dev/sda, /dev/sdb, etc.
Les partitions sont désignées par leur numéro dans le disque (/dev/sda1, /dev/sda2, …)
Les partitions peuvent aussi être reconnues par leur UUID et leur label. » (lu sur ubuntu-fr.org)
Le disque qui nous intéresse est celui en /dev/sda, et contient déjà une partition (/dev/sda1) qu’on va supprimer avant d’en créer une nouvelle. Les autres partitions (/dev/mmcblk0p[number]) sont ceux de la carte SD du raspberry pi, qu’il ne faut surtout pas toucher.
Pour partitionner ce disque, plusieurs outils sont à votre dispositions. Entre autre, il y a fdisk et cfdisk. Je préfère utiliser fdisk qui ne nécessite pas l’utilisation des flèches pour se déplacer sur la page, et qui me permet donc d’aller plus vite dans le partionnement du disque.
Pour plus d’information sur ces différentes commandes, n’hésitez pas à visiter la page « Partitionner son disque dur en ligne de commande« .
/!\ Les commandes ci-dessous vont supprimer tout le contenu de votre disque. Faites donc bien attention à ce que vous faites.
raspi$ sudo fdisk /dev/sda Command (m for help): p Disk /dev/sda: 1.8 TiB, 2000398933504 bytes, 3907029167 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0xec7a7cb7 Device Boot Start End Sectors Size Id Type /dev/sda1 2048 3907028991 3907026944 1.8T 83 Linux
Supprimer la ou les partitions de votre disque dur externe, ici /dev/sda1.
Command (m for help): d Selected partition 1 Partition 1 has been deleted.
Vérifier que la ou les partitions ont bien été supprimées.
Command (m for help): p
Disk /dev/sda: 1.8 TiB, 2000398933504 bytes, 3907029167 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xec7a7cb7
Créer ensuite une nouvelle partition. Sur mon disque de 2To, je ne vais utiliser que la moitié pour l’instant.
Command (m for help): n Partition type p primary (0 primary, 0 extended, 4 free) e extended (container for logical partitions) Select (default p): p Partition number (1-4, default 1): 1 First sector (2048-3907029166, default 2048): Last sector, +sectors or +size{K,M,G,T,P} (2048-3907029166, default 3907029166): +1T Created a new partition 1 of type 'Linux' and of size 1 TiB.
Vérification.
Command (m for help): p Disk /dev/sda: 1.8 TiB, 2000398933504 bytes, 3907029167 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0xec7a7cb7 Device Boot Start End Sectors Size Id Type /dev/sda1 2048 2147485695 2147483648 1T 83 Linux
Enregistrer les modifications et quitter fdisk.
Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
Voyons ce que çà donne avec la commande fdisk.
raspi$ sudo fdisk -l
!--Sortie Tronquée--!
Device Boot Start End Sectors Size Id Type
/dev/sda1 2048 2147485695 2147483648 1T 83 Linux
Je n’ai utilisé que 1To d’espace disque pour les données. Je réserve le reste d’espace disponible pour une utilisation ultérireure.
Etape 2: Formatez le disque
Formatez la nouvelle partition en un système de fichier EXT4.
raspi$ sudo mkfs.ext4 /dev/sda1
Noter que la méthode « sudo mkfs -t /dev/sda1 » est à déprécier (voir « man mkfs » ).
Si vous n’êtes pas à l’aise avec les lignes de commandes pour partitionner et formater un disque, l’outil graphique GParted est votre ami.
Etape 3: Monter le disque dur externe
Vérifier encore une fois que vous voyez toutes les partitions, et plus particulièrement celle en /dev/sda1.
raspi$ sudo fdisk -l
Créer maintenant un point de montage, c’est à dire qu’il nous faut un nom de dossier à partir duquel on pourra accéder au disque. Je n’ai pas à préciser que ce dossier doit être impérativement vide.
raspi$ sudo mkdir /mnt/owncloud
Ne créer surtout pas de dossier nommé « data » sous /mnt/owncloud, pour éviter d’avoir un sous-dossier data à l’intérieur même du dossier du même nom. Ce qu’on veut c’est un dossier /mnt/owncloud/data/ et non /mnt/owncloud/data/data/.
Il est temps de monter le disque dur externe dans le répertoire indiqué.
raspi$ sudo mount /dev/sda1 /mnt/owncloud
Vérifier ensuite que le disque est bien monté.
raspi$ df -HT Filesystem Type Size Used Avail Use% Mounted on /dev/root ext4 7.8G 4.9G 2.6G 66% / devtmpfs devtmpfs 506M 0 506M 0% /dev tmpfs tmpfs 511M 0 511M 0% /dev/shm tmpfs tmpfs 511M 7.0M 504M 2% /run tmpfs tmpfs 5.3M 4.1k 5.3M 1% /run/lock tmpfs tmpfs 511M 0 511M 0% /sys/fs/cgroup /dev/mmcblk0p1 vfat 63M 22M 42M 35% /boot tmpfs tmpfs 103M 0 103M 0% /run/user/1000 /dev/sda1 ext4 1.1T 75M 1.1T 1% /mnt/owncloud
Vous vous êtes certainement posé la question, à un moment ou à un autre, s’il faut choisir /mnt ou /media dans lequel il faut monter notre disque externe. Il y a pas mal de débat sur internet là dessus, mais cet article m’a convaincu qu’il faut choisir /mnt lorsqu’on monte manuellement un disque et qui, de plus, si le disque est supposé rester connecté en permanence au raspberry pi.
Etape 4. Migrer le dossier DATA
Migrer uniquement données du dossier DATA vers le disque dur externe. Et surtout, n’oubliez pas d’éteindre le serveur web avant d’aller plus loin.
Avant de se lancer dans le test, je me suis connecté à l’URL de mon Owncloud (http://localhost) avec un utilisateur de test (Username). Puis j’ai téléversé la video de Bug Bunny. Si tout va bien, à la fin de la migration, je devrai pouvoir télécharger et téléversion des fichiers avec mon utilisateur de test. Vérifions celà.
fig 1. Fichier de test dans Owncloud
Arrêter le serveur web.
raspi$ sudo service apache2 stop
Migrer les données vers la nouvelle partition.
raspi$ sudo cp -rv /var/www/html/owncloud/data /mnt/owncloud raspi$ mv /var/www/html/owncloud/data var/www/html/owncloud/data_original raspi$ sudo chown -R www-data:www-data /mnt/owncloud/data
Etape 5: Mettez à jour les informations des serveurs PHP
Mettez à jour le fichier de config.php pour y indiquer la nouvelle route pour atteindre le dossier DATA.
raspi$ vim /var/www/tml/howncloud/config/config.php
Remplacer ‘datadirectory’ => ‘/var/www/owncloud/data‘
Par ‘datadirectory’ => ‘/mnt/owncloud/data‘.
Etape 6: Mettez à jour les informations des serveurs Apache
De même que pour le serveur PHP, modifier les informations de owncloud.conf.
raspi$ sudo vim /etc/apache2/sites-available/owncloud.conf !--sortie tronquée--! <Directory "/mnt/owncloud/data"> # just in case if .htaccess gets disabled Require all denied
Etape 7: Redémarrer le serveur web
Relancer le server Apache.
raspi$ service apache2 start
Etape 8: monter automatiquement le disk dur externe
Si vous négligez cette étape, vous risque de ne plus avoir accès à vos données après redémarrage du raspberry pi, si vous oubliez de monter votre disque. De ce fait, il est préférable de le monter automatiquement afin d’éviter ce genre de désagrément.
Lancer la commande blkid afin d’identifier la partition qui nous intéresse et de récupérer son UUID.
raspi$ sudo blkid /dev/sda1: UUID="55ec24c7-c730-4689-9811-f1158362ea3c" TYPE="ext4"
Noter l’UUID: 55ec24c7-c730-4689-9811-f1158362ea3c
Editer le fichier /etc/fstab:
raspi$ sudo cp /etc/fstab /etc/fstab_original raspi$ sudo vim /etc/fstab
Ajouter les informations du disque à monter à la dernière ligne de la page. Quand c’est indiqué [TAB], c’est qu’il faut appuyer sur la touche Tabulation du clavier.
UUID=55ec24c7-c730-4689-9811-f1158362ea3cd [TAB] /mnt/owncloud [TAB] ext4 [TAB] defaults,nofail [TAB] 0 [TAB] 2
D’après les notes dans cet excellent article, l’auteur a du ajouter l’option NOFAIL pour résoudre le problème de redémarrage du raspberry pi, du au fait que le disque dur externe met trop de temps à se monter, ce qui empêche le démarrage du système.
L’option DEFAULTS, inclue l’option automount de la nouvelle partition. Cet option utilise les configurations par défaut en une seule commande au lieu de rentrer la série d’option suivante: rw, suid, dev, exec, auto, nouser, async.
Et comme d’habitude, si vous ne vous sentez pas à l’aise avec les lignes de commandes,vous pouvez toujours utiliser un outil graphique commme disk-manager par exemple.
Etape 9: Test de vérification
Connectez vous à l’URL de votre Owncloud, puis faites les tests ci-dessous pour vérifier si la migration des données s’est bien déroulée, et que vous avez toujours ajouter ou supprimer des fichiers.
Comme vous pouvez le constater au niveau de la figure 2, nous avons toujours la vidéo de Bunny, ainsi qu’on a téléversé un nouveau fichier et tout s’est bien déroulé.
fig 2. Ajout d’un nouveau fichier
L’espace disque disponible est bien celui auquel on s’attend.
fig 3. Vérification de l’espace disponible
Le test suivant consite à redémarrer le raspberry pi, puis de vérifier si le disque dur externe est monté automatiquement suite à ce redémarrage.
raspi$ sudo reboot
Attendez une bonne petite vingtaine de secondes, puis reconnectez vous de nouveau en ssh au raspberry pi. N’hésitez pas à pinger l’appareil pour vérifier qu’il est accessible ou non.
Taper la commande
raspi$ df -h Filesystem Size Used Avail Use% Mounted on /dev/root 7.2G 4.6G 2.4G 66% / devtmpfs 483M 0 483M 0% /dev tmpfs 487M 0 487M 0% /dev/shm tmpfs 487M 6.6M 481M 2% /run tmpfs 5.0M 4.0K 5.0M 1% /run/lock tmpfs 487M 0 487M 0% /sys/fs/cgroup /dev/mmcblk0p1 60M 21M 40M 35% /boot /dev/sda1 1008G 341M 957G 1% /mnt/owncloud tmpfs 98M 0 98M 0% /run/user/1000
Si vous voyez la partion /dev/sda1 monté comme prévu, et ben je n’ai rien à ajouter de plus. Féliciation! Ce chapitre est terminé pour vous.
Sources et Références
How to set/change data directory
Deplacer le contenu de /var/www/html vers /home/USERNAME/
comment migrer uniquement les donnees dans home
Raspberry Pi OwnCloud 9 (Drop box Clone)
Install OwnCloud on your Raspberry Pi
Simple Owncloud Installation on Raspberry Pi 2
Owncloud and an external hard drive
What’s the most “correct” mount point for a permanent NTFS partition?
Ubuntu: Mount The Drive From Command Line
Comment ajouter un nouveau disque dur
How to set/change data directory
Le montage des systèmes de fichiers
Raspberry Pi External Storage Part 1 – Step by Step Permanent External Hard Drive (plus OwnCloud Adjustments)