Blog Widget by LinkWithin

18 nov. 2015

[Tuto] Sauvegardez vos données sur un Raspberry Pi distant


Tuto détaillant la mise en place d'une réplication distante de vos données sensibles

1) Contexte :


Vous cherchez un moyen de sauvegarder les photos de vos mioches, vidéos de famille, etc... bref ce qui n'a pas de prix à vos yeux et qui ne pourra pas être re-téléchargé sur vos trackers préférés? sans avoir à confier vos données à un tiers et payer du stockage en ligne?

Avec ce tuto on va voir que pour un prix très raisonnable, vous aller mettre en place un système plutôt robuste.

Il vous faut en prérequis une machine source sous linux avec rsync d'installé, ça peut très bien être un autre raspberry pi...

2) Liste des courses :

  1. Raspberry Pi B, B+, 1 ou 2 peu importe, c'est pas la puissance qui compte ici
  2. Carte micro SD 8Go ou plus, pour l'OS et un partage local (voir §4.4.3)
  3. Du stockage : HDD usb 2"5 ou une clé usb, ou un HDD 3"5 externe et son alimentation
  4. Chargeur Secteur Mural Dual Ports USB
  5. Câble USB 2.0 Dual Power - Type A Mâle x 2 (20cm) / Mini-B Mâle - 0,5m (en cas de 2"5 gourmand)
ou variante 5bis : HUB USB alimenté si vous souhaitez avoir plusieurs périphériques USB


liste de courses

3) Préparation de la carte SD : 

Il vous faut récupérer l'image Rapsbian sur le site officiel et l'installer sur la carte microSD.

https://downloads.raspberrypi.org/raspbian_latest

Il existe plusieurs logiciels pour faire ceci, mais j'ai une préférence pour Windiskimager32 (sous windows)

NB :  la carte SD n'a pas besoin d'être performante, pas de classe 10 etc vous pouvez recycler une vieille carte...

Une fois la carte préparée, on la met dans le rasp, on le branche et vous ouvrez une session pour passer à la configuration (soit en local dans un terminal soit en ssh.

4) Configuration du Raspberry "Dataguard"

 4.1) Création d'un user dédié et attribution du sudo

Pour sécuriser tout ça, on va changer d'utilisateur en créant notre propre compte dédié "micougnou"
pi@raspberrypi / $ sudo adduser micougnou

On vérifie la création avec
pi@raspberrypi / $cat /etc/passwd
[...] 
micougnou:x:1001:1001:,,,:/home/micougnou:/bin/bash

Maintenant qu'il est bien créé, on lui donne les droits d'admin (sudo) en modifiant le fichier sudoers
pi@raspberrypi / $ sudo vi /etc/sudoers

dans la section # User privilege specification on rajoute pour notre nouveau compte :
micougnou   ALL=(ALL:ALL) ALL
sécurité : modification de configuration ssh pour interdire l'accès root
on va éditer le fichier /etc/ssh/sshd.config et on va modifier la ligne :
PermitRootLogin without-password
en
PermitRootLogin no 

sécurité : installation de fail2ban
pi@raspberrypi / $ sudo apt-get install fail2ban

sécurité : modification du password par défaut du raspberry avec passwd

pour faciliter l'automatisation de la réplication, on fait un partage de clés ssh.

Si vous ne savez pas ce que c'est, ou que vous n'en avez pas généré, je vous renvoi vers cet article (voir §3.2)

Lancer à partir de la machine source :
micougnou@srv_source / $ ssh-copy-id -i ~/.ssh/id_rsa.pub micougnou@ip_du_rasp_dg

4.2)  Partie stockage

4.2.1 création d'un point de montage pour les données répliquées

on crée le répertoire Dataguard à la racine (vous pouvez le nommer comme bon vous semble) :
micougnou@raspberrypi / $ mkdir /Dataguard

4.2.2 détection du HDD

On va voir si le disque dur  est bien reconnu par le Pi :
micougnou@raspberrypi / $ sudo fdisk -l

