Utiliser un Raspberry Pi 3b+ pour faire un NAS domestique.

Utiliser un RasberryPi 3b+ comme NAS avec 2 SSD branché en USB, le SSD1 sera la sauvegarde principale, le SSD2 sera la copie du 1 réalisé grâce à une crontab.

Option en fin d’article : surveiller les performances du RasberryPi avec Home Assistant (possibilité d’envoie de message d’alarme en cas de panne).

Disques formatés en EXT4.

Merci à « Mon Linux : Linux en plus simple » pour sa vidéo YouTube : https://www.youtube.com/watch?v=KuvJRRr3MdI

Ainsi qu’a claude.ai

Procédure :

Installer un RPI OS sans desktop en 64bits grâce à Rapberry Pi Imager.

Brancher les SSD sur un hub usb alimenté (en effet, le RPi n’est pas assez puissant pour alimenter 2 SSD).

Accéder au RPi en ssh.

Commande : lsblk pour connaitre les disques branchés sur le rpi.

Étape 1 : trouver l’UUID de chaque SSD

sudo blkid

Repèrer les lignes correspondant aux deux SSD (souvent /dev/sda1 et /dev/sdb1), et note leur UUID=”….”.

Exemple :

rpinas2@rpinas2:\~ $ sudo blkid

/dev/mmcblk0p1: LABEL\_FATBOOT=”bootfs” LABEL=”bootfs” UUID=”8353-AFC3″ BLOCK\_SIZE=”512″ TYPE=”vfat” PARTUUID=”59fbf974-01″

/dev/mmcblk0p2: LABEL=”rootfs” UUID=”742cc985-e7e0-4f2f-a149-e118c8888b6f” BLOCK\_SIZE=”4096″ TYPE=”ext4″ PARTUUID=”59fbf974-02″

/dev/sdb1: UUID=”dfe16997-d673-431f-8535-fca346bc4d55″ BLOCK\_SIZE=”4096″ TYPE=”ext4″ PARTUUID=”b1b50fea-84bb-4d68-8fd8-fe8f8250096c”

/dev/sda1: UUID=”30293d96-e360-468c-a538-6b466b467525″ BLOCK\_SIZE=”4096″ TYPE=”ext4″ PARTUUID=”638c4b55-4922-488b-b4b5-a0b473a15db1″

Étape 2 : créer les points de montage

sudo mkdir -p /mnt/ssd1 /mnt/ssd2

(Renommer ssd1/ssd2 comme vous le souhaitez — par exemple /mnt/Data et /mnt/Backup si vous souhaitez des noms plus parlants pour le partage Samba plus tard.)

Étape 3 : ajouter les lignes dans fstab

nano /etc/fstab

# proc filesystem

proc /proc proc defaults 0 0

# boot partition

PARTUUID=59fbf974-01 /boot/firmware vfat defaults 0 2

# root filesystem

PARTUUID=59fbf974-02 / ext4 defaults,noatime 0 1

# ssd1

UUID=dfe16997-d673-431f-8535-fca346bc4d55 /mnt/ssd1 ext4 defaults,noatime,nofail 0 2

# ssd2

UUID=30293d96-e360-468c-a538-6b466b467525 /mnt/ssd2 ext4 defaults,noatime,nofail 0 2

Explication des options :

defaults : options standard de montage

noatime : n’écrit pas la date de dernier accès à chaque lecture de fichier — moins d’usure sur le SSD, meilleure perf (comme sur ta ligne racine /)

nofail : important — si le disque USB n’est pas détecté au démarrage (débranché, panne), le Pi démarre quand même au lieu de bloquer sur l’attente du montage.

Étape 4 : appliquer sans redémarrer

sudo mount -a

Ça montera les deux disques immédiatement. Vérifie avec df -h que /mnt/ssd1 et /mnt/ssd2 apparaissent bien.

Étape 5 : Installer samba

sudo apt update

sudo apt install samba samba-common-bin

Paramétrage : smb.conf

sudo nano /etc/samba/smb.conf

rpinas2@rpinas2:\~ $ nano /etc/samba/smb.conf

[global]

workgroup = WORKGROUP

map to guest = never

server string = rpinas2

netbios name = rpinas2

security = user

dns proxy = no

client min protocol = SMB2

client max protocol = SMB3

#===================== Share Definitions =======================

[ssd1]

