Tuto FreeNAS 9.3 : Installer des Plugins, Plex et minidlna

Avançons encore un peu dans l’utilisation de notre NAS et voyons maintenant comment lui donner de l’interactivité multimédia car c’est souvent un point recherché pour l’usage familial. De plus à travers ce tuto nous allons surtout aborder la gestion des plugins et autres extensions, ce qui permettra bien plus de fonctionnalités plus tard…

Plugins et jail dans FreeNAS

Commençons par quelques généralités pour comprendre comment sont gérés les plugins dans FreeNAS : leur installation est basé sur le principe des jails FreeBSD. Une jail c’est quoi ? L’environnement jail (prison en français) est une fonctionnalité avancée des systèmes BSD qui permet d’installer des applications sur votre système en toute sécurité. L’environnement jail est en fait une partie virtualisée du système, ainsi pour un processus installé dedans tout est comme si il était installé directement dans le système sauf que si ce processus devient malveillant il ne pourra pas compromettre le système car il compromettra un système virtuel. En gros la jail est un système virtuel indépendant dans le système.

Si vous voulez toutes les infos imaginables sur les jails lisez donc ceci, c’est le manuel FreeBSD en français et c’est très intéressant.

FreeNAS propose 2 moyens d’ajouter des logiciels externes : la méthode « Plugin » et la méthode manuelle. Dans la méthode plugin c’est extrêmement simple : il suffit d’en choisir un à ajouter et toute l’installation est automatique : une jail est créée pour chaque plugin, celui ci est installé dedans et le tour est joué.

La méthode manuelle vous permet de créer vous même une jail et d’y installer n’importe quel soft porté sur FreeBSD, cela permet d’installer différents logiciel dans la même jail et autorise bien plus de flexibilité. Par contre il faut tout faire en ligne de commande et bien connaître la chose. Nous allons voir ici les 2 méthodes.

 

L’attribution des IP

Préalable indispensable quelque soit la méthode choisie pour installer vos extensions dans FreeNAS : la gestion des adresses IP des jails. Et oui, une jail est un système virtuel qui va se voir doté d’une carte réseau virtuelle mais se comportant sur notre réseau comme une véritable machine. Une jail va donc avoir une adresse IP propre. Il est possible depuis cette version 9.3 de laisser le serveur DHCP gérer l’attribution d’adresse pour les jails ou alors de définir une plage fixe qui sera utilisée par FreeNAS pour les jails. Voyons les deux moyens.

Gestion des IP de jails par DHCP

Méthode facile : dans Jails -> Configuration on va simplement cocher IPv4 DHCP

Configuration des jails

Configuration des jails

Ceci est le plus simple si vous avez un serveur DHCP sur le réseau mais il peut être contraignant d’avoir une jail avec une IP non fixe pour accéder par exemple à l’application installée dedans. Ce problème peut être résolu au niveau du routeur en fixant un bail DHCP en fonction de l’adresse MAC ou alors avec la seconde méthode.

Utilisation de plage fixe pour l’IP des jails

Cette seconde méthode est utilisable sans soucis si votre réseau est en IP fixe. Si jamais vous avez un DHCP sur votre réseau c’est utilisable aussi mais prenez bien garde à définir la plage d’adresse en dehors de la plage attribuable par le DHCP.

Au niveau configuration, c’est aussi dans Jails -> Configuration mais cette fois on clique sur le bouton Advanced Mode :

Configuration IP des jails avancée

Configuration IP des jails avancée

IPv4 Network comprend normalement déjà l’adresse de votre réseau telle que vous l’avez défini ou que votre serveur DHCP l’a présenté à FreeNAS. Il est indispensable que les jails soient sur le même réseau que le NAS, faites donc très attention si vous voulez modifier l’adresse du réseau ici.

Nous allons pour notre part configurer les IPv4 Network Start et End Address pour définir une plage en dehors de celle du DHCP.

