Blog ArobaseErreur 404 – Ou pas !

Voici un petit guide sur l’utilisation d’un Raspberry Pi en tant que NAS + serveur DLNA, afin de pouvoir visionner sur votre TV / Platine Blu-ray les vidéos stockées sur vos disques durs, et de pouvoir par la même occasion y accéder via votre (vos) ordinateurs sur le réseau.

Ce guide a été rédigé sur Mac. Les exemples / configurations seront donc adaptés. Il n’est pas compliqué de faire la même chose sous Windows en trouvant l’équivalent des commandes.

Niveau matos :

  • RPI avec Raspbian installé
  • Cable ethernet pour relier le RPI au réseau (en wifi ça servirait pas à grand chose..)
  • 1, 2, 3 ou 4 disques durs.. Dans mon cas j’en utilise deux, dont un auto-alimenté mais je pense qu’il ralenti l’ensemble.

 

I. Préparation du Raspberry

La première chose à faire une fois que Raspbian est installé, et que vous voulez accéder à votre RPI headless, est de créer un fichier « ssh » à la racine de la carte SD.

~ touch ssh

En effet, par défaut, le SSH n’est pas activé par défaut sur les dernières versions de Raspbian. En créant ce fichier, vous dites au système de l’activer pour ce démarrage. Le fichier est d’ailleurs supprimé automatiquement.

Vous pouvez maintenant brancher le RPI, et attendre environ 60/90 secondes qu’il ait terminé de démarrer. La prochaine étape est de savoir quelle adresse IP lui a été attribuée. Pour ce faire, il va falloir scanner les IP du réseau. De mon coté, je le fais assez simplement sur Mac avec arp :

~ arp -a
? (192.168.1.1) at b8:26:6c:5c:6f:46 on en0 ifscope [ethernet]
? (192.168.1.14) at 6c:ca:8:c4:58:c6 on en0 ifscope [ethernet]
? (192.168.1.15) at 6c:ca:8:c4:58:c6 on en0 ifscope [ethernet]
? (192.168.1.28) at 6c:ca:8:c4:58:c6 on en0 ifscope [ethernet]

Je sais que 192.168.1.1 est mon routeur, et les machines 14 et 15 sont mes deux ordinateurs. Il reste donc la 28.

Vous allez ajouter un fichier de configuration pour votre connexion SSH, qui permettra de facilité la connexion au Raspberry (au début ça ne changera pas grand chose, mais dans des articles suivants nous changerons la connexion pour n’autoriser que les connexions avec des clés privées) :

~ nano ~/.ssh/config

Ajoutez le code suivant :

Host pi
  HostName 192.168.1.28
  Port 22
  User pi

Il ne reste plus qu’à enregistrer et à taper ssh pi pour se connecter. Le mot de passe à la première connexion est raspberry.

Ensuite lancez les commandes suivantes :

pi@pimedia:~ $ sudo apt-get update
pi@pimedia:~ $ sudo apt-get upgrade
pi@pimedia:~ $ sudo rasp-config

Une fois dans la configuration, il faut changer le mot de passer pour l’utilisateur pi, changer si vous le souhaitez le hostname, et dans interfacing, activer le ssh. N’hésitez pas à aller voir les autres options.

Voila, votre RPI est prêt à être utilisé.

 

II. Installation des disques

Cette partie devrait être rapide, c’est loin d’être la plus compliqué.. Nous allons utiliser les disques en NTFS, ce qui sera plus simple pour les partages entre les différents postes et pour le DLNA.

Vous allez installer le package ntfs-3g, charger le nom des devices, et ensuite les formater (sauf s’ils sont déjà formatés en NTFS avec du contenu dessus, mais je pars du principe qu’ils sont vierges).

pi@pimedia:~ $ sudo apt-get install ntfs-3g
pi@pimedia:~ $ sudo fdisk -l
Device Boot Start End Sectors Size Id Type
/dev/sda5 16128 976768064 976751937 465.8G 7 HPFS/NTFS/exFAT
/dev/sdb1 63 625121279 625121217 298.1G  HPFS/NTFS/exFAT
....

