mardi, 26 novembre 2013

Raspberry-pi : Serveur réseau partager(NAS)

NAS.jpgSalut a tous,

Depuis peux de temps, l'on vois fleurir un peu partout des NAS(Network Attached Storage) qui sont quand même un investissement, en recherchant sur le web j'ai trouver des NAS sans disque dur a 60 euro minimum.L'avantage principale du NAS est qu'il est accessible de tout les pc/tablettes/smartphone/téléviseur(nouvelle génération ^^) qui sont connecter a votre routeur/box (par wifi ou cable ethernet) d'y avoir acces mais pour certains de pouvoir afficher le contenu sur une TV grâce a une télécommande spéciale pour le NAS. En gros, les appareils connecter au routeur ont accès aux musiques, films, photos sans devoir brancher ou débrancher quoi que se soit

De notre coté, nous avons notre fidèle destrier! Le raspberry-Pi, dans sont plus simple appareil permet de faire bien plus qu'un NAS vu qu'un système d'exploitation tourne dessus. Si vous avez suivis mes Tutos, le raspberry Pi permet d’être un serveur Web (accessible de l’extérieur facilement grâce au no-ip). De plus le raspberry possède un HDMI, donc il est facile de brancher celui ci a la TV, pour y afficher du contenu et dans les prochains tutos vous comprendrez toute la puissance du Pi dans l'installations des programmes, je ne vous en dis pas plus pour vous laisser un peu pour plu-tard.


Un autre avantages c'est tout simplement le coût de fonctionnement, un raspberry consomme moyenne de 2W, un disque dur de 2TO, consomme 6W(en lecture et écriture et 3W en attente) donc une moyenne de 11W pour le raspberry en pleine utilisation + 2 HDD de 2TO(c'est autre chose que nos vielle lampes 75W ^^).

Un "vrai" NAS  sa varie entre 10 et 30W (avec un HDD de 2 TO) donc on peut gagner pas mal surtout que le Pi peut être modifier et on peu lui ajouter des fonctions.

Bon ... trêve de bavardage, on va passer a la pratique.

Pour réalisé ce tuto, il nous faudra

  • notre fidèle destrier le raspberry (avec raspbian)
  • 2 disque dur (je vous conseil des HDD avec alim vu que le raspberry ne peu pas alimenter des HDD auto alimenter ou alors passer par un hub alimenter)(si vous avez la flemme vous pouvez prendre des clé USB ^^)
  • connecter votre Raspberry a votre routeur, de préférence par câble

1) Partie Disque Dur

Bon on va rentrer dans le vif du sujet, on va commencer par créer les dossiers ou seront monter les Disques dur, Certains d'entre vous préféreront crée dans /mnt, mais personnellement je préfère le /media, donc on crée les dossier 1USB et 2USB (plus facile a cibler le HDD en tapant juste 1 puis tab, utile si vous voulez naviguer plus rapidement en ssh
 
sudo mkdir /media/1USB
sudo mkdir /media/2USB 

La plupart du temps , ce qui est brancher dans usb du haut est en sda1 et dans l'usb du bas en sdb1, mais pour verifier, il suffit de taper ceci :

fdisk -l

 Certains vous dirons que le mieux est de mettre les HDD en EXT3 ou EXT4 d'autre diront  que le mieux est de mettre FAT32, au final tout dépend de l'utilisation, si c'est pour laisser sur le Pi, je conseillerais EXT3, si vous allez le trimbaler vers windows de temps en temps laisser le en FAT32, sur mon tuto j'explique pour du EXT3, donc il se peut qu'il faut que vous modifier la procédure pour d'autre type.

Vu qu'on va faire un NAS, le mieux se serais de pas a avoir monter les HDD a tout les reboot, donc on va l'inscrire dans le fichier /etc/fstab qui gère les montages, donc on édite le fichier

sudo nano /etc/fstab

Et on ajoute ceci a la fin du fichier

/dev/sda1 /media/1USB auto noatime 0 0
/dev/sdb1 /media/2USB auto noatime 0 0

 Mais bon vu que c'est monter au boot, on va pas reboot inutilement pour monter les HDD, on tape simplement ceci

sudo mount -t auto /dev/sda1 /media/1USB
sudo mount -t auto /dev/sdb1 /media/1USB

