Projet NAS

Documentation technique complète pour monter un NAS sous Ubuntu Server avec ZFS, Samba et Cockpit.

🖥️
Technologies
Ubuntu Server ZFS Samba Cockpit UFW
Difficulté ⭐⭐⭐ Intermédiaire
Étapes 12 étapes
Statut ✓ Complet
Auteur bougui.fr
Préparation du système
1

Mise à jour du système

Avant toute chose, mettez à jour votre système Ubuntu Server pour disposer des derniers paquets et correctifs de sécurité.

bash
sudo apt update && sudo apt upgrade -y
2

Créer le groupe média

On crée un groupe media qui sera utilisé pour gérer les droits d'accès aux partages réseau.

bash
sudo groupadd media
3

Ajouter l'utilisateur au groupe

Ajoutez votre utilisateur (ici toto) au groupe media pour qu'il puisse accéder aux partages.

bash
sudo usermod -aG media toto
ℹ️
Note Remplacez toto par votre nom d'utilisateur réel. La modification prendra effet à la prochaine connexion.
4

Identifier les disques durs

Avant de créer le pool ZFS, identifiez les identifiants stables de vos disques. La commande ci-dessous liste tous les disques avec leurs ID persistants.

bash
ls -l /dev/disk/by-id/
⚠️
Important Notez les IDs de vos disques dans un bloc-notes (ex : ata-WD_Red_1234...). Ne prenez pas les partitions qui finissent par -part1, -part2, etc.
ZFS — Système de fichiers
5

Installer ZFS

ZFS est un système de fichiers avancé offrant intégrité des données, snapshots et gestion RAID logicielle (RAIDZ). On installe les outils nécessaires.

bash
sudo apt install zfsutils-linux -y
6

Créer le pool ZFS TANK

On crée un pool RAIDZ avec vos disques. RAIDZ (équivalent RAID-5) tolère la perte d'un disque. Adaptez les IDs de disques à votre configuration.

bash
# Remplacez les IDs par ceux récupérés à l'étape 4
sudo zpool create -f tank raidz \
  /dev/disk/by-id/ata-Disque1 \
  /dev/disk/by-id/ata-Disque2 \
  /dev/disk/by-id/ata-Disque3
⚠️
Attention Cette opération efface toutes les données présentes sur les disques. Assurez-vous d'avoir sauvegardé vos données au préalable.
7

Vérifier le pool ZFS

Après création, vérifiez que le pool est en bonne santé et que tous les disques sont bien détectés.

bash
sudo zpool status tank
sudo zpool list
Résultat attendu Le statut doit afficher ONLINE pour le pool et chacun des disques. Le pool est automatiquement monté dans /tank.
8

Créer les datasets ZFS

Les datasets ZFS sont des volumes logiques au sein du pool. Voici un exemple avec trois dossiers partagés :

📄
documents

Fichiers personnels privés

🎬
videos

Films et vidéos partagés

📺
series

Séries TV partagées

bash
sudo zfs create tank/documents
sudo zfs create tank/videos
sudo zfs create tank/series
Partage réseau
9

Droits d'accès aux datasets

On attribue les droits d'accès corrects sur les dossiers pour que les membres du groupe media puissent lire et écrire.

bash
# Propriétaire et groupe
sudo chown -R toto:media /tank/videos
sudo chown -R toto:media /tank/series
sudo chown -R toto:toto  /tank/documents

# Permissions rwxrwxr-x
sudo chmod 775 /tank/videos
sudo chmod 775 /tank/series
sudo chmod 700 /tank/documents

# Les nouveaux fichiers hériteront du groupe media
sudo chmod g+s /tank/videos
sudo chmod g+s /tank/series
10

Installer et configurer Samba

Samba permet le partage réseau compatible Windows et macOS. On l'installe, on édite sa configuration, puis on crée un mot de passe dédié.

Installation :

bash
sudo apt install samba -y

Éditer la configuration Samba :

bash
sudo nano /etc/samba/smb.conf
📄
Configuration Ajoutez les sections de partage tout en bas du fichier smb.conf. Exemple minimal pour partager /tank/videos :
smb.conf
[videos]
    path = /tank/videos
    read only = no
    valid users = @media
    force group = @media
    create mask = 0775
    directory mask = 0775
[series]
    path = /tank/videos
    read only = no
    valid users = @media
    force group = @media
    create mask = 0775
    directory mask = 0775
[document]
    path = /tank/documents
    read only = no
    valid users = @Votre utilisateur
    create mask = 0700
    directory mask = 0700

Créer le mot de passe Samba :

bash
sudo smbpasswd -a toto

Redémarrer Samba :

bash
sudo systemctl restart smbd nmbd
sudo systemctl enable smbd nmbd
11

Administration avec Cockpit

Cockpit est une interface web d'administration pour votre serveur. Elle permet de surveiller les ressources, gérer les services et les disques via un navigateur.

bash
sudo apt install cockpit cockpit-storaged -y
sudo systemctl enable --now cockpit.socket
🌐
Accès Cockpit est accessible via votre navigateur à l'adresse https://<IP-du-serveur>:9090. Connectez-vous avec vos identifiants système.
Sécurité
12

Configurer le pare-feu UFW

On sécurise le serveur en n'autorisant que le trafic réseau strictement nécessaire. UFW est l'outil idéal pour Ubuntu.

🔒
Sécurité Les règles suivantes bloquent tout le trafic entrant par défaut, puis n'autorisent que ce qui est nécessaire depuis votre réseau local.
bash
# Politique par défaut
sudo ufw default deny incoming
sudo ufw default allow outgoing

# SSH (accès distant)
sudo ufw allow ssh

# Samba (partage réseau)
sudo ufw allow Samba

# Cockpit (interface web admin)
sudo ufw allow 9090/tcp

Activer le pare-feu :

bash
sudo ufw enable
sudo ufw status verbose
🎉
Félicitations ! Votre NAS est maintenant installé, configuré et sécurisé. Accédez à vos partages depuis Windows via \\<IP>\videos et gérez vos disques via Cockpit sur le port 9090.