Un serveur NAS sur un Raspberry Pi : partager un disque ou une clé USB sur le réseau

Ce didacticiel montre comment créer à l'aide de samba un serveur NAS (Network Attached Storage = serveur de stockage réseau) sur un Raspberry Pi pour y enregistrer des données en les rendant disponibles sur le réseau local. Ce NAS peut être installé sur :

un disqueune clé USBou un volume RAID construit selon la page Installer et gérer un volume RAID 1 logicielCe stockage ne contiendra pas le système et sera juste destiné à recevoir des données.

Faites une sauvegarde : si le disque dur connecté au Raspberry Pi tombe en panne, les fichiers deviendront inaccessibles.

Pré-requis

un Raspberry Pi avec ses accessoires (alimentation, boîtier,carte µSD, Raspbian installé et configuré)connecté au réseau local (câble Ethernet ou wi-fi)un disque, une clé USB ou un volume RAID. Nous prendrons l'exemple de deux clés de 64 G en RAID 1un Hub USB 3.0 alimenté.	Dans ce didacticiel, nous supposerons un volume RAID monté en /media/raid0

Première étape

SAMBA est un système de partage de fichiers Windows qui fonctionne sous Linux.

Mettez à jour Raspbian et installez samba,exfat-fuse,exfat-utils,dosfstools,ntfsprogs :

pi@framboise:~ $ sudo apt update
pi@framboise:~ $ sudo apt upgrade
pi@framboise4:~ $ sudo apt install samba exfat-fuse exfat-utils dosfstools ntfsprogs

Si des questions vous sont posées, sélectionnez la réponse par défaut.

Autres étapes

Création des utilisateurs samba

Ajoutez l'utilisateur samba pi et créez son mot de passe pour samba :

pi@framboise:~ $ sudo smbpasswd -a pi
New SMB password:
Retype new SMB password:

Ajoutez d'autres utilisateurs samba si vous voulez

Montage du disque

Créez un répertoire pour le montage et montez le disque (nommez le répertoire comme vous voulez, raid0 est un exemple) :

pi@framboise:~ $ sudo mkdir -p /media/raid0/
pi@framboise:~ $ sudo mount /dev/md0 /media/raid0
pi@framboise:~ $ lsblk -f /dev/md0
NAME FSTYPE LABEL UUID FSAVAIL FSUSE% MOUNTPOINT
md0 ext4 fe1b5cfe-7749-4834-904f-38c1032be9fe 54,4G 0% /media/raid0

Montage automatique au démarrage : éditez avec les droits d'administration le fichier /etc/fstab pour y ajouter la ligne (UUID lu sur le lsblk ci-dessus) :

UUID=fe1b5cfe-7749-4834-904f-38c1032be9fe /media/raid0 auto noatime 0 0

Créez les répertoires pour le NAS :

pi@framboise:~ $ sudo mkdir -p /media/raid0/nas/{pi-public,pi-ro,pi-perso}
pi@framboise:~ $ tree /media/raid0/nas/
/media/raid0/nas/
├── pi-perso
├── pi-public
└── pi-ro

pi-public : exemple de répertoire accessible en lecture/écriture à touspi-ro : exemple de répertoire accessible en lecture seulepi-perso : exemple de répertoire privé, réservé à un utilisateur

Mise en place des partages samba

Sauvegardez le fichier de configuration SAMBA :

pi@framboise:~ $ sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.dist

éditez avec les droits d'administration le fichier /etc/samba/smb.conf et ajoutez à la fin du fichier les lignes de chaque partage selon les modèles suivants.Section [global] :Pour demander une authentification à la connexion à votre NAS, au-dessous de la ligne “####### Authentication #######”, ajoutez :

...
####### Authentication #######
security = user

Vérifiez ces réglages, corrigez-les sinon :

#Configuration générale
[global]
# groupe de travail
workgroup = WORKGROUP
# identification de la machine (%h = hostname)
server string = serveur %h
# nom du NAS sur le réseau (par défaut, le hostname)
netbios name = MONNAS
# ne pas utiliser nslookups pour la résolution des noms NetBIOS.
dns proxy = no
# un fichier journal par machine
log file = /var/log/samba/log.%m
# taille maximum des fichiers journaux en Ko
max log size = 1000
syslog = 0
panic action = /usr/share/samba/panic-action %d
# Authentication
# gestion de la sécurité par utilisateur
security = user
# Active le cryptage du mot de passe
encrypt passwords = true
passdb backend = tdbsam
obey pam restrictions = yes
# autorise une synchronisation des mots de passe SMB avec ceux de la machine Unix
unix password sync = yes
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
pam password change = yes
map to guest = bad user
usershare allow guests = yes

partage public :

...
[pi-public]
comment = Partage public
path = /media/raid0/nas/pi-public
read only = no
locking = no
guest ok = yes
force user = pi
create mask = 0777
directory mask = 0777

accès réservé à l’utilisateur toto :

...
[pi-perso]
comment = Stockage privé de toto
path = /media/raid0/nas/pi-perso
guest ok = no
username = toto
only user = yes
browseable = no
read only = no
writable = yes
create mode = 0600
directory mask = 0700

lecture seule :

...
[pi-ro]
comment = Lecture seule
path = /media/raid0/nas/pi-ro
read only = yes
locking = no
guest ok = yes
force user = pi

Vérifiez que vos modifications fonctionnent :

pi@framboise:~ $ testparm
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
WARNING: The "syslog" option is deprecated
Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
WARNING: The "syslog" option is deprecated
Processing section "[homes]"
Processing section "[printers]"
Processing section "[print$]"
Processing section "[Public]"
Processing section "[Films]"
Processing section "[Perso]"
Unknown parameter encountered: "username"
Ignoring unknown parameter "username"
Unknown parameter encountered: "only user"
Ignoring unknown parameter "only user"
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions

S'il s'affiche “Loaded services file OK.”, c'est bon.Redémarrez le service SAMBA :

pi@framboise:~ $ sudo systemctl restart smbd.service

Connectez-vous à votre NAS

Conclusion

Problèmes connus

Voir aussi

(fr) https://raspberry-pi.fr/raspberry-pi-nas-samba/(fr) https://www.inpact-hardware.com/article/1013/transformez-votre-raspberry-pi-4-en-nas(en) Build a Raspberry Pi RAID NAS Server – [UPDATED 2020](en) Build a Raspberry Pi NAS(en) Create a RAID volume on Raspberry Pi(en) https://elinux.org/R-Pi_NAS

Basé sur << Build a Raspberry Pi RAID NAS Server – [UPDATED 2020] >> par Richie.