comme nous ne somme pas des sauvages, si vous devez débrancher le HDD, taper ceci (ou /sdb)

sudo umount /dev/sda1

avant de passer a la partie serveur, l'on crée les dossiers sur le disque dur, , si vous voulez rajouter des dossiers, faite le a votre aise :)

sudo mkdir /media/1USB/SERVEUR
sudo mkdir /media/1USB/SERVEUR/Public
sudo mkdir /media/1USB/SERVEUR/Music
sudo mkdir /media/1USB/SERVEUR/Download
sudo mkdir /media/1USB/SERVEUR/Other
sudo mkdir /media/1USB/wwwcopie
sudo mkdir /media/2USB/wwwsave
sudo chmod 777 -R /media/1USB
sudo chmod 777 -R /media/2USB

 En bref, les noms des dossiers correspondra a l'utilisation de celui ci.

 

2) Partie Serveur

Pour installer samba rien de compliquer si vous avez réussi à copier/coller faire tout ce qui étais écrit plus haut.

sudo apt-get install samba samba-common-bin

 Une fois samba et toutes ces dépendances installer, il faudra modifier le fichier de config de samba pour lui donner les emplacement des fichiers, maintenant on va quand même sauver le fichier de config avant de travailler

sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.old
sudo nano /etc/samba/smb.conf

 Pour ma part voici mon fichier de configuration actuel.

[global]
   workgroup = WORKGROUP
   server string = %h server
   netbios name = Viskorpi
   dns proxy = no
   log file = /var/log/samba/log.%m
   max log size = 1000
   syslog = 0
   panic action = /usr/share/samba/panic-action %d
   security = user
   encrypt passwords = true 
   passdb backend = tdbsam
   obey pam restrictions = yes
   unix password sync = yes
   passwd program = /usr/bin/passwd %u
   passwd chat = *Entersnews*spassword:* %nn *Retypesnews*spassword:* %nn *passwordsupdatedssuccessfully* .
   pam password change = yes
   map to guest = bad user
   usershare allow guests = yes
 
[Public]
   path =/media/1USB/SERVEUR/Public
   read only = no
  locking = no
   guest ok = yes
   force user = pi
   writable = yes
[Music]
   path =/media/1USB/SERVEUR/Music
   read only = yes
   locking = no
   guest ok = yes
   force user = pi
[Movies]
   path =/media/1USB/SERVEUR/Movies
   read only = no
   locking = no
   guest ok = yes
   force user = pi
   writable = yes
[Other]
   path =/media/1USB/SERVEUR/Other
   read only = no
   locking = no
   guest ok = yes
   force user = pi
   writable = yes
[Download]
   path =/media/1USB/SERVEUR/Download
   read only = no
   locking = no
   guest ok = yes
   force user = pi
   writable = yes
[www]
   path =/var/www
   read only = no
   locking = no
   guest ok = yes
   force user = pi
   writable = yes

[www2USB]
   path =/media/2USB/wwwsave
   read only = no
   locking = no
   guest ok = yes
   force user = pi
   writable = yes
[www1USB]
   path =/media/1USB/wwwcopie
   read only = no
   locking = no
   guest ok = yes
   force user = pi
   writable = yes
[Homepi]
   path =/home/pi/
   read only = no
   locking = no
   guest ok = yes
   force user = pi
   writable = yes

Comme vous pouvez le voir, j'ai mis mon dossier /var/www ainsi que /home/pi sur le nas pour pouvoir transférer mes fichier web sans problème et mes documents perso sur le pi, j'ai aussi afficher le www1usb et www2usb qui sont une sauvegarde du /var/www (on créera après les commandes pour les sauvegardes)

Cela aurais été si simple si on s'arrêtait ici, malheureusement samba ne le veux pas ^^, une fois sur l'explorateur windows il demande un mot de pass, donc il faut lui crée un accès

sudo useradd viskor -m -G users
sudo passwd viskor
sudo smbpasswd -a viskor

 Puis enfin, on redémarre le serveur (il est également conseiller de reboot le PC pour voir les modifications)

sudo /etc/init.d/samba restart

 

3) Partie Sauvegarde