Nous  voyons donc qu’il y a un disque sur /dev/sda5 et un autre sur /dev/sdb1. Par sécurité nous allons essayer de les démonter et ensuite les formater.

pi@pimedia:~ $ sudo umount /dev/sda5
pi@pimedia:~ $ sudo umount /dev/sdb1
pi@pimedia:~ $ sudo mkntfs /dev/sda5
pi@pimedia:~ $ sudo mkntfs /dev/sdb1

Créons maintenant les points de montage. Ces derniers sont en fait des dossier qui vont pointer vers le contenu des disques durs. Nous allons les monter à la main, et modifier notre configuration pour qu’ils soient automatiquement montés lors du démarrage du RPI.

pi@pimedia:~ $ sudo mkdir -p /media/hdd1
pi@pimedia:~ $ sudo mkdir -p /media/hdd2
pi@pimedia:~ $ sudo mount -t auto /dev/sda5 /media/hdd1
pi@pimedia:~ $ sudo mount -t auto /dev/sdb1 /media/hdd2

Les disques sont maintenant montés. Nous allons rendre ceci permanent en éditant le fichier /etc/fstab :

pi@pimedia:~ $ sudo nano /etc/fstab

# Ajoutez les lignes suivantes :
/dev/sda5 /media/hdd1 auto noatime 0 0
/dev/sdb1 /media/hdd2 auto noatime 0 0

Et voila maintenant lorsque la machine redémarrera les disques seront automatiquement montés dans les dossiers que nous avons définis précédemment.

 

III. Partages SAMBA

C’est le moment de passer aux choses sérieuses. On va créer des dossiers sur les disques, qui seront partagés sur le réseau.

Pour l’exemple on va faire 4 dossiers :

  • Un dossier Share qui sera public, et qui servira à transférer des fichiers entre les ordinateurs.
  • Un dossier Films qui sera public aussi, mais dans lequel on ne pourra pas écrire directement (je sais que ce n’est pas trop logique, mais c’est pour l’exemple).
  • Un dossier Photos qui ne sera accessible que aux utilisateurs connectés, et appartement à un groupe particulier.
  • Un dossier Backup qui ne sera accessible qu’à un utilisateur en particulier.

Nous allons répartir les dossiers de la sorte :

  • Share + Films : /media/hdd1
  • Photos + Backup : /media/hdd2

Créons donc les dossiers en suivant ce schéma :

pi@pimedia:~ $ mkdir -p /media/hdd1/Share
pi@pimedia:~ $ mkdir -p /media/hdd1/Films
pi@pimedia:~ $ mkdir -p /media/hdd2/Photos
pi@pimedia:~ $ mkdir -p /media/hdd2/Backup

Il faut ensuite installer Samba :

pi@pimedia:~ $ sudo apt-get install samba samba-common-dir

Et le configurer :

pi@pimedia:~ $ mv /etc/samba/smb.conf /etc/samba/smb.conf.bak
pi@pimedia:~ $ sudo nano /etc/samba.smb.conf

Tout d’abord la partie globale de la configuration :

[global]
  # Groupe de travail. A ne pas changer sauf s'il est différent 
  # sur vos machines.
  workgroup = WORKGROUP

  # Message du serveur qui apparait sur les fenêtres de connexion
  server string = %h server

  # Nom Netbios
  netbios name = PIMEDIA

  # Fichier de log
  log file = /var/log/samba/log.%m
 
  # Taille max du fichier de log
  max log size = 1000

  # Ne pas écrire dans le syslog
  syslog = 0

  # Script a lancer si un problème de configuration existe
  panic action = /usr/share/samba/panic-action %d

  # La sécurité par défaut pour accéder aux partages.
  # User par défaut (demande une connexion)
  security = user

  # Encryption des mots de passe
  encrypt passwords = true

  # Database backend pour enregistrer les mots de passe
  passdb backend = tdbsam

  # Samba doit obéir aux restrictions de connexion PAM
  obey pam restrictions = yes

  # Synchronisation avec les mots de passe unix
  unix password sync = yes

  # Programme pour changer le mot de passe
  passwd program = /usr/bin/passwd %u

  # Texte à afficher pour changer le mot de passe
  passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
 
  # Change le mot de passe PAM
  pam password change = yes

  # Utilisateurs avec un mauvais mot de passe sont rejetés.
  # Sauf si le nom d'utilisateur n'existe pas ils seront en guest
  map to guest = bad user
 
  # Autorise les guest sur les partages que l'on définit.
  # Nous allons contrôler les accès directement dans les partages.
  usershare allow guests = yes