Exemple concret de chez moi : réseau classique 192.168.0.0/24 géré par une Freebox. La plage DHCP est définie de 192.168.0.1 à 192.168.0.49 avec quelques IP fixées selon l’adresse MAC : NAS, player, imprimante. Ici j’ai mis les jails de 192.168.0.200 à 192.168.0.220 donc sur le même réseau et en dehors de la plage. En ajoutant des plugins ou des jails, FreeNAS leur donnera la première IP disponible dans notre plage.

Une fois cette étape validée on peut passer à l’installation d’un Plugin ou d’une Jail.

 

Installation d’un plugin : Plex Media Server

L’installation automatique

Pour commencer simplement voyons la méthode d’installation d’un plugin avec Plex Media Server. On ne va pas s’étendre dessus mais Plex offre une plateforme centralisant les médias, une jolie interface avec récupération de métadonnées et permettant de les diffuser sur de nombreux terminaux (tablette, smartphone, PC, TV « intelligente », etc…). Il a également une fonctionnalité de serveur DLNA mais pas paramétrable et mal organisé à mon sens.

Bref, passons aux choses sérieuses : on se rend dans Plugins et s’affiche alors la liste des plugins disponibles :

Liste des plugins

Liste des plugins

Si la liste ne daigne pas s’afficher, c’est probablement que votre NAS n’a pas accès à internet ou n’arrive pas à résoudre le nom de domaine : c’est vérifiable en tapant « ping www.google.fr » dans Shell. En cas d’échec vérifiez la configuration du réseau : Default Gateway et/ou DNS.

Pour installer Plex on clique simplement sur plexmediaserver dans la liste puis sur le bouton Install en bas de l’écran. On patiente… apparaît alors une demande de confirmation que l’on accepte évidemment.

Installation du plugin

Installation du plugin

Puis une fenêtre de contrôle de l’avancement… il faut absolument être patient jusqu’à la fin du processus et ne pas fermer la fenêtre et bricoler ailleurs sous peine d’échec de l’installation.

Installation du plugin terminée

Installation du plugin terminée

Une fois l’installation automatique de la jail et du plugin terminée, ce dernier est visible en 3 endroits :

  • dans l’onglet Installed sous Plugins avec un bouton ON/OFF qui permettra de l’activer ou non.
  • Une entrée dans le menu de gauche sous Plugins permettra de le configurer éventuellement.
  • Et la jail créée dans Jails où l’on peut éditer ses paramètres et surtout y ajouter un point de montage…

Ajouter un point de montage

La jail est un système virtualisé, les plugins qui sont installés dedans n’ont donc évidemment pas d’accès au reste de l’arborescence du système… sauf que ça nous pose un problème : nos données étant sur le pool de stockage, comment faire pour que Plex diffuse un contenu auquel il n’a pas accès ?

C’est là qu’interviennent les points de montage : on va créer une sorte de lien dans la jail permettant de lier un dossier vers un autre présent à l’extérieur de la jail. Les données ne sont physiquement présentes qu’une seule fois mais accessibles depuis 2 endroits différents de l’arborescence. Donc attention : effacer des fichiers depuis le point de montage dans la jail les efface réellement du dossier source !

Dans l’optique de rendre nos données multimédias disponible à la diffusion par Plex, on va donc créer un point de montage de notre dataset Medias vers la jail, c’est à dire que l’on monte /mnt/Stockage/Medias en tant que (par exemple) /medias dans la jail.

Pour cela on utilise le menu de gauche : Jails -> plexmediaserver_1 -> Storage -> Add Storage

Ajout d'un point de montage dans une jail

Ajout d’un point de montage dans une jail

On créé une sorte de pont donc on sélectionne le dossier source : notre dataset contenant les fichiers réels et la cible qui se trouve dans la jail : ici j’ai pris /media qui existe déjà. Si le dossier n’existe pas il sera créé car la dernière case est cochée. On valide avec OK et le point de montage apparaît dans le menu de gauche.

Le (gros) problème des droits

Les droits d’accès, voilà une préoccupation récurrente de l’administrateur. Réfléchissons y ici pour la jail et notre point de montage : On l’a dit et répété : la jail est un système isolé du reste, donc les utilisateurs et groupes créés à l’intérieur de celle-ci sont inconnus à l’extérieur… et vis-versa : les utilisateurs et groupe de l’hôte FreeNAS n’existent pas dans la jail. Or en créant un point de montage on souhaite que des utilisateurs de la jail accèdent à des données extérieures.