path = /mnt/ssd1

browseable = yes

read only = no

valid users = rpinas2

create mask = 0660

directory mask = 0770

force user = rpinas2

[ssd2]

path = /mnt/ssd2

browseable = yes

read only = no

valid users = rpinas2

create mask = 0660

directory mask = 0770

force user = rpinas2

Étape 6 : Définir un mot de passe Samba pour l’utilisateur

sudo smbpasswd -a nomdutilisateur

Redémarrer samba :

sudo systemctl restart smbd

Étape 7 : Sauvegarde périodique grâce à crontable

nano /home/rpinas2/backup_nas.sh

Coller :

#!/bin/bash

# Script de sauvegarde : /mnt/ssd1 -> /mnt/ssd2

SOURCE=”/mnt/ssd1/”

DEST=”/mnt/ssd2/”

LOGFILE=”/var/log/backup_nas.log”

echo “=== Sauvegarde démarrée : $(date) ===” >> “$LOGFILE”

rsync -a –delete “$SOURCE” “$DEST” >> “$LOGFILE” 2>&1

if [ $? -eq 0 ]; then

echo “Sauvegarde terminée avec succès : $(date)” >> “$LOGFILE”

else

echo “ERREUR pendant la sauvegarde : $(date)” >> “$LOGFILE”

fi

echo “” >> “$LOGFILE”

Le rendre exécutable : chmod +x /home/rpinas2/backup_nas.sh

Lancer manuellement pour vérifier que ça fonctionne sans erreur :

sudo /home/rpinas2/backup_nas.sh

Regarder le résultat : cat /var/log/backup_nas.log

Ajouter une tache cron :

sudo crontab -e (choisir nano si demandé)

Ajouter cette ligne à la fin du fichier : 0 \*/3 \* \* \* /home/rpinas2/backup_nas.sh

Cela lance le script toutes les 3 heures.

Donner les droits en écriture sur les disques. Par défaut ils sont uniquement pour root.

Pour ssd1

sudo chown rpinas2:rpinas2 /mnt/ssd1

sudo chmod 770 /mnt/ssd1

Faire la même chose pour ssd2

sudo chown rpinas2:rpinas2 /mnt/ssd2

sudo chmod 770 /mnt/ssd2

Etape 8 : Accéder au nas depuis l’explorateur de fichier Windows.

Dans la barre de lien de l’explorateur de fichier, taper : \\ip-du-rpi-nas

Donner l’identifiant et le mot de passe choisi à l’étape 6.

Les deux disques s’affichent dans le volets de droite.

Clic droit sur le premier ssd, « connecter un lecteur réseau » lui donner une lettre.

Même opération pour le deuxième ssd.

Optionnel :

Étape 9 : Suivre le fonctionnement du RPinas grâce à Glances avec Home Assistant

Le fait surveiller le Rpinas sur HA, permettra ultérieurement grâce à une automatisation, d’envoyer une alerte si un ssd ou le Rpinas tombent.

Installer pip install :

sudo apt install -y python3-pip

Installer glances :

sudo pip install glances[web] –break-system-packages

Lancer glances :

glances -w

Vérifier fonctionnement en ouvrant `http://ip-du-rpi-nas:61208` sur un navigateur.

Arrêter avec Ctrl+C, on va le transformer en service permanent.

Créer un fichier :

sudo nano /etc/systemd/system/glances.service

Coller :

[Unit]

Description=Glances monitoring

After=network.target

[Service]

ExecStart=/usr/local/bin/glances -w

Restart=always

User=root

[Install]

WantedBy=multi-user.target

Vérifier le chemin de glances avec `which glances` si besoin corriger ExecStart

Activer et démarrer le service :

sudo systemctl daemon-reload

sudo systemctl enable glances

sudo systemctl start glances

Vérifier que ça tourne : sudo systemctl status glances

Ou http://ip-du-rpi-nas:61208

Ainsi, Glances démarre automatiquement à chaque redémarrage du Pi.

Intégration dans Home Assistant (HA)

Dans HA : **Paramètres > Appareils et services > Ajouter une intégration** > cherche **Glances**. Renseigne l’IP du RPi (192.168.1.xxx) et le port 61208. HA détectera automatiquement les capteurs disponibles : espace disque par partition (/mnt/ssd1, /mnt/ssd2), utilisation CPU/RAM, uptime, etc.

Fred S.