Disk /dev/sda: 298.1 GiB, 320072933376 bytes, 625142448 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: 0x44fdfe06

Device     Boot Start       End   Sectors   Size Id Type
/dev/sda1          63 625137344 625137282 298.1G  7 HPFS/NTFS/exFAT

Si vous ne voyez rien c'est peut-être lié à un manque de puissance sur l'alimentation USB de votre HDD... c'est pour cette raison que dans la liste des courses j'ai mis un câble double USB ou un HUB USB alimenté!

4.2.3 récupération de son UUID : 

C'est l'identifiant unique du disque dur, dans la cas d'un disque USB ca permet d'éviter de tout casser si vous rajoutez un autre disque par exemple...
micougnou@raspberrypi / $ sudo blkid

/dev/mmcblk0: PTUUID="ba2edfb9" PTTYPE="dos"
/dev/mmcblk0p1: SEC_TYPE="msdos" LABEL="boot" UUID="74BD-74CF" TYPE="vfat" PARTUUID="ba2edfb9-01"
/dev/mmcblk0p2: UUID="ec2aa3d2-eee7-454e-8260-d145df5ddcba" TYPE="ext4" PARTUUID="ba2edfb9-02"
/dev/sda1: LABEL="My Passport" UUID="52F2-18EA" TYPE="exfat" PARTUUID="44fdfe06-01" 
 
Notez qu'on récupère aussi le format du disque, ici exfat.

4.2.4 installation de exfat-fuse : 


Le format exFat n'est pas supporté par défaut dans Raspbian, il faut installer le paquet exfat-fuse :
micougnou@raspberrypi / $ sudo apt-get install exfat-fuse

4.2.5 création du point de montage dans la fstab

Ceci va permettre le montage automatique du disque dur après chaque redémarrage
micougnou@raspberrypi / $ sudo vi /etc/fstab

et y rajouter
#Stockage Sauvegarde MyPassport
UUID=52F2-18EA /Dataguard extfat defaults,uid=1001,gid=1001 0 0


On retrouve via mon superbe code couleur les différentes informations que l'ont a récupéré jusqu'à présent : uuid, point de montage, format, utilisateur et groupe..

4.2.6 montage immédiat

On va pas attendre le prochain redémarrage pour tester tout ça, alors on force le montage :
micougnou@raspberrypi / $ sudo mount -a
FUSE exfat 1.1.0

4.2.7 vérification

micougnou@raspberrypi / $ df -h

Filesystem      Size  Used Avail Use% Mounted on
/dev/root       3.9G  3.1G  561M  85% /
devtmpfs        214M     0  214M   0% /dev
tmpfs           218M     0  218M   0% /dev/shm
tmpfs           218M  4.7M  213M   3% /run
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs           218M     0  218M   0% /sys/fs/cgroup
/dev/mmcblk0p1   56M   20M   37M  36% /boot
tmpfs            44M     0   44M   0% /run/user/1000
tmpfs            44M     0   44M   0% /run/user/1001
/dev/sda1       299G   13M  299G   1% /Dataguard

C'est OK!

4.3) Initialisation de la réplique

Maintenant qu'on a un espace de stockage tout nickel, on va initialiser une première réplique.
  1. Ceci va nous permettre de valiser que tout fonctionne
  2. Ceci prendra moins de temps sur le réseau local qu'en passant par votre adsl/fibre
Commande à lancer sur votre machine linux source (avec un rsync d'installé dessus)
rsync -auv --delete /votre_repertoire_source user_pi@ip_pi:/Dataguard

Le transfert se fait sur le réseau local, pas besoin d'activer la compression

4.4) Partie Partage

Le petit bonus qui va faire passer le pilule à vos parents qui commençaient déjà à râler :

Daron 1 : "oui tu comprends, avoir un ordinateur allumé h24 ça augmente la facture d’électricité"
(ça consomme moins que ta box TV en veille mais bon... admettons)

Moi :  Oui mais regarde quand tu allumeras ton ordinateur à toi, il y aura un répertoire dans lequel tu auras quasi en temps réel toutes les photos de ton petit fils/fille!