Vous voyez le problème arriver là ?

Prenons le cas de Plex. Dans la jail, le logiciel Plex est lancé avec comme utilisateur plex:plex (utilisateur:groupe), or l’utilisateur plex n’existe pas ailleurs que dans la jail. Pour que cet utilisateur accède aux données du dataset Medias que l’on a monté dans la jail il y a deux solutions :

Soit les permissions « Autres » de Medias sont autorisées au moins en lecture-exécution, style 755 ou 775, un truc qui fini en 5 ou plus dans tous les cas. Pour rappel si vous avez suivi ce tuto on a mis pour Medias les droits suivants : nobody:GrpMedias 770. Donc la première solution est de le passer en 775 pour que Plex puisse lire et utiliser les fichiers. Je ne vous cache pas que c’est la solution simple.

Soit seconde solution si jamais on ne souhaite pas déverrouiller des permissions pour tous les autres utilisateurs : on a dit que le dataset Medias était en nobody:GrpMedias 770. Donc dans la jail le dossier /media du point de montage a été créé avec exactement les mêmes droits : nobody:GrpMedias 770. Notre problème est que dans la jail GrpMedias n’existe pas…. encore. Donc on va le créer et mettre l’utilisateur plex dedans. Ça nécessite de passer par la ligne de commande et ça mériterai grandement d’être amélioré dans une future version de FreeNAS. Voyons ça :

On commence par lancer le shell ou se connecter en ssh à la machine si vous l’avez configuré. Menu de gauche, Shell là on liste les jails du système puis on exécute une commande, en l’occurrence un shell (au choix) pour se connecter dedans, concrètement on tape :

jls

jexec <numéro de jail> csh

jls liste les jails avec un numéro que l’on indique à jexec avec la commande à exécuter, ici le shell « csh » et on atterrit dans la jail (visible sur l’invite de commande) :

Connexion dans une jail

Connexion dans une jail

On peut contrôler quels utilisateurs et quels groupes existent sur le système en affichant les fichiers /etc/passwd et /etc/group avec les commandes :

cat /etc/passwd

cat /etc/group

On y voit plex et ses UID et GID 972.

Nous allons alors créer le groupe GrpMedias avec la commande pw en lui donnant le même GID que dans l’hôte FreeNAS, c’est important pour éviter d’éventuels futurs problèmes incompréhensibles. Dans l’hôte le GID de GrpMedias est 1001. On y ajoute dans la foulée l’utilisateur plex, ce qui donne :

pw groupadd GrpMedias -g 1001

pw usermod plex -G GrpMedias

Et voilà le travail :

Ajout Manuel d'un groupe dans la jail

Ajout Manuel d’un groupe dans la jail

 

Activation du plugin

Pour terminer maintenant que les fichiers sont accessibles à Plex on retourne dans Plugins -> onglet Installed et on passe Plex sur ON.

Pour accéder à la page de configuration du plugin on va dans le menu de gauche Plugins -> PlexMediaServer et on clique sur le lien dans la fenêtre :

lien d'accès à Plex

lien d’accès à Plex

 

Installation manuelle de minidlna

Et encore plus corsé pour ceux qui suivent, là je ne vais pas expliciter en détail la totalité des concepts abordés car ce serait long. Renseignez vous sur FreeBSD si certains points sont obscurs : packages, navigation dans l’arborescence en ligne de commande, connexion à la jail vue ci-dessus,… mais toutes les étapes sont là quand même ! 😉

Le principe est de créer une jail FreeBSD, dans laquelle on pourra installer n’importe quel logiciel porté sur FreeBSD, dans notre cas minidlna. C’est parti !

Créer une jail

Avant d’attaquer cette partie assurez vous d’avoir lu et surtout appliqué la partie « L’attribution des IP » plus haut sur cette page.

Ensuite on se rend dans Jails -> Add Jails, dans la fenêtre qui s’ouvre on donne un nom à notre jail, ici j’ai mis « minidlna » car il n’y aura que ça dedans. Et on clique quand même sur Advanced Mode pour aller indiquer simplement l’adresse de notre passerelle dans IPv4 default gateway, ce qui donne accès à Internet à la jail :

