Ré-installation Linux sur une seule partition tout en gardant les informations de /home

Un ami a eu un soucis avec Ubuntu. NetworkManager semble ne plus reconnaitre ni le wifi ni la connection filiaire, probablement à cause de la dernière mise-à-jour du noyaux.

Je vais m’en passer des détails, mais pour votre information, il utilise Ubuntu 14.04. Une tentative de mise-à-jour vers la version 16.04 en mode filaire ne s’est faite que partiellement.

La meilleure solution dans cette situation serait de réinstaller le système après avoir fait une copie de la partition /home. Pour mettre un peu de piquant dans l’histore /home et / font parties d’une seule et même partition. Vous comprenez bien qu’une réinstallation du système va effacer toutes les données de /home.

J’ai trouvé une astuce pour réinstaller le système en gardant les informations de /home.

Je ne le répète pas assez, mais avant d’essayer quoi que ce soit sur votre machine, faites des tests dans une machine virtuelle (voir Annexe). Celà vous coutera un peu de temps, certes. Mais en contrepartie, vous ne seriez pas surpris si quelque chose tourne mal.

La messe est dite, lançons dans l’aventure.

1. Essayer Ubuntu sans l’installer

Télécharger l’ISO avec la version d’Ubuntu qui vous intéresse. Dans mon cas, je vais rester sur une version LTS à la demande de mon ami.

Pour créer une clé USB bootable, sachant que cette clé se trouve sur la partition /dev/sdb, lancer les commandes suivantes.

$ sudo apt install dcfldd
$ sudo dcfldd if=xubuntu-18.04.2-desktop-amd64.iso of=/dev/sdb bs=1M

En ce qui concernant la commande dcfldd, j’en ai parlé dans cet article.

Redémarrer la machine avec la clé insérée, puis sélectionner l’option d’Essayer Ubuntu sans avoir à l’installer.

2. Archiver le dossier /home

Monter ensuite la partition utilisée par /home qui, je le rappèle, se trouve sur la même partition que /. Les commandes « sudo fdisk -l » et « df -h » vous aideront à identifier cette partition. Dans mon cas, cette partition se trouve dans /dev/sda3.

$ sudo mount /dev/sda3 /mnt
$ sudo chroot /mnt

Brancher puis monter un disque dur externe pour la sauvegarde des données. De même que précédement, les commandes fdisk et df vous permettront de récupérer le nom du disque à monter.

$ sudo mount /dev/sdb1 /media/USERNAME

Placez vous dans le dossier dans lequel sera copié la partition /home, puis lancer la copie.