Daron 1 et 2 (en coeur) : Mais c'est génial!


4.4.1 installation de samba

Hop, promesse tenue, on installe samba avec :
micougnou@raspberrypi / $ sudo apt-get install samba

4.4.2 configuration de samba


L'idée c'est de partager uniquement ce que vous voulez, par exemple :
  • les photos de l'enfant : oui 
  • les photos de vos soirées à la fistinière : non 
m'enfin ça c'est vous qui voyez.


on édite le fichier /etc/samba/smb.conf et on rajoute le pavé suivant :
[Photos]
        comment = Photos de famille
        browsable = yes
        path = /Dataguard/le_repertoire_en_question
        public = yes
        writable = no
        guest ok = yes


On veut partager mais en lecture seule, n'oubliez pas que c'est votre unique sauvegarde en cas de cataclysme chez vous!

NB : vous pouvez dupliquer le pavé autant de répertoires nécessaires...

 4.4.3 Le bonus

Quitte à avoir une machine à distance pour pousser des données, pourquoi ne pas avoir aussi de quoi en récupérer?
Vous avez déjà du rencontrer le cas où votre famille adorée a une vidéo de 5min à vous envoyer mais qui passe pas par gmail ou autre... et les clés USB envoyées par la poste n'arrivent quasiment jamais.


donc là on va créer un répertoire de dépôt sur lequel n'importe qui aura les droits d'écriture, et nous on pourra récupérer le contenu en SFTP.


/!\ Attention, ne créez pas de partage dans /Dataguard, sous peine de le voir écrasé lors de la prochaine réplique...

on va le créer dans le home et donner tous les droits :
micougnou@raspberrypi / $ mkdir /home/micougnou/la_poste
micougnou@raspberrypi / $ chmod 777 /home/micougnou/la_poste

et on rajoute dans le smb.conf :
[La Poste]
        comment = dépot de fichiers pour partage
        browsable = yes
        path = /home/micougnou/la_poste
        public = yes
        writable = yes
        guest ok = yes

on redémarre pour prise en compte :
micougnou@raspberrypi / $ sudo /etc/init.d/smbd restart

5) Mise en place de la réplication automatique


C'est le grand jour, vous êtes chez vos parents, votre petit montage à la main et vous aimeriez le mettre en place.



Il va falloir faire quelques actions pour ça :

On va commencer par configurer la box ADSL :
  • Dans la section DHCP, attribuez une ip fixe à votre raspberry, par exemple 192.168.0.2
  • Ensuite redirigez un port externe au choix, par exemple le 1789 vers le port 22 de l'ip choisie à l'étape précédente
explication : des robots scannent le net constamment pour s'infiltrer, le port 22 étant connu on ne l'ouvre pas à l'externe, on choisi un port facile à retenir pour nous (allons enfants de la patri-i-e) mais assez exotique pour un "robot". Cela permet d’éviter quelques attaques.... mais pas toutes biensûr!

Sur votre serveur chez vous, vous pouvez désormais lancer un rsync pour vérifier. Attention, vu que maintenant nous sommes à distance, pensez à activer l'option z pour la compression :

rsync -auvz --delete /votre_repertoire_source user_pi@ip_pi:/Dataguard

 Si cela a fonctionné, il reste plus qu'à ordonnancé tout ça via la crontab :

sudo crontab -e
 
et vous ajoutez la ligne suivante :

0 0 * * 1 micougnou rsync -auvz --delete /votre_repertoire_source user_pi@ip_pi:/Dataguard


Ainsi tous les dimanches soir à minuit, la réplication va se lancer avec le user "micougnou"

6) Divers


Pour faciliter la vie de vos darons, vous pouvez faire des montages de lecteur réseau sur leurs PC, ça sera encore plus transparent pour eux.

De plus, si le raspberry pi est pas loin de la TV, vous pouvez faire une extension de la plateforme en installant Kodi, et vous aurez là un vrai petit médiacenter!

0 commentaires :

Enregistrer un commentaire