Création d'un jail

Création d’un jail

Les autres champs réseau ont été remplis automatiquement en fonction de la configuration définie auparavant, c’est ainsi que vous y retrouvez l’adresse IP suivante dans ma plage que FreeNAS me propose. Bien sûr vous pouvez mettre autre chose si ça vous chante. Un clic sur OK et débute le téléchargement de l’image de la jail, puis son installation. Ça prend un temps certain, ne surtout rien faire d’autre sur l’interface en attendant.

Installation de minidlna

A l’aide du Shell ou en SSH on se connecte dans la jail et on installe minidlna :

jls

jexec <numéro jail minidlna> csh

pkg install minidlna

La mise à jour du catalogue commence, puis probablement on vous indique que pkg (l’utilitaire de gestion des packages) doit être mis à jour :

Mise à jour de pkg

Mise à jour de pkg

Répondez « y » pour valider cette mise à jour préalable. Puis procédez de la même façon pour les fichiers et dépendances de minidlna.

Le téléchargement de minidlna et de tous ses paquets dépendants commence puis minidlna est installé et enfin on voit dans les dernières lignes qu’un utilisateur et un groupe nommés « dlna » ont été créé.

Le point de montage et les droits

Là aussi, attention aux permissions ! Exactement comme ci-dessus pour Plex, on va ajouter un point de montage pour avoir accès aux fichiers médias depuis l’intérieur de la jail.

ATTENTION : Si vous avez pris l’option de garder comme permissions nobody:GrpMedias 770 pour votre dossier de médias : ici pour minidlna et pour une raison que j’ignore pour le moment, l’option de recréer dans la jail le groupe GrpMedias et d’y ajouter « dlna » semble ne pas fonctionner. En tout cas je n’ai pas réussi ! La seule option me semble donc de passer le dataset Medias en 775 (de façon récursive si vous avez déjà des fichiers dedans)

Vous n’avez pas ce souci si votre dataset Medias est déjà accessible au moins en lecture-exécution par « Autres ».

Puis on créé via la GUI le point de montage par Jails -> minidlna -> Storage -> Add Storage. Source : /mnt/Stockage/Medias. Destination : /media. Ne pas cocher Read-Only, certains clients ne semblent pas aimer. Vous pourrez le mettre éventuellement après essais.

Configurer minidlna

Bien, maintenant qu’il est installé dans sa jail, que les fichiers médias lui sont accessibles à l’intérieur et que l’on a réglé le problème des droits, on retourne avec le Shell dans la jail pour configurer le tout.

Cela est aussi possible en SSH depuis un terminal Linux, Mac OS ou Putty depuis Windows et c’est incroyablement plus confortable. Pour activer SSH pour un accès local, il suffit d’activer le service, les paramètres par défaut sont parfait. Et pour l’utilisateur que vous allez utiliser pour la connection il faut sans Account -> Users -> Pierre (par exemple) cocher Allow sudo.

On se reconnecte dans la jail, vous savez faire maintenant. En SSH il faut mettre « sudo jexec » car jexec s’exécute en droit root. Ca donne ça :

Connection via SSH dans une jail

Connection via SSH dans une jail

On édite le fichier de configuration de minidlna avec l’éditeur « ee » :

cd /usr/local/etc

ee minidlna.conf

Avec les flèches on descend ligne 18 pour remplacer media_dir=/opt par :

media_dir=/media

Puis ligne 25 on enlève le # et on met un petit nom sous lequel va se présenter minidlna, mettez ce que vous voulez :

friendly_name=Medias NAS

Puis lignes 28 et 31 on enlève les # :

db_dir=/var/db/minidlna

log_dir=/var/log

Et enfin, c’est très personnel et tout à fait optionnel : tout en bas je préfère indiquer :

root_container=B

Cela affiche sur le client simplement l’arborescence  du dossier /media comme il est. Sinon minidlna propose des dossier Music, Video, Pictures mais je ne les utilisais pas. A vous de voir et tester comme bon vous semblera pour ce  dernier paramètre.