$ cd /media/USERNAME/MonDisque/CopieHome
$ tar -cvpzf backup-home.tgz /home/*

En fonction de la taille des fichiers dans le répertoire /home, la copie, ou plus exactement, la compression de /home, risque de prendre du temps.

3. Installer Ubuntu

Une fois la compression terminée, vous pouvez démonter les partitions montées précédement puis lancer l’installation de ubuntu.

$ sudo umount /media/USERNAME/MonDisque
$ sudo umount /mnt

Au moment de la création de l’utilisateur, je vous propose de créer un utilisateur de type « test » qu’il faudra supprimer plus tard. Il ne faut surtout pas créer un utilisateur du même nom que celui ou ceux qui gèrent notre dossier /home.

Une fois l’installation terminée, et que la machine a redémarrée, connectez-vous avec l’utilisateur test. Ensuite, copier l’archive dans le dossier /home. Je présume que votre disque externe va se monter automatiquement dans /media/USERNAME.

$ sudo su
$ cd /home
$ tar -xvpf /media/USERNAME/MonDisque/CopieHome/backup-home.tgz

4. Ajout de compte(s) utilisateur(s) du même nom que celui (ceux) du dossier /home

Maintenant, recréer tous les utilisateurs qui devraient avoir le nême nom que les utilisateurs de /home. Pour ce faire, il vous suffit de créer un nouveau compte utilisateur.

Vérifier que vous pouvez vous connecter sans problème avec ce ou ces utilisateurs, avant de supprimer définitement l’utilisateur « test ».

Annexe

Pour pouvoir attacher un disque dur externe ou une clé USB dans virtual box, lancer les commandes suivantes sur votre machine.

$ sudo apt install virtualbox-ext-pack
$ sudo adduser $USER vboxusers
$ sudo usermod -aG vboxusers $USER
Publicités

I. Linux en Entreprise : Disque dure chiffré avec un Dual boot Windows-Ubuntu

I. Linux en Entreprise : Disque dure chiffré avec un Dual boot Windows-Ubuntu
II. Linux en Entreprise : Comment se préparer face à d’éventuels problèmes de déchiffrage
III. Linux en Entreprise: Applications Windows et leurs équivalents Linux

I. Linux en Entreprise : Disque dure chiffré avec un Dual boot Windows-Ubuntu

Celà fait un moment que je me suis posé la question de comment utiliser Linux en entreprise. Il y a eu deux défis auquels j’ai du faire face.

  • Comment respecter les règles de sécurité informatique imposées par l’entreprise? Entre autre, comment protéger les données sensibles stockées sur un ordinateur tournant sour linux lorsque l’ordinateur se retrouve en dehors de l’entreprise?
  • Est-ce que les outils que j’utilise sous Windows vont être compatible avec Linux? Si ce n’est pas le cas, quelles sont les alternatives?

Je dois l’avouer que l’utilisation massive des outils dans cloud (outlook365, etc.) nous simplifie la vie dans un sens où, il n’est plus nécessaire d’avoir Windows pour les utiliser. Je vais en parler dans un prochain article.

 

Dans cette première partie, je vais vous donner les différentes étapes que j’ai suivit afin de pouvoir installer Ubuntu sur une partition chiffrée avec LUKS.

Ce post peut aussi intéresser des particuliers qui souhaitent sécuriser leurs ordinateurs tournant sous Linux.

 

Avant de faire quoi que ce soit comme manipulation sur votre ordinateur, je vous recommande vivement de faire plusieurs essais dans une machine virtuelle afin de vous familiariser avec les différentes étapes.

J’ai donc lancé une machine virtuelle avec les configurations suivantes:

OS : Xubuntu 18.10
RAM : 1Go
HDD : 20Go (disque vierge, non partitionné)

Mon plan est de configurer les différentes partitions comme suit:

/boot : 1Go – ext4
/root : 15Go – ext4
swap : 1Go
/home : le reste du disque – ext4

 

I. Preparation du disque avec GParted

Insérer l’ISO d’Ubuntu dans le lecteur de média de la VM (Virtual Machine en anglais, ou machine virtuelle), puis sélecter l’option Essayer Ubuntu sans l’installer.

GParted est compris dans l’ISO. Il n’y a plus besoin de le télécharger à part entière.

Quand vous sélectionnez votre partition, il vous sera demandé de choisir une table de partition. Sur les systèmes assez récent, GPT est un très bon choix.

 

Au niveau partition, il nous en faut deux. Celle utilisée pour  le boot, ne sera pas chiffré. La deuxième partition, dans laquelle on y mettra root, swap et home par le suite, sera entièrement chiffrée.

A la question, pourquoi ne pas chiffrer la partition boot, la réponse a été donnée ici.

 

II. Préparation de la partition chiffrée avec LUKS

Dans cette deuxième partie, je vais vous donner les étapes pour chiffrer la partition dans laquelle nous allons installer Ubuntu.

Cette partie se déroule en trois étapes:
– Initialiser la partition à chiffrer avec LUKS puis la formater
– Initialiser chaque disque associée à un volume physique
– Créer les différents volumes logiques

Je n’ai qu’un seul disque dur sur mon ordinateur, donc je ne vais pas m’embêter à expliquer comment faire dans le cas où vous avez plus d’un disque. Par contre, je vous renvoie à cet article qui traite le sujet.

 

Ne vous étonner pas si l’initialisation de la partition à chiffrer /dev/sda2, se déroule très vite.

$ sudo fdisk -l
$ sudo cryptsetup luksFormat /dev/sda2

C’est tout à fait normal, puisque l’option luksFormat, contrairement à ce que son nom nous fait croire, ne formate pas du tout le disque. Pour ce faire, nous allons utiliser la commande dd.

Commencer par accéder au conteneur LUKS, qu’on va nommer hdcrypt, et qui sera le chemin d’accès au disque déchiffré.

$ sudo cryptsetup luksOpen /dev/sda2 hdcrypt

Formatter le disque avec la commande dd. En mode parano, vous pouvez lancer la même commande plusieurs fois.

$ sudo dd if=/dev/zero of=/dev/mapper/hdcrypt bs=16M

En fonction de la taille de votre disque, cette commande risque de prendre du temps avant de se terminer. Il n’y a pas d’indication sur l’avancement de l’opération à l’écran.

Ne paniquez pas si vous ne voyez pas de progrès, laisser votre ordinateur le temps de terminer le processus, et n’oubliez surtout pas de brancher votre ordinateur à un secteur.

Le meilleur moment pour lancer cette commande, c’est durant la nuit. Au matin, il faut espérer que l’opération se termine.

 

Notre conteneur est presque prêt. Pour vous donner une idée de ce que l’on va faire par la suite,

La première étape serait d’associer un volume physique (PV, Physical Volume) à notre container.

$ sudo pvcreate /dev/mapper/hdcrypt


Créer ensuite un groupe « vgcrypt », dans lequel on regroupera tous les disques logiques.

$ sudo vgcreate vgcrypt /dev/mapper/hdcrypt

Et enfin, préparer nos disques logiques. Donnez leurs un nom qui vous donnera une indication sur la future utilisation du volume.

$ sudo lvcreate -n lvroot -L 15G vgcrypt
$ sudo lvcreate -n lvswap -L 1g vgcrypt
$ sudo lvcreate -n lvhome -l 100%FREE vgcrypt

Faites attention à la différence entre -l, qui demande à avoir une valeur en pourcentage, et -L qui s’attend à une quantité en Go, d’où le G ou g.

Nos différentes partitions (volumes logiques) sont maintenant créées. Il faut maintenant y associer les systèmes de fichier appropriés pour chaque partition.

Je ne vais pas me prendre la tête à choisir lequel utiliser. Si vous voulez utiliser autre chose que EXT4, libre à vous.

$ sudo mkfs.ext4 -L Root /dev/vgcrypt/lvroot
$ sudo mkfs.ext4 -L Home /dev/vgcrypt/lvhome
$ sudo mkswap -L Swap /dev/vgcrypt/lvswap

Ici, le label (-L <option>) n’est pas obligatoire. C’est une indication supplémentaire pour indiquer à quelle partition je vais associer le volume.

Vérifier les informations de vos partitions avec fdisk.


La partie déchiffrée du disque se situe dans /dev/mapper.

 

III. Installation d’Ubuntu dans une partition chiffrée

Je ne vais pas détailler le processus d’installation. Cependant, il y a quelques points auxquels j’aimerai qu’on discute.

Ubuntu a une option pour chiffrer tout le disque, par contre celà effacera entièrement le disque dur. Ce n’est pas une option pour moi, puisqu’il me faut toujours ma partition Windows. Si comme moi, vous souhaitez garder le double boot, faites attention à ne pas sélectionner cette option.

La dernière option est celle qui nous intéresse, puisqu’elle nous laisse le choix de manipuler les partitions à notre façon.

Pour chaque volume logique, nous allons lui associer les partitions correspondantes.

Par exemple, à la partition /home il lui faut associer au volume /dev/mapper/vgcrypt-lvhome (format de fichier ext4).

Aussi, faites attention quand vous choisissez le boot loader, sinon le système ne pourra pas être installé, ou encore l’OS ne peut pas démarrer par la suite.

Poursuivez l’installation,

Et ne redémarrer pas encore votre système puisqu’il n’est pas tout à fait prêt.

 

IV. GRUB et les partitions chiffrées

Le GRUB ne sait pas lire des partitions chiffrées, en tout cas au moment où j’écris cet article. Il va donc falloir lui donner manuellement toutes les informations nécessaire pour qu’il puisse démarrer le système d’exploitation qu’on vient d’installer.

Si, à un moment ou à un autre, le GRUB n’arrive pas à démarrer le système, suite à une mise-à-jour par exemple, il va falloir refaire toutes les étapes ci-dessous pour débloquer le situation.

Commencer par monter toutes les partitions dont en a besoin en mode chroot, en commençant par celle qui contient la partition root, suivit du boot, puis le reste.

$ sudo mount /dev/mapper/vgcrypt-lvroot /mnt
$ sudo mount /dev/sda1 /mnt/boot
$ sudo mount /dev/mapper/vgcrypt-lvhome /mnt/home
$ sudo mount --bind /dev /mnt/dev

Récupérer ensuite l’UUID du disque /dev/sda2 chiffré avec LUKS. On n’en aura besoin pour la suite.

Monter ensuite les systèmes de fichiers du noyau virtuels proc, sysfs et devpts une fois connecté avec chroot.

$ sudo chroot /mnt
# mount -t proc proc /proc
# mount -t sysfs sys /sys
# mount -t devpts devpts /dev/pts

Créer un fichier crypttab pour y ajouter les informations ci-dessous.

[chroot]# vi /etc/crypttab
# <target name> <source device>		<key file> <options>
hdcrypt         UUID=UUID_de_sda2		none		luks,retry=1,lvm=vgcrypt

 

Déclarer le disque chiffré.

[chroot]# vi /etc/initramfs-tools/conf.d/cryptroot
CRYPTROOT=target=hdcrypt,source=/dev/disk/by-uuid/UUID_de_sda2

 

Regénérer les images de démarrage.

[chroot]# update-initramfs -k all -c

Indiquer au GRUB que la partition racine est chiffrée.

[chroot]# vi /etc/default/grub
 
GRUB_CMDLINE_LINUX="cryptopts=target=hdcrypt,source=/dev/disk/by-uuid/UUID_de_sda2,lvm=vgcrypt"

Mettre à jour les informations du GRUB.

[chroot]# update-grub


Et voilà, on est arrivé au bout. Vous pouvez maintenant redémarrer votre système.

Sources

Pourquoi la partition Boot n’est pas Cryptable ?
How can I install Ubuntu encrypted with LUKS with dual-boot?
Installer un Ubuntu chiffré avec LUKS, LVM et un partitionnement personnalisé
LFCS: How to Manage and Create LVM Using vgcreate, lvcreate and lvextend Commands – Part 11
Setup Flexible Disk Storage with Logical Volume Management (LVM) in Linux – PART 1

vSphere 6.5 – Désactivation de TLS 1.0 et 1.1

Un petit sujet pour vous aider à désactiver les versions obsolètes de TLS pour votre environement vSphere 6.5. Ce topic n’apporte rien de plus qu’un éclaircissement de l’article KB2147469, ainsi que quelques astuces qui pourraient vous aider à mener à bien cette opération.

Pour information, TLS 1.0 et 1.1 seraient automatiquement désactivés à partir de vSphere 6.7.

Je vous propose de lire cet article qui explique pour quelles raisons désactiver ces versions, ainsi que celui-ci qui explique ce que c’est que TLS/SSL.

Avant d’aller plus loin, noter que vous ne pouvez désactiver TLS qu’à partir d’un environment qui tourne avec la même version. En gros, si vous avez un vCenter en 6.5, vous ne pouvez désactiver TLS que pour ESXi 6.5, et non avec ESXi 6.0 ou 5.5.

Cependant, il y a une petite exception.
Avec un vCenter en 6.5 U2, vous pouvez désactiver TLS sur un ESXi en 6.0 U3.

Les ordres de suppressions de TLS dans le cas de l’utilisation de l’Appliance:
1. vCenter
2. ESXi
3. PSC

 

Commencer par télécharer le packet RPM vSphereTlsReconfigurator que vous allez placer dans le dossier /tmp du vCenter, puis lancer l’installation du packet.

cd /tmp

rpm -Uvh VMware-vSphereTlsReconfigurator-version-build_number.x86_64.rpm

Une fois le paquet installé, les scripts devraient se trouver dans:

/usr/lib/vmware-vSphereTlsReconfigurator/VcTlsReconfigurator

/usr/lib/vmware-vSphereTlsReconfigurator/EsxTlsReconfigurator

 

I. VCSA et PSC

La désactivation de TLS du VCSA (vCenter Appliance) et du PSC se procède de la même façon. Je l’ai déjà dit plus haut, mais je le répète encore une fois. Il ne faut pas désactiver TLS sur le PSC tant que ce n’est pas fait sur VCSA et les différents ESXis.

 

Garder une copie de vos configurations.

cd /usr/lib/vmware-vSphereTlsReconfigurator/

cd VcTlsReconfigurator

./reconfigureVc backup

 

Désactiver les versions TLS v1 et 1.1.

./reconfigureVc update -p TLSv1.2

 

Une fois c’est fait, vous devrez avoir.

 

II. ESXi

Placer vous dans le dossier EsxTlsReconfigurator.

cd /usr/lib/vmware-vSphereTlsReconfigurator/EsxTlsReconfigurator

Vous avez le choix entre la désactivation du TLS par server ou au niveau du cluster.

Dans le cas où vous souhaitez faire la manipulation par server,

./reconfigureEsx vCenterHost -h <ESXi_Host_Name> -u <Administrative_User> -p TLSv1.2

Pour la désactivation au niveau du cluster, il suffit de remplacer vCenterHost par vCenterCluster.

./reconfigureEsx vCenterCluster -c <Cluster_Name> -u <Administrative_User> -p TLSv1.2

 

N’oubliez pas de redémarrer les serveurs ESXi pour que les modifications prennent effet.

III. Combinaison ESXi 6.0u3 avec VCSA 6.5u2

Vous allez remarquer vous le même script utilisé pour désactiver TLS sur VCSA 6.5 ne fonctionnera pas avec un ESXi 6.0.

Validating product version at: "localhost".
Validating ESXi host: "HOST NAME".
Host "HOST NAME" is of unsupported version: "6.0".
Least supported version: "6.5".
Skipping reconfiguration of ESXi host "HOST NAME"

1. Télécharger cette fois ci TLS Reconfigure 6.0 U3

2. Désinstaller l’utilitaire pour 6.5 dans VCSA

rpm -e VMware-vSphereTlsReconfigurator-6.5.0-7766806.x86_64

3. Installer l’utilitaire TLS reconfiguration utility 6.0 dans un dossier /tmp du VCSA

rpm -Uvh VMware-vSphereTlsReconfigurator-6.0.0-5051284.x86_64

4. Déconnecter l’hôte ESXi à reconfigurer (n’enlevez surtout pas l’hôte de l’inventaire du vCenter)

5. Remplacer « vCenterHost » par « ESXiHost » dans la commande vue plus haut.

./reconfigureEsx ESXiHost -h <ESXi_Host_Name> -u root -p TLSv1.2

6. Reconnecter ESXi à vCenter

7. Placer l’hôte en maintenance mode

8. Rebooter le server

 

IV. Vérification

Vérifier que TLS est bien désactivé. Pour celà, à partir de n’importe quelle machine qui tourne sous linux, et même à partir du vCenter, lancer la commande ci-dessous.

openssl s_client -connect <ESXi_Host_Name>:443 -tlsX

Remplacer X par 1, 1_1 ou 1_2.

 

openssl s_client -connect <ESXi_Host_Name>:443 -tls1

openssl s_client -connect <ESXi_Host_Name>:443 -tls1_2

Vous devriez avoir une erreur « ssl handshake failure » si la version du TLS n’est pas supportée ou, est désactivée.

 

Sources:

Protocole SSL et TLS
Dépréciation de TLS v1.0/1.1 et application de TLS v1.2
Ports That Support Disabling TLS Versions
Managing TLS protocol configuration for vSphere 6.5/6.7 (2147469)
How can I verify if TLS 1.2 is supported on a remote web server from the RHEL/CentOS shell?

 

[Windows] MRemoteNG – Gestionnaire de connexions distantes

En tant qu’administrateur, à un moment ou à un autre, on n’a d’autre choix que d’utiliser le matériel proposé par l’entreprise. Généralement, on vous met dans les bras un PC avec Windows installé dessus. Je ne raconte même pas la galère que j’ai eu à utiliser Windows 10. Cà n’a rien à avoir avec la facilité d’utilisation de Windows XP! Géniale la comparaison, n’est ce pas. Trêve de plaisanterie.

Dans cet article, je vais vous présenter un outil open source, et qui est super génial pour administrer vos serveurs. Je ne vous présente plus MRemoteNG si vous connaissez déjà. Je vais vous proposer ensuite quelques extensions qui me sont très utiles.

Bien que Unity n’est plus développé par Canonical, c’est l’interface graphique par défaut avec la version 16.04 LTS. Quand la version 18.04 sera disponible, on verra si c’est toujours galère de s’y connecter en RDP.

Pour ne pas avoir à faire trop de manipulation virer, ou mettez de côté GNOME et UNITY. XFCE sera notre interface graphique de choix, et plus particulièrement pour un accès à distance avec le moindre effort.

I. Sur la machine distante, Ubuntu

Installer xRDP et XFCE

sudo apt install xrdp xfce4
echo xfce4-session >~/.xsession
cp /etc/xrdp/startwm.sh /etc/xrdp/startwm.sh.bak

Remplacer « . /etc/X11/Xsession » par « startxfce4 » dans le fichier /etc/xrdp/startwm.sh

sed -e "s;. /etc/X11/Xsession;startxfce4;" /etc/xrdp/startwm.sh

Redémarrer le service xRDP

sudo service xrdp restart

Activer le partage de bureau dans les Préférences de bureau distant.

Noter votre adresse IP pour l’accès à distance.

hostname -I

 

II. Sur la machine locale, Windows

Installer mRemoteNG et créer une nouvelle connection avec les informations de votre machine distante.


La puissance de cet outil réside dans le fait que, non seulement il supporte à la base plusieurs types de protocols (SSH, RDP, etc.), mais aussi on peut y lier des outils externes (NMAP, WinSCP, etc.).

Dans cet exemple, je vais rajouter Zenmap GUI, qui est l’interface graphique de Nmap. Dans un premier temps, installer Nmap puis dans MRemoteNG, sélectionner Outil>Outils Externe>Nouveau pour configurer le nouvel outil.

Pour Zenmap,


Display Name: Zenmap GUI
Filename: C:\Program Files\Nmap\zenmap.exe (chemin d’accès vers le fichier zenmap.exe)
Arguments: -p « Quick scan plus » -t %Hostname%
Try to Integrate: V (cochée)

 

Sources:

How to Setup A Ubuntu Remote Desktop
How to use xRDP for remote access to Ubuntu 14.04
3 Tips for the mRemoteNG Remote Connections Manager
Common External Tool Configurations
MRemoteNG – multi-gestionnaire de connexions distantes
Downloading Nmap

 

Installation de vSphere 6.5 dans Proxmox

Chap 1. Configuration d’un serveur DNS-DHCP avec Zentyal
Chap 2. Installation de vSphere 6.5 dans Proxmox
Chap 3. Nested ESXi – ESXi imbriqué dans un autre ESXi
Chap 4. Configuration du réseau et de pfSense dans vSphere 6.5
Chap 5. FreeNAS – Configuration d’un serveur NFS avec VMware vSphere 6.5
Chap 6. FreeNAS – Configuration d’un SAN iSCSI avec VMware vSphere 6.5
Annexe. Topologie complète avec les icones de VMware

Chap 2. Installation de vSphere 6.5 dans Proxmox

L’installation de vSphère 6.5 dans proxmox n’est peut être pas évident pour tout le monde. C’est pour celà que j’écris cet article.

Avant d’aller plus loin, je tiens à préciser quelques points.

Primo, vous pouvez télécharger gratuitement la suite vSphère sur le site de VMware. Noter que le produit nécessite une license, une fois la période d’essai gratuite de 60 jours terminée.
Secondo, il n’est plus nécessaire d’installer vCenter dans un serveur Windows. Il faut l’installer comme une machine virtuelle à part entière.
Tertio, je tiens à rappeler que j’utilise debian 9.1 sur un macbook pro. Du coup, j’ai rencontré des soucis lorsqu’il fallait appuyer sur la touche F11 du clavier pour valider l’installation de l’ESXi. Bizarrement, c’est la seule touche en combinaison avec fn, qui n’est pas reconnue, puisque F2 et F9 le sont. Même soucis avec un clavier externe attaché au Mac. Il m’a fallut utiliser un PC/linux pour continuer et terminer l’installation.

I. Préparation est installation du serveur ESXi

Je pars du principe que vous avez installé Proxmox sur un ordinateur ou un serveur dédié avec au moins 16GB de mémoire physique.

Créez une machine virtuelle principale pour acceuillir le serveur ESXi, avec les spécifications suivantes.

CPU >= 2 (type: host)
RAM >= 10GB
Local disk0 >= 2GB (format VMDK)
Local disk1 >= 25GB (format VMDK)
Network: VMXNET3
OS: Other OS types

Ajouter un deuxième disque dur pour l’installation du serveur vCenter.


Ici, j’ai pris la taille du disque proposée par défaut, qui est de 35GB.

Une fois la machine virtuelle prête, vous pouvez vous lancer dans l’installation du serveur ESXi.

Concernant les adresses IP à appliquer aux serveurs, il est fortement conseillé d’utiliser une adresse IP statique.

Une fois l’installation terminée, formater le deuxième disque afin qu’il soit utilisable pour l’installation de vCenter. Pour celà, il suffit de taper l’adresse IP du serveur ESXi dans votre navigateur internet.

II. Installation du serveur vCenter

Comme je le disais dans le titre, il est maintenant possible d’installer vCenter à partir d’une machine tournant sous linux, mais cependant pas avec n’importe quelles distributions. Il faut utiliser Ubuntu ou Suse linux.

Je me suis donc créé une machine virtuelle Ubuntu dans Proxmox, puis j’ai lancé le fichier d’installation de vCenter. Ce; tte étape peut se faire en deux étapes. Une fois la première étape terminée, vous pouvez poursuivre l’installation à une date ultérieure, puis de reprendre à partir de la deuxième étape en entrant dans l’URL de votre navigateur l’adresse IP du serveur vCenter.

Étape 1:


En production, il est fortement recommandé d’ajouter un serveur via son nom de domaine au lieu de l’adresse IP. Je vous explique comment faire à la troisième partie de ce chapitre.

Comme je n’ai pas configuré de serveur DNS lors de cette manipulation, et surtout que c’est un lab, je peux donc me permettre d’utiliser l’adresse IP comme solution temporaire.


Note: Je viens de terminer un article expliquant comment configurer un serveur DNS. Je vous renvoie sur cette page pour voir comment procéder.


Étape 2:
Accéder à l’interface du vCenter à partir de son adresse IP. Vous allez constater qu’il vous faut du flash! Et oui, sans flash vous pouvez toujours utiliser l’interface en HTML5, mais avec des fonctionnalitées limitées.

Heureusement, le problème avec flash sera définitivement résolu d’ici 2020, finalement! Adobe a annoncé officiellement que flash sera retiré du marché après cette date:

« as open standards like HTML5, WebGL and WebAssembly have matured over the past several years, most now provide many of the capabilities and functionalities that plugins pioneered and have become a viable alternative for content on the web. (…) Adobe is planning to end-of-life Flash. Specifically, we will stop updating and distributing the Flash Player at the end of 2020 and encourage content creators to migrate any existing Flash content to these new open formats. »

III. Note concernant l’installation du vCenter via Ubuntu, une fois le serveur DNS/DHCP configuré

Dans la première partie de cet article, je vous ai expliqué comment installer un serveur vCenter lorsqu’on n’a pas de serveur DNS en place. Dans cette partie, nous allons en tenir compte de la présence de Zentyal, qui sera notre serveur DNS sur le réseau (cf. chap 1).

Avant de procéder à l’installation du serveur vCenter, je tiens à rappeler que j’utilisez un nom de domaine en .local (mylab.local). Celà pose un problème lorsqu’on utilise la version bureau de Ubuntu qui, utilise un serveur DNS en local (Avahi), et qui, lui aussi traduit les noms de domaines du type le-nom-de-mon-hote.local en adresse IP.

administrator@budgie:~$ ping debian.local
PING debian.local (192.168.1.10) 56(84) bytes of data.
64 bytes from 192.168.1.10 (192.168.1.10): icmp_seq=1 ttl=64 time=2.36 ms
64 bytes from 192.168.1.10 (192.168.1.10): icmp_seq=2 ttl=64 time=1.31 ms
^C
--- debian.local ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 1.317/1.838/2.360/0.523 ms

Par contre,

administrator@budgie:~$ ping esxi-01.mylab.local
ping: esxi-01.mylab.local: Name or service not known

 

Et ceci, malgré le fait que la résolution de noms se fait sans problème.

administrator@budgie:~$ host esxi-01.mylab.local
esxi-01.mylab.local has address 192.168.1.51

Si vous vous décidez tout de même à lancer l’installation de vCenter sans prendre compte les alertes ci-dessus, vous allez recevoir un message d’erreur de type:

error: Could not get certificate fingerprint from host, esxi01.mylab.local: Error: getaddrinfo ENOTFOUND esxi01.mylab.local esxi01.mylab.local:443

Pour comprendre ce problème, jettons un coup d’oeil au fichier /etc/nsswitch.conf. Si je m’intéresser à ce fichier, ce n’est pas par hasard puisque les services comme dig, host, nslookup, etc. y font référence pour résoudre les noms de domaines via la commande getaddrinfo.

Si je reprends l’explication de Wikipedia concernant le fichier NSS (Name Service Switch), ce fichier « autorise le remplacement des traditionnels fichiers Unix de configuration (par exemple /etc/passwd, /etc/group, /etc/hosts) par une ou plusieurs bases de données centralisées ».

hosts: files mdns4_minimal [NOTFOUND=return] resolve [!UNAVAIL=return] dns myhostname

La partie qui nous intéresse dans ce fichier est la partie au niveau de la ligne hosts. La recherche d’information via les commandes comme ping, nslookup, etc., se fait en lisant la ligne de gauche à droite.

  1. files traduit les noms d’hôtes statics via le fichier /etc/hosts
  2. mdns4_minimal traduit les noms de domaines en passant par le multicast DNS (mDNS)
  3. [NOTFOUND=return] signifie que, si la requête juste avant cette commande (ici, une requête mDNS) renvoie une réponde de type notfound, alors le système n’essaie pas d’autre méthode pour résoudre le nom de domaine
  4. dns, comme vous pouvez vous en doutez, traduit les noms de domaine à la façon traditionnelle

Le problème que j’ai rencontré plus haut s’explique par le fait que la recherche du nom de domaine est enclenchée par mDNS, puisque c’est la première requête DNS rencontrée au niveau de la ligne host. Puis la recherche s’arrête net et sans passer par notre serveur DNS puique, si l’on regarde le fqdn qui est esxi-01.mylab.local, mDNS recherche dans sa base de donnée s’il n’y a pas un nom d’hôte ayant pour nom esxi-01.mylab. Comme il n’y a rien de tel, la recherche s’arrête et ne va pas plus loin que [NOTFOUND=return].

Pour régler ce problème, placer dns avant mdns.

hosts: files dns [NOTFOUND=return] resolve [!UNAVAIL=return] mdns4_minimal myhostname

C’est une méthode parmis tant d’autre, et c’est ce que je recommande vivement de suivre.

Pour plus d’information concernant le multicast DNS, je vous renvoie à ces articles:

https://wiki.archlinux.org/index.php/avahi
https://doc.ubuntu-fr.org/zeroconf
https://fr.wikipedia.org/wiki/Avahi_(logiciel)

Information sur le matériel – HP Proliant Gen8

Pour résumé, voici l’essentiel de ce qu’il faut savoir de mon nouveau micro-serveur HP Proliant Gen8.

  • CPU : Intel Xeon E3 1265L Dual-core
  • 16 Go DDR3 ECC
  • 3 Disques durs SCSI

Cependant, je vais en profiter de cette page pour vous faire découvrir quelques commandes utiles pour avoir les informations sur votre système.

Commençons par les commandes pour avoir les informations sur la mémoire RAM.

~# cat /proc/meminfo
MemTotal: 16257496 kB
MemFree: 9012728 kB
MemAvailable: 10773580 kB

~# free -m
total used free shared buff/cache available
Mem: 15876 4947 8800 99 2128 10520
Swap: 10239 0 10239
~# free -h
total used free shared buff/cache available
Mem: 15G 4.9G 8.5G 99M 2.1G 10G
Swap: 9G 0B 9G

Pour avoir les informations sur les mémoires physiques, je n’ai pas trouvé mieux qu’avec la commande « dmidecode -t 17 ». D’autres exemples avec cette seront abordées un peu plus loin.

Puis vient ensuite la série des « ls », comme lscpu pour avoir des informations sur le processeur, lspci pour avoir la liste des bus PCI et des composants qui y sont attachés, etc. D’autres commandes comme lshw, pour avoir une information détaillée sur tout le système, ou encore lsscsi ne font pas parties des commandes de bases. Il faut les installer pour pouvoir les utiliser.

Pour avoir la liste des commandes « ls* », il faut commencer par trouver le dossier dans lequel ces commandes sont placées.

~# which lscpu
/usr/bin/lscpu
~# whereis lscpu
lscpu: /usr/bin/lscpu /usr/share/man/man1/lscpu.1.gz

Ensuite, il suffit de lister le contenu de ce dossier.

~# ls /usr/bin/ | grep ^ls
lsattr
lscpu
lshw
lsinitramfs
lsipc
lslocks
lslogins
lsns
lsof
lspci
lspgpot
lsscsi
lsusb

Voici plus ou moins, ce que vous devriez avoir avec ces commandes. J’ai supprimé les informations inutiles pour ne pas trop charger cette page.

# lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
CPU(s): 8
On-line CPU(s) list: 0-7
Thread(s) per core: 2
Core(s) per socket: 4
Socket(s): 1
NUMA node(s): 1
Model name: Intel(R) Xeon(R) CPU E3-1265L V2 @ 2.50GHz
CPU MHz: 2500.000
Virtualization: VT-x
NUMA node0 CPU(s): 0-7

~# lsscsi
[0:0:0:0] disk ATA Samsung SSD 850 2B6Q /dev/sda
[1:0:0:0] disk ATA Samsung SSD 850 2B6Q /dev/sdb
[2:0:0:0] disk ATA SanDisk SDSSDP12 0 /dev/sdc
[6:0:0:0] disk HP iLO LUN 00 Media 0 2.10 /dev/sdd

~# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 238.5G 0 disk /mnt/850Pro
sdb 8:16 0 238.5G 0 disk /mnt/850Pro2
sdc 8:32 0 117.4G 0 disk
├─sdc1 8:33 0 1M 0 part
├─sdc2 8:34 0 256M 0 part
└─sdc3 8:35 0 117.1G 0 part
├─pve-swap 253:0 0 10G 0 lvm [SWAP]
├─pve-root 253:1 0 29.3G 0 lvm /
├─pve-data_tmeta 253:2 0 64M 0 lvm
│ └─pve-data 253:4 0 63.3G 0 lvm
└─pve-data_tdata 253:3 0 63.3G 0 lvm
└─pve-data 253:4 0 63.3G 0 lvm
sdd 8:48 0 256M 1 disk
└─sdd1 8:49 0 251M 1 part

~# lspci
00:00.0 Host bridge: Intel Corporation Xeon E3-1200 v2/Ivy Bridge DRAM Controller (rev 09)
00:01.0 PCI bridge: Intel Corporation Xeon E3-1200 v2/3rd Gen Core processor PCI Express Root Port (rev 09)
00:06.0 PCI bridge: Intel Corporation Xeon E3-1200 v2/3rd Gen Core processor PCI Express Root Port (rev 09)
00:1a.0 USB controller: Intel Corporation 6 Series/C200 Series Chipset Family USB Enhanced Host Controller #2 (rev 05)
00:1c.0 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 1 (rev b5)
00:1c.4 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 5 (rev b5)
00:1c.6 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 7 (rev b5)
00:1c.7 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 8 (rev b5)
00:1d.0 USB controller: Intel Corporation 6 Series/C200 Series Chipset Family USB Enhanced Host Controller #1 (rev 05)
00:1e.0 PCI bridge: Intel Corporation 82801 PCI Bridge (rev a5)
00:1f.0 ISA bridge: Intel Corporation C204 Chipset Family LPC Controller (rev 05)
00:1f.2 RAID bus controller: Intel Corporation 6 Series/C200 Series Chipset Family SATA RAID Controller (rev 05)
01:00.0 System peripheral: Hewlett-Packard Company Integrated Lights-Out Standard Slave Instrumentation & System Support (rev 05)
01:00.1 VGA compatible controller: Matrox Electronics Systems Ltd. MGA G200EH
01:00.2 System peripheral: Hewlett-Packard Company Integrated Lights-Out Standard Management Processor Support and Messaging (rev 05)
01:00.4 USB controller: Hewlett-Packard Company Integrated Lights-Out Standard Virtual USB Controller (rev 02)
02:00.0 Memory controller: Hewlett Packard Enterprise Device 005f
03:00.0 Ethernet controller: Broadcom Limited NetXtreme BCM5720 Gigabit Ethernet PCIe
03:00.1 Ethernet controller: Broadcom Limited NetXtreme BCM5720 Gigabit Ethernet PCIe
04:00.0 USB controller: Renesas Technology Corp. uPD720201 USB 3.0 Host Controller (rev 03)

Puis vient ensuite la super commande « lshw ».

~# lshw
description: Tower Computer
product: ProLiant MicroServer Gen8 (712317-421)
vendor: HP
*-cpu
description: CPU
product: Intel(R) Xeon(R) CPU E3-1265L V2 @ 2.50GHz

*-memory
description: System Memory
size: 16GiB
capabilities: ecc

*-scsi:0
logical name: scsi0
capabilities: emulated
*-disk
description: EXT4 volume
product: Samsung SSD 850
logical name: /dev/sda
logical name: /mnt/850Pro
size: 238GiB

Une version plus concise de lshw serait,

~# lshw -short
H/W path Device Class Description
============================================================
system ProLiant MicroServer Gen8 (712317-421)
/0 bus Motherboard
/0/0 memory 64KiB BIOS
/0/400 processor Intel(R) Xeon(R) CPU E3-1265L V2 @ 2.50GHz
/0/400/710 memory 128KiB L1 cache
/0/400/720 memory 1MiB L2 cache
/0/400/730 memory 8MiB L3 cache
/0/1000 memory 16GiB System Memory
/0/1000/0 memory 8GiB DIMM DDR3 Synchronous Unbuffered (Unregistered) 1333 MHz (0.8 ns)
/0/1000/1 memory 8GiB DIMM DDR3 Synchronous Unbuffered (Unregistered) 1333 MHz (0.8 ns)
/0/100 bridge Xeon E3-1200 v2/Ivy Bridge DRAM Controller
/0/100/1 bridge Xeon E3-1200 v2/3rd Gen Core processor PCI Express Root Port
/0/100/6 bridge Xeon E3-1200 v2/3rd Gen Core processor PCI Express Root Port
/0/100/6/0 memory Memory controller
/0/100/1a bus 6 Series/C200 Series Chipset Family USB Enhanced Host Controller #2
/0/100/1a/1 usb1 bus EHCI Host Controller
/0/100/1a/1/1 bus Integrated Rate Matching Hub
/0/100/1c bridge 6 Series/C200 Series Chipset Family PCI Express Root Port 1
/0/100/1c.4 bridge 6 Series/C200 Series Chipset Family PCI Express Root Port 5
/0/100/1c.4/0 eno1 network NetXtreme BCM5720 Gigabit Ethernet PCIe
/0/100/1c.4/0.1 eno2 network NetXtreme BCM5720 Gigabit Ethernet PCIe
/0/100/1c.6 bridge 6 Series/C200 Series Chipset Family PCI Express Root Port 7
/0/100/1c.6/0 bus uPD720201 USB 3.0 Host Controller
/0/100/1c.6/0/0 usb4 bus xHCI Host Controller
/0/100/1c.6/0/1 usb5 bus xHCI Host Controller
/0/100/1c.7 bridge 6 Series/C200 Series Chipset Family PCI Express Root Port 8
/0/100/1c.7/0 generic Integrated Lights-Out Standard Slave Instrumentation & System Support
/0/100/1c.7/0.1 display MGA G200EH
/0/100/1c.7/0.2 generic Integrated Lights-Out Standard Management Processor Support and Messaging
/0/100/1c.7/0.4 bus Integrated Lights-Out Standard Virtual USB Controller
/0/100/1c.7/0.4/1 usb3 bus UHCI Host Controller
/0/100/1d bus 6 Series/C200 Series Chipset Family USB Enhanced Host Controller #1
/0/100/1d/1 usb2 bus EHCI Host Controller
/0/100/1d/1/1 bus Integrated Rate Matching Hub
/0/100/1d/1/1/3 bus Hub
/0/100/1d/1/1/3/1 scsi6 storage Ultra Fast Media Reader
/0/100/1d/1/1/3/1/0.0.0 /dev/sdd disk 268MB LUN 00 Media 0
/0/100/1d/1/1/3/1/0.0.0/1 /dev/sdd1 volume 255MiB Windows FAT volume
/0/100/1e bridge 82801 PCI Bridge
/0/100/1f bridge C204 Chipset Family LPC Controller
/0/100/1f.2 storage 6 Series/C200 Series Chipset Family SATA RAID Controller
/0/1 scsi0 storage
/0/1/0.0.0 /dev/sda volume 238GiB Samsung SSD 850
/0/2 scsi1 storage
/0/2/0.0.0 /dev/sdb volume 238GiB Samsung SSD 850
/0/3 scsi2 storage
/0/3/0.0.0 /dev/sdc disk 126GB SanDisk SDSSDP12
/0/3/0.0.0/1 /dev/sdc1 volume 1023KiB BIOS Boot partition
/0/3/0.0.0/2 /dev/sdc2 volume 255MiB Windows FAT volume
/0/3/0.0.0/3 /dev/sdc3 volume 117GiB LVM Physical Volume
/1 power Power Supply 1
/2 vmbr0 network Ethernet interface
/3 tap104i0 network Ethernet interface
/4 tap102i0 network Ethernet interface

Une autre commande que je trouve très intéressante serait « dmidecode ».

~# dmidecode -t
dmidecode: option requires an argument -- 't'
Type number or keyword expected
Valid type keywords are:
bios
system
baseboard
chassis
processor
memory
cache
connector
slot

Dmidecode nécessite qu’on lui fournisse le type (« -t ») d’information à récupérer en option. Cette option peut être un nom, ou un numéro. La commande « dmidecode -t 1 » donne le même résultat que « dmidecode -t system ». Voyez dans le manuel pour plus d’information.

~# man dmidecode
DMI TYPES
The SMBIOS specification defines the following DMI types:

Type Information
────────────────────────────────────────────
0 BIOS
1 System
...

Ajout d’un disque dur externe et migration de données

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à.

Selection_006
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é.

Selection_008
fig 2. Ajout d’un nouveau fichier

L’espace disque disponible est bien celui auquel on s’attend.

Selection_009
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)