Théoriquement sur votre Pi Rsync est déjà installer, si vous avez suivis des tutos pour augmenter les performances du pi et qu'on vous l'as fait desinstaller ou si vous ne savez pas si il est bien installer taper ceci :

sudo apt-get install rsync

 une fois installer, rien de plus simple que de lancer, il suffit de faire : 

crontab -e

 le crontab permet de gerer le "minutes heures jour mois jourdelasemaine" "commande", donc de ce fait a 1h15 tout les jours il va copier le dossier SERVEUR sur 2USB

15 01 * * * rsync -av --delete /media/1USB/SERVEUR /media/2USB

 il va de soit qu'as un moment ou votre disque dur serra gros, il sera dur de le synchroniser tout les jours, a ce moment, il suffira de faire comme ceci pour une synchro toutes les 10 jours

15 01 5 * * rsync -av --delete /media/1USB/SERVEUR /media/2USB
15 01 15 * * rsync -av --delete /media/1USB/SERVEUR /media/2USB
15 01 25 * * rsync -av --delete /media/1USB/SERVEUR /media/2USB

 Fort de mon experience, je realise une sauvegarde de mon fichier /var/www sur les 2 HDD, une toute les 30 minutes se fait pour le copier dans /1USB/wwwcopie et a 19h30 tout les jours, une copie de wwwcopie vers /2USB/wwwsave

30 * * * * rsync -av --delete /var/www /media/1USB/wwwcopie
30 19 * * * rsync -av --delete /media/1USB/wwwcopie /media/2USB/wwwsave
 

maintenant a vous de jouer avec rsync, si vous voulez sauver tout les X mois ou X jours (mm = minutes, Hh = heures, Jj =jour, MM= mois, JS = Jour semaine)

mm Hh Jj MM JS rsync -av --delete /media/1USB/SERVEUR /media/2USB

 

4) Droits en écriture/lecture Fat32

Plusieurs personnes m'ont parler d'un problème de droits en lecture/Ecriture avec du Fat32 apparament il faut monter les dossiers avec les bon droits dans le FStab.

Dans un premier temps on va démonter le sda1 ou sdb1, dans le cas présent on va prendre le sda1

sudo umount /dev/sda1

On va ensuite rechercher le label ou l'UUID pour que lorsque l'on monte le disque celui ci se monte de facon automatique avec les bon droits car si un jour vous monter dans Sda1 un autre disque Dur, cela risque de poser probleme si il n'as pas les bon droits, donc en montant avec le label ou uuid on est sur de monter personnelement chaque disque dur, pour avoir la liste des disques dur monter on fait

sudo blkid

vous devriez avoir une reponce comme ceci :

/dev/sda1: SEC_TYPE="msdos" LABEL="EXT_USB" UUID="5E0D-140B" TYPE="vfat"

Donc maintenant soit vous faite un montage par l'UUID soit par le LABEL (pour ma part j'ai opté pour le label) donc une fois décidé on va modifier le fstab, si vous faite un montage par label, n'oublier pas de supprimer tout les montages du type sda1/sdb1

sudo nano /etc/fstab

apres avoir supprimer les montages du sda1 et sdb1 on va la fin du fstab et on rajoute ceci(a faire pour tout les montages)

UUID=5E0D-140B /media/1USB vfat auto,user,rw,uid=pi,gid=pi 0 0
LABEL=8GBNAS /media/2USB auto noatime 0 0

Le UUID peut être remplacer par : "LABEL=EXT_USB" au cas ou, l'avantage c'est que chaque disque dur se monte a un seul endroit dans le Raspberry pi et dans le cas présent ce qui est monter dans 1USB est le sda1 et ce qui est dans le 2USB le sdb1 mais dans le cas ou j'inverse les câbles sur le pi il se montrons toujours au même endroit, maintenant d'oublier pas de faire un petit reboot pour vérifier si le FStab et les droits fonctionne bien.

 Edit 03/12 : il semblerait que le VNC lance en automatique les HDD sans utiliser le fstab et celui ci charge directement dans le dossier de montage en utilisant le label pour monter et pose problème avec le montage dans un dossier précis, pour ce faire allez désactiver l'auto montage de pcmanfm (gestionnaire de fenêtre de l'interface graphique).

Écrit par Viskor dans Astuces, Raspberry-Pi, Serveur |  Facebook | |