Finalement on appuie sur la touche Echap, s’affiche le menu de l’éditeur et on valide 2 fois par Entrée « leave editor » puis « save changes ». Le fichier de config est édité !

Je sens que vous brûler d’essayer pour voir si ça marche ! Alors on lance un essai :

service minidlna onestart

Si comme moi vous êtes déconfit à la vue d’un message « Shared object « libiconv.so.2 » not found, required by « minidlnad » », ne paniquez pas et relancez un :

pkg install libiconv

le tout en validant l’installation par « y » et cette fois le démarrage de minidlna doit fonctionner.

Vous êtes gratifié d’un magnifique « Starting minidlna. » ? Alors il n’y a plus qu’à aller voir sur votre client favori pour tester ça. Si vous ne voyez aucun fichier, il y a fort à parier qu’il y ait un problème de droits sur votre dossier : voyez plus haut et mettez des droits de lecture et exécution pour « Autres » sur votre dataset Medias.

Rendre le démarrage persistant

Ne partez pas ! On a pas fini car on vient de démarrer minidlna à la main, mais au prochain redémarrage du NAS ou de la jail il ne se redémarrera pas tout seul. Donc on continue :

toujours dans le shell et dans la jail on tape :

echo minidlna_enable= »YES » >> /etc/rc.conf

rc.conf étant le fichier qui gère les services à démarrer à la mise en route du système, la ligne minidlna_enable= »YES » va y être ajoutée.

Et enfin, nous allons juste modifier la commande de lancement de minidlna pour forcer un rescan de la liste des fichiers au redémarrage, ceci se passe dans un fichier situé sous /usr/local/etc/rc.d donc on fait :

cd /usr/local/etc/rc.d

ee minidlna

on descend à la ligne 25 et on ajoute l’option « -R » aux arguments, ce qui va donner ça (n’oubliez pas l’espace entre -R et -P):

command_args= »-R -P $pidfile -u $minidlna_uid -f /usr/local/etc/minidlna.conf -R »

On presse Echap, puis deux fois Entrée pour valider les changements et on quitte la jail et le shell en tapant 2 fois « exit ».

Redémarrage de la jail pour contrôle

Et pour terminer, nous allons tenter de faire un redémarrage de la jail afin de confirmer que tout fonctionne bien :

Dans Jails -> View Jails, on sélectionne la jail à redémarrer et on clique sur le bouton Stop :

Redémarrage de la jail

Redémarrage de la jail

L’arrêt peut prendre un peu de temps, soyez patient. Une fois stoppée le status passe en Stopped, minidlna n’est plus accessible depuis votre client et le bouton Stop devient… Start. On clique dessus, la jail démarre, le dataset Medias est rescanné, ce qui peut prendre un certain temps selon la quantité de fichier et tout est de nouveau disponible !


Vous avez aimé ? N'hésitez pas à partager :
Facebook Twitter Google+ Mail