Vous pouvez déjà tester la configuration en lançant la commande testparm. Mais avant nous allons configurer les partages que nous souhaitons. Cette partie est plus simple, et il ne sera pas difficile pour vous d’en ajouter par la suite selon vos besoins.

[Share]
  path =/media/hdd1/Share
  read only = no
  locking = no
  guest ok = yes
  force user = pi

[Films]
  path =/media/hdd1/Films
  read only = yes
  guest ok = yes
  force user = pi

[Photos]
  path = /media/hdd2/Photos
  writable = yes
  valid users = @Photos
  create mode = 0600
  directory mask = 0700

[Backup]
  path = /media/hdd2/Backup
  writable = yes
  valid users = Jerome
  create mode = 0600
  directory mask = 0700

La configuration ici est simple. Nous indiquons le nom du partage en premier lieu. Ensuite nous mettons le chemin vers le dossier qui contient le partage. read only = yes signifie que nous ne pouvons pas écrire dans le dossier (c’est l’équivalent de writable = no).

Ensuite locking = no est important car grâce à ce paramètre, si un fichier est en cours d’écriture sur un poste Windows et que ce dernier plante (on se demande bien pourquoi …), le fichier ne sera pas bloqué et sera quand même accessible sur les autres postes, pour le supprimer par exemple.

Guest ok = yes permet aux invités de se connecter, en utilisant par défaut l’utilisateur pi du système (grâce au paramètre force user = pi).

Avant de redémarrer le serveur, il va falloir créer les groupes et utilisateurs, sinon ça ne fonctionnera pas. On a donc décidé de créer un groupe Photos qui pourra lire / écrire dans le dossier Photos, ainsi qu’un utilisateur Jerome qui aura accès au dossier Backup.

pi@pimedia:~ $ sudo groupadd Photos
pi@pimedia:~ $ sudo useradd Jerome -m -G Photos
pi@pimedia:~ $ sudo useradd Robert -m -G Photos
pi@pimedia:~ $ sudo passwd Jerome
pi@pimedia:~ $ sudo passwd Robert
pi@pimedia:~ $ sudo smbpasswd -a Jerome
pi@pimedia:~ $ sudo smbpasswd -a Robert

Et voila il ne reste plus qu’à redémarrer Samba :

pi@pimedia:~ $ sudo /etc/init.d/samba restart

Maintenant allez sur votre machine, dans les dossiers partagés. Votre serveur devrait apparaitre avec les dossiers. Connectez vous dessus avec le nom d’utilisateur / mot de passe que vous venez de créer, et voila, vous pouvez faire ce que vous avez à faire dans les dossiers partagés.

IV. Serveur DLNA

Pour terminer, nous allons installer MiniDLNA qui va permettre d’accéder aux films sur votre TV (ou platine) connectée. Je vous conseil par contre de tout brancher en ethernet pour des raisons de performances (ok je n’ai pas testé en Wifi mais bon ..).

pi@pimedia:~ $ sudo apt-get install minidlna

Une des premières choses à faire une fois l’installation terminée est de changer l’utilisateur et le groupe qui lance le serveur. Pour faire ceci, il faut aller éditer le fichier /etc/default/minidlna :

pi@pimedia:~ $ sudo nano /etc/default/minidlna

# Décommentez les lignes suivantes :
USER="minidlna"
GROUP="minidlna"

Passons ensuite à la configuration de MiniDLNA. On va éditer le fichier /etc/minidlna.conf :

