====== minidlna ======
* Objet : serveur multimedia minidlna
* Niveau requis : {{tag>débutant avisé}}
* Débutant, à savoir : [[:doc:systeme:commandes:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !]] :-)
* Commentaires : //Pour partager votre contenu multimédia entre votre PC et votre console de jeux, votre platine Blu-Ray, votre téléphone portable ou votre télévision//
* Suivi :{{tag>à-placer}}
* Création par [[user>Slyfox]] le 31/10/2015
* Testé par [[user>Slyfox]] le 30/10/2015 sur Debian Stable version jessie
* Commentaires sur le forum : [[https://debian-facile.org/viewtopic.php?pid=144558#p144558|c'est ici]] ((N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !))
===== Introduction =====
L’accès aux contenus multimédias sur un réseau local est relativement simple lorsque le client est compatible avec le protocole Samba, mais depuis l’arrivée des smartphones, tablettes, et autres TV connectées, il serait dommage de se priver d’un autre protocole : l’**UPNP**
**minidlna** est un logiciel serveur UPNP vraiment simple d'utilisation entièrement compatible avec les clients DLNA / UPnP. \\
Le démon **minidlna** sert des fichiers multimédias (musiques, photos et vidéos) à des clients sur un réseau.
===== Installation du paquet =====
apt-get update
apt-get install minidlna
===== Configuration simplifiée et graphique =====
Pour une configuration simplifiée, ouvrons un terminal **en mode administrateur** ([[https://debian-facile.org/projets:ebook-facile:lescahiersdudebutant?s[]=administrateur#passer-en-mode-administrateur|root]]) et entrons les lignes de commandes ci-dessous:
apt-get update
apt-get -y install minidlna yad sysvinit-utils
wget https://debian-facile.org/_export/code/doc:reseau:minidlna?codeblock=29
chmod +x doc:reseau:minidlna?codeblock=29
./doc:reseau:minidlna?codeblock=29
rm doc:reseau:minidlna?codeblock=29
exit
===== Configuration avancée =====
Voici le fichier de configuration ''/etc/minidlna.conf'' par défaut:
# port for HTTP (descriptions, SOAP, media transfer) traffic
port=8200
# network interfaces to serve, comma delimited
#network_interface=eth0
# specify the user account name or uid to run as
#user=jmaggard
# set this to the directory you want scanned.
# * if you want multiple directories, you can have multiple media_dir= lines
# * if you want to restrict a media_dir to specific content types, you
# can prepend the types, followed by a comma, to the directory:
# + "A" for audio (eg. media_dir=A,/home/jmaggard/Music)
# + "V" for video (eg. media_dir=V,/home/jmaggard/Videos)
# + "P" for images (eg. media_dir=P,/home/jmaggard/Pictures)
# + "PV" for pictures and video (eg. media_dir=PV,/home/jmaggard/digital_camera)
media_dir=/opt
# set this to merge all media_dir base contents into the root container
# note: the default is no
#merge_media_dirs=no
# set this if you want to customize the name that shows up on your clients
#friendly_name=My DLNA Server
# set this if you would like to specify the directory where you want MiniDLNA to store its database and album art cache
#db_dir=/var/cache/minidlna
# set this if you would like to specify the directory where you want MiniDLNA to store its log file
#log_dir=/var/log
# set this to change the verbosity of the information that is logged
# each section can use a different level: off, fatal, error, warn, info, or debug
#log_level=general,artwork,database,inotify,scanner,metadata,http,ssdp,tivo=warn
# this should be a list of file names to check for when searching for album art
# note: names should be delimited with a forward slash ("/")
album_art_names=Cover.jpg/cover.jpg/AlbumArtSmall.jpg/albumartsmall.jpg/AlbumArt.jpg/albumart.jpg/Album.jpg/album.jpg/Folder.jpg/folder.jpg/Thumb.jpg/thumb.jpg
# set this to no to disable inotify monitoring to automatically discover new files
# note: the default is yes
inotify=yes
# set this to yes to enable support for streaming .jpg and .mp3 files to a TiVo supporting HMO
enable_tivo=no
# set this to strictly adhere to DLNA standards.
# * This will allow server-side downscaling of very large JPEG images,
# which may hurt JPEG serving performance on (at least) Sony DLNA products.
strict_dlna=no
# default presentation url is http address on port 80
#presentation_url=http://www.mylan/index.php
# notify interval in seconds. default is 895 seconds.
notify_interval=900
# serial and model number the daemon will report to clients
# in its XML description
serial=12345678
model_number=1
# specify the path to the MiniSSDPd socket
#minissdpdsocket=/var/run/minissdpd.sock
# use different container as root of the tree
# possible values:
# + "." - use standard container (this is the default)
# + "B" - "Browse Directory"
# + "M" - "Music"
# + "V" - "Video"
# + "P" - "Pictures"
# + Or, you can specify the ObjectID of your desired root container (eg. 1$F for Music/Playlists)
# if you specify "B" and client device is audio-only then "Music/Folders" will be used as root
#root_container=.
# always force SortCriteria to this value, regardless of the SortCriteria passed by the client
#force_sort_criteria=+upnp:class,+upnp:originalTrackNumber,+dc:title
# maximum number of simultaneous connections
# note: many clients open several simultaneous connections while streaming
#max_connections=50
Pour restaurer le fichier de configuration par défaut:\\
\\
wget https://debian-facile.org/_export/code/doc:reseau:minidlna?codeblock=2
mv "doc:reseau:minidlna?codeblock=2" "/etc/minidlna.conf"
Maintenant configurons le serveur pour qu’il partage efficacement nos fichiers en modifiant le fichier ''minidlna.conf'' avec [[:doc:editeurs:nano:]]:
nano /etc/minidlna.conf
//Remarque: si nous sommes en mode graphique, nous pouvons remplacer nano par un autre éditeur de texte comme gedit, geany, pluma...//
Le fichier, bien qu’en anglais, est relativement simple à comprendre.
De nombreuses lignes d’options sont commentées, c’est à dire qu’il y a un #(([[doc:programmation:commenter|Commenter - le dièse]])) devant afin que le serveur ne prenne pas ces options en compte. \\
\\
Nous avons donc le choix :
- soit d'enlever ce # devant la ligne afin que l’option soit prise en compte,
- soit d'ajouter une ligne équivalente sans ce symbole, cela nous permet de garder à vue la configuration initiale.
==== Port ====
La valeur par défaut est:
port=8200
D'autres tuto sur le net propose le port 49200. FIXME
port=49200
==== Partage des dossiers ====
Une autre **option importante à configurer**, c'est de mettre en place les partages. \\
**minidlna** permet de trier nos fichiers par type de média, il suffit de lui préciser si ce sont des vidéos, des images, ou des fichiers audios. \\
Chacun de ces types est désigné par une lettre :
* V pour les vidéos
* P pour les images
* A pour les fichiers audios.
Par exemple, pour partager les fichiers vidéos situés dans un répertoire ''/home/utilisateur/film'', voici la ligne à entrer :
media_dir=V,/home/utilisateur/film
Notez que le type de média n’a pas besoin d’être précisé si tous nos médias sont situés dans le répertoire /home/utilisateur, la ligne media_dir=/home/utilisateur suffira.
Pour nous simplifier la navigation plusieurs partages peuvent être ajoutés.\\
Nous pouvons par exemple choisir de séparer nos vidéos par type en mettant d’un coté les films et d’un autre les vidéos de famille.
Par exemple : \\
media_dir=/home/utilisateur/film \\
media_dir=/home/utilisateur/videos_famille
==== Nom interface ====
Modifions le nom qui apparaîtra sur l’interface des clients ou celui qui apparaîtra sur l'interface du client DLNA (télévisions, smartphones, tablettes...)\\
De base, le nom n’est pas très explicite, et il sera sûrement plus agréable de lire à la place par exemple : « MiniDLNA Server ». \\
:-)
Dans ce cas l’option à modifier est « friendly_name= » \\
Ce qui nous donnera pour cet exemple :
friendly_name=MiniDLNA Server
==== Répertoire du cache ====
Activons (enlever le #) ou ajoutons cette ligne :
db_dir=/var/cache/minidlna
==== Recherche nouveaux fichiers ====
Pour ne pas être obligé de lancer un scan des fichiers à chaque fois que nous en ajoutons, vérifions que la ligne « inotify= » est bien réglée sur « yes » :
inotify=yes
==== notify interval ====
Si le serveur n'apparaît pas sur le client, nous pouvons baisser le notify interval par exemple à 60, c'est a dire qu'il va attendre 60 secondes pour lancer une recherche de media ajouté.
notify_interval=60
==== Enregistrement des configurations ====
Une fois toutes les modifications faites enregistrons-les via les touches F3 ou C-o puis validons par Entrée. \\
Nous pouvons enfin quitter [[:doc:editeurs:nano:]] via les touches F2 ou C-x
==== Lancement de minidlna et scan ====
Une fois que nous avons terminé de configurer le programme, lançons minidlna ainsi :
service minidlna start
Puis, il faut demander à minidlna de scanner une première fois nos médias afin de les rendre disponibles :
service minidlna force-reload
C'est tout ! :-)
Maintenant nos médias qui se trouvent sur notre OS préféré seront détectés par les autres périphériques dotés du protocole DLNA / UPnP.
==== bash: service : commande introuvable ====
Si nous avons ce message, les commandes ci-dessous doivent nous permettre de résoudre ce problème.
apt-get update
apt-get install sysvinit-utils
PATH=$PATH:/usr/sbin
service minidlna start
service minidlna force-reload
==== Augmenter le nombre d'entrées ====
Il arrive parfois (lorsqu'il y a un grand nombre de fichiers) que la base de données ne veuille plus se mettre à jour. \\
Il faut alors demander au noyau d'augmenter le nombre d'entrées qu'inotify peut créer, avec la commande suivante :
sysctl fs.inotify.max_user_watches=100000
Si nous voulons que la modification soit permanente, il faut plutôt choisir de modifier le fichier : ''/etc/sysctl.conf'', en y ajoutant //fs.inotify.max_user_watches = 100000// à la fin :
nano /etc/sysctl.conf
fs.inotify.max_user_watches = 100000
Une fois toutes les modifications faites enregistrons-les via les touches F3 ou C-o puis validons par Entrée. \\
Nous pouvons enfin quitter [[:doc:editeurs:nano:]] via les touches F2 ou C-x
===== Configuration de l'utilisateur et groupe =====
Par défaut, miniDLNA est exécuté automatiquement au démarrage de l'ordinateur comme un service, le groupe par défaut utilisés est : minidlna.\\
Ce qui peut parfois posé des problèmes et si tel est le cas modifions les lignes du fichier /etc/default/minidlna avec les droits d'administration:
nano /etc/default/minidlna
Ajoutons la ligne :
GROUP="xxxxx"
xxxxx est à remplacer par le nom de l'utilisateur de notre machine ;-)
Une fois toutes les modifications faites enregistrons-les via les touches F3 ou C-o puis validons par Entrée. \\
Nous pouvons enfin quitter [[:doc:editeurs:nano:]] via les touches F2 ou C-x
===== Liste de commandes utiles ====
__**Lancer minidlna**__
service minidlna start
__**Reancer minidlna**__
service minidlna restart
__**Arrêter minidlna**__
service minidlna stop
__**Connaître le status**__
service minidlna status
__**Scanner / reconstruire la base de données**__
service minidlna force-reload
Pour plus d'info sur minidlna consultez le manuel : ;-)
man minidlna
===== Disque dur externe ====
Si nous avons des media sur un disque dur externe et que nous voulons les utiliser via minidlna voici une solution.
Créons un point de montage de notre disque dur externe, par exemple: /mnt/minidlna_HDD.
mkdir /mnt/minidlna_HDD
Ensuite nous allons devoir modifier notre fstab, selon ce lien: [[https://debian-facile.org/doc:systeme:fstab?s[]=fstab|fstab]], attention de bien utiliser "/mnt/minidlna_HDD" comme point de montage. ;-)
Ouvrons [[:doc:editeurs:nano:]]:
nano /etc/minidlna.conf
Dans le fichier de configuration de minidlna rajoutons cette ligne :
media_dir=/mnt/minidlna_HDD
Une fois toutes les modifications faites enregistrons-les via les touches F3 ou C-o puis validons par Entrée. \\
Nous pouvons enfin quitter [[:doc:editeurs:nano:]] via les touches F2 ou C-x
===== Ouvrir des media ====
=== VLC ===
* [[https://debian-facile.org/doc:media:vlc#upnp-ou-dlna|VLC UPnP ou DLNA]]
=== VLC Android ===
* Vérifions sur notre smartphone que notre wifi est activé et connecté sur le réseau où notre serveur se trouve.
* Ouvrons VLC.
* Sélectionnons via les 3 traits en haut à gauche "Réseau local".
* Attendons que le smartphone scanne les différents serveurs et sectionnons celui qui nous intéresse.
* Il ne reste plus qu'a naviguer dans les répertoires et choisir le fichier à ouvrir.
===== Script de configuration graphique ====
Script de configuration graphique, voir chapitre: [[https://debian-facile.org/doc:reseau:minidlna#configuration-simplifiee-et-graphique]]
#! /bin/bash
choix=$(yad --form \
--title "MiniDLNAConfig" \
--geometry="550x350" \
--borders="25" \
--center \
--scroll \
--columns=1 \
--always-print-result \
--field=" ":LBL " " \
--field="Port":CBE "8200" \
--field="Nom du service":CBE "MiniDLNA" \
--field="Dossier musique":DIR "/home" \
--field="Dossier video":DIR "/home" \
--field="Dossier image":DIR "/home" \
--field="Interval mise à jour":CB "60!360!600!900!1800!3600" \
--button="gtk-quit:1" \
--button="gtk-ok:0")
yadStatus="$?"
# Récupération données yad
port=$(awk -F [\|] '{print $2}' <<< "$choix")
nameServer=$(awk -F [\|] '{print $3}' <<< "$choix")
aDir=$(awk -F [\|] '{print $4}' <<< "$choix")
vDir=$(awk -F [\|] '{print $5}' <<< "$choix")
pDir=$(awk -F [\|] '{print $6}' <<< "$choix")
pDir=$(awk -F [\|] '{print $6}' <<< "$choix")
notifyInterval=$(awk -F [\|] '{print $7}' <<< "$choix")
[[ -z "$port" ]] && port="8200"
[[ -z "$nameServer" ]] && nameServer="MiniDLNA"
if [[ "$yadStatus" == "0" ]]; then
echo -e "port="$port"
#network_interface=eth0
#user=jmaggard
media_dir=A,"$aDir"
media_dir=V,"$vDir"
media_dir=P,"$pDir"
#merge_media_dirs=no
friendly_name="$nameServer"
#db_dir=/var/cache/minidlna
#log_dir=/var/log
#log_level=general,artwork,database,inotify,scanner,metadata,http,ssdp,tivo=warn
album_art_names=Cover.jpg/cover.jpg/AlbumArtSmall.jpg/albumartsmall.jpg/AlbumArt.jpg/albumart.jpg/Album.jpg/album.jpg/Folder.jpg/folder.jpg/Thumb.jpg/thumb.jpg
inotify=yes
enable_tivo=no
strict_dlna=no
#presentation_url=http://www.mylan/index.php
notify_interval="$notifyInterval"
serial=12345678
model_number=1
#minissdpdsocket=/var/run/minissdpd.sock
root_container=.
#force_sort_criteria=+upnp:class,+upnp:originalTrackNumber,+dc:title
#max_connections=50" > "/etc/minidlna.conf"
PATH=$PATH:/usr/sbin
service minidlna start
service minidlna force-reload
fi
echo
echo "-------------------------------------------------------"
echo "minidlna.conf"
echo "-------------------------------------------------------"
cat "/etc/minidlna.conf"
echo
exit