21 réflexions au sujet de « Tuto FreeNAS 9.3 : Installer des Plugins, Plex et minidlna »

  1. Bonsoir, j’ai un problème concernant l’installation de minidlna.
    Lorsque j’execute la commande « pkg_add -r minidlna » je recois un message d’erreur me disant: « Error: Unable to get ftp://ftp.freebsd.org/pub/FreeBSD/ports/amd64/packages-9-st
    able/Latest/minidlna.tbz: No address record
    pkg_add: unable to fetch ‘ftp://ftp.freebsd.org/pub/FreeBSD/ports/amd64/packages
    -9-stable/Latest/minidlna.tbz’ by URL »

    Je ne sais pas du tout comment faire pour résoudre ce problème…
    Merci d’avance pour vos réponses!

    1. Bonjour,
      Essaie de faire un ping vers une adresse internet quelconque, il y a fort à parier que ta jail n’ai soit pas accès à Internet, soit n’arrive pas à résoudre de noms de domaine. Vérifie la configuration réseau de freenas et de la jail

        1. Probablement pas de passerelle définie ou pas de DNS. Tout ça est dans la conf réseau

  2. Hello

    Super tuto.
    Ca allait bien jusqu’au « service minidlna onestart »
    La commande s’est bien passée, et je voyais mon minidlna depuis mon windows.

    Et après le drame, j’ai voulu rendre le redémarrage persistant et boum Windows ne voit plus mon dlna.

    snif

  3. Bonjour Mickeal.
    Je vient de m’attaquer au minidlna.
    Tout vas bien jusqu’a probleme de droit…
    Je demarre minidlna, il apparait sur ma TV, puis contenu vide.
    Pour faire mes premier test, je met mon dataset  » Medias » en 777. Toujours dossier vide sur la TV.
    Je redemarre donc le Nas en me disant que sa ira mieux apres.
    Sauf que maintenant MiniDLNA n’apparait pas dans jails.

  4. Merci pour ce que tu fais pour la communauté freenas francaise pour un novice comme moi c’es vraiment pas facile !

    tu devrais songer a faire quelques video youtube en expliquant brièvement il y as tellement peu de contenu sur le web francophone !

    Malheureusement le temps coûte cher !!!

  5. Bonjour,
    J’ai installée un serveur Freenas version 9.2 et j’ai donc décidé d’installer minidlna pour pouvoir récupérer ma musique et mes vidéos sur ma freebox Revolution. Grace à ton super tuto toute l’installation s’est super bien déroulée. Manque de chance après avoir tapé la fameuse commande de démarrage (service minidlna onestart), j’ai eu un message d’erreur me disant que le démarrage ne pouvait se faire la librairie « libsqlite3.so.0 not found » et cette librairie est nécessaire pour « minidlnad ».
    Comment puis je faire pour intégrer cette librairie et profiter de mon nas et de minidlna.
    Linusien converti je suis quand même un peu novice dans certains domaines.
    Merci de vos réponses.

    PS: bravo pour ce tuto !!!

  6. Bonjour

    Petit question dans le cas du jail Plex et d’une machine avec deux carte réseau peux t’on affecter une carte pour le jail Plex et une autre avec un VPN par exemple?

    Merci

  7. Salut,

    J’ai un petit probleme, le redemarrage automatique de mon minidlna ne ce fait pas.
    La commande echo minidlna_enable=”YES” >> /etc/rc.conf a bien ete lancé pourtant depuis root@minidlna:/ # (page web freenas sur le shell de la jail)

  8. Salut,

    Je viens de commencer la partie « installation minidlna »,
    J’ouvre le shell du NAS et je me place dans le jail minidlna que j’ai créé juste avant.
    Je saisie ensuite la commande permettant d’installer minidlna « pkg install minidlna ».
    Et il me répond :

    Updating FreeBSD repository catalogue…
    pkg: Repository FreeBSD has a wrong packagesite, need to re-create database

    Comment puis-je résoudre ce problème?

  9. Salut,

    Merci pour le tuto. Petite question, peut-on configurer Plex comme on peut configurer Minidlna ? pour, notamment, changer le nom qui s’affiche sur la tv (plexmediaserveur_1) et virer ces répértoire qui servent à rien. Je vois mes fichiers que dans « by Folder »: j’aimerais virer le reste…

    Merci ^^

  10. Bonjour,
    dans votre excellent tuto, pourriez-vous nous indiquer l’adresse net où ce situe les plug-in (Collection URL) ?
    Merci.

  11. Bonjour,

    J’aimerais savoir quels éléments dois-je utiliser pour réaliser une synchro entre deux serveurs Freenas dans un environnement vmware. Les serveurs contiennent des LUN de stockage présentées aux esxi.

    Merci pour votre aide.

  12. Bonjour Mickaël
    Je ne vais pas être original en disant que tous les tutos sur freenas sont excellent et vraiment très bien fait, d’ailleurs il sont toujours valable sur la version 9.10, car Je l’ai installé à l’aide de ces tutos.

    Cependant j’aimerais faire une sauvegarde sur un disque, je voudrais savoir quel est selon vous le meilleur plugin pour ça et éventuellement un petit tuto pour l’installer directement dans la jail (crée pour minidlna).
    Merci d’avance
    Christian

Laisser un commentaire

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