# Spécifier l'utilisateur qui lance le démon
user=minidlna

# Dossier contenant les fichiers médias
# Vous pouvez précéder le chemin par A / P / V (audio, pictures, videos)
# pour avoir un classement automatique de vos fichiers dans des
# dossiers bien spécifiques
media_dir=/media/dlna

# Dossier contenant la DB et les couvertures d'albums
db_dir=/var/cache/minidlna

# Chemin vers les logs
log_dir=/var/log

# Interface réseau à utiliser. Ethernet = eth0 / Wifi = wlan0
network_interface=eth0

# Le port à utiliser pour être visible
port=49200

# Le nom qui s'affichera sur votre TV / Platine
friendly_name=PiMedia

# Numero de série que le serveur envoi aux clients (à changer)
serial=681019810597110

# Découvre automatiquement les nouveaux fichiers
inotify=yes

# Noms de fichiers à utiliser pour les couvertures
album_art_names=Cover.jpg/cover.jpg/AlbumArtSmall.jpg/albumartsmall.jpg
album_art_names=AlbumArt.jpg/albumart.jpg/Album.jpg/album.jpg
album_art_names=Folder.jpg/folder.jpg/Thumb.jpg/thumb.jpg

# On ne veut pas de downscale sur les gros fichiers
strict_dlna=no

# Durée en secondes pour envoyer une notif aux clients
notify_interval=900

Vous pourrez remarquer dans la configuration, que le dossier contenant les fichiers médias n’est pas /media/hdd1/Films. C’est une petite astuce pour ne pas avoir à configurer plusieurs dossiers qui seront classés automatiquement dans des dossiers VidéosMusiques, … On configure un seul dossier qui contiendra des symlinks vers vos autres dossiers médias. C’est peut être pas très clair, voici donc un exemple :

pi@pimedia:~ $ sudo mkdir -p /media/dlna
pi@pimedia:~ $ sudo ln -s /media/hdd1/Films /media/dlna/Films

Et à chaque nouveau dossier contenant des films vous faites un nouveau lien dans ce dossier. Vous n’aurez plus qu’à aller dans « Folders » sur votre TV pour avoir vos symlinks. Je vous invite à tester pour vraiment vous rendre compte de ce que ça fait 😉

Dernière chose à faire, si vous allez regarder le log de miniDLNA il y a des chances que vous ayez la ligne suivante :

[2017/05/06 11:21:42] inotify.c:198: warn: WARNING: Inotify max_user_watches [8192] is low or close to the number of used watches [4] and I do not have permission to increase this limit.  Please do so manually by writing a higher value into /proc/sys/fs/inotify/max_user_watches.

C’est le nombre de dossiers et fichiers dont il peut vérifier les changements simultanément, et pour lui, ce nombre est trop petit. Cela fonctionnera probablement parfaitement, mais nous pouvons arrêter cet avertissement facilement.

pi@pimedia:~ $ sudo nano /etc/sysctl.conf

Et ajoutez à la fin du fichier la ligne suivante :

fs.inotify.max_user_watches = 65536

C’est la valeur la plus basse pour ne pas avoir de message d’erreur dans le log. Et pour finir on dit au système de démarrer MiniDLNA au démarrage :

pi@pimedia:~ $ sudo update-rc.d minidlna defaults

C’est terminé, vous pouvez allumer votre écran, votre platine, ou autre objet connecté, et vous devriez voir apparaitre dans vos menus, un nouveau « PiMedia ». Si vous naviguez dedans, vos dossiers devraient apparaitre, et vous pourrez profiter de vos fichiers !

Il est possible que le petit RPI prenne un peu de temps à tout indexer. Mais c’est normal, patience.

C’est terminé ! J’espère que ce petit tutorial vous a été utile. N’hésitez pas si vous avez des questions. D’autres articles sur le RPI devraient arriver bientôt !

Cette entrée a été posté dans Divers, Linux, News, Raspberry, Réseau et taggé , , , , . Enregistrer le permalien.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Recherche par catégorie