MiniDLNA / Ready Media est un serveur DLNA (UPnP) pour linux, simple d'utilisation.
Ready Media (anciennement MiniDLNA) permet de partager vos vidéos, votre musique, vos images… entre votre PC et votre console de jeux, votre platine Blu-Ray, votre téléphone portable ou votre télévision (la plupart sont compatibles).
Ce serveur dlna a la réputation d'être très stable sous debian/ubuntu, contrairement à uShare qui peut dysfonctionner lors du passage d'une musique à l'autre, ou à mediatomb qui ne fait pas automatiquement l'arborescence.
Le paquet étant disponible dans les dépôts, il suffit d'installer le paquet minidlna.
Le PC sur lequel vous installez miniDLNA sera le serveur de fichier : c'est lui qui les rendra disponible sur votre réseau local, c'est à dire sur les PC et smartphones connectés à votre box internet. Si vous éteignez le PC "serveur", les fichiers ne seront plus accessibles.
Pour éviter une forte consommation d'énergie, mieux vaut donc soit éteindre le serveur hors utilisation, soit avoir un PC à très faible consommation, par exemple un RaspberryPi.
MiniDLNA est installé comme un service et sera lancé automatiquement quand votre ordinateur sera démarré. À priori, vous n'avez donc jamais à utiliser de commandes pour (re)lancer / stopper ce programme (surtout si vous avez laissé l'option de recherche automatique de nouveaux fichiers), cependant si besoin, voici les commandes à utiliser.
Pour redémarrer / arrêter / état minidlna :
sudo systemctl restart minidlna sudo systemctl stop minidlna sudo systemctl status minidlna
Pour reconstruire la base de données :
sudo systemctl restart minidlna
Par défaut, miniDLNA (lorsqu'il a été installé depuis les dépôts) est exécuté automatiquement au démarrage de l'ordinateur en tant que service. L'utilisateur et le groupe par défaut du logiciel sont : minidlna.
Les répertoires situés dans /home/VOUS ne sont pas accessibles par défaut car le paramètre ProtectHome du service a la valeur on. Par contre, miniDLNA accède naturellement au répertoire /var/lib/minidlna.
Pour pouvoir faire fonctionner minidlna, il faut donc lui donner accès aux ressources souhaitées. Il existe plusieurs méthodes, en voici certaines :
Cette opération donne à miniDLNA accès aux même fichiers que vous. Il y a un petit risque de sécurité : si un pirate prend le contrôle de l'utilisateur minidlna, il accède à tout.
sudo gpasswd -a minidlna $USER
Puis modifier le fichier de configuration :
sudo nano /etc/minidlna.conf
et insérez la / les ligne(s) du / des répertoire(s) que vous voulez rendre accessible(s). Par exemple :
media_dir=/home/VOUS/Musiquemedia_dir=/home/VOUS/Vidéos
où VOUS est à remplacer par votre nom d'utilisateur.
Cette méthode a l'avantage de ne donner aucun droit additionnel à miniDLNA, ce qui est plus sûr.
Créer un répertoire de montage par répertoire qu'on souhaite partager. Par exemple :
sudo mkdir /var/lib/minidlna/Vidéos
Rien à modifier dans /etc/minidlna.conf.
On monte le répertoire à partager dans le répertoire de montage qu'on vient de créer :
sudo mount --bind /home/$USER/Vidéos/ /var/lib/minidlna/Vidéos/
/etc/fstabsudo nano /etc/fstab
et en ajoutant à la fin une ligne par répertoire à partager – par exemple :
/home/VOUS/Vidéos /var/lib/minidlna/Vidéos none nofail,bind 0 0
où VOUS est à remplacer par votre nom d'utilisateur ($USER fonctionne dans un montage ponctuel, pas dans un montage fstab).
/!\ MiniDLNA a par défaut les droits sur /var/lib/minidlna. Il ne les a pas sur /media ou /mnt. Si vous faites un montage dans ces répertoires, il faudra donc donner à MiniDLNA des droits additionnels.
Une fois les chemins à partager définis, et les droits d'accès donnés, vous pouvez redémarrer le service minidlna :
sudo systemctl restart minidlna.service
et tester son bon fonctionnement :
sudo systemctl --no-pager status minidlna.service
⇒ il ne doit pas y avoir de message d'erreur.
Reste à vérifier côté client miniDLNA (télévision ou autre) que vous accédez bien aux partages (souvent via le menu sources).
Dans le fichier /etc/minidlna.conf, la ligne media_dir=/home/VOUS/répertoire_partagé peut avoir une option. La lettre (P=Photo ; V=Vidéo ; A=Audio) limite le type de fichier à afficher. Si le type de fichier n'est pas spécifié, tous les fichiers du répertoire apparaîtrons. Un exemple avec les options :
# Path to the directory you want scanned for media files. media_dir=A,/home/toto/musique media_dir=V,/home/toto/videos
Ces options servent si des types de fichiers différents sont mélangés, sinon elles sont inutiles.
Toujours dans le fichier /etc/minidlna.conf on peut personnaliser (pas obligatoire) le nom qui s'affichera dans votre TV. Par exemple :
friendly_name=Serveur DLNA de Toto
Ne modifiez rien que vous ne comprenez pas.
# This is the configuration file for the MiniDLNA daemon, a DLNA/UPnP-AV media
# server.
#
# Unless otherwise noted, the commented out options show their default value.
#
# On Debian, you can also refer to the minidlna.conf(5) man page for
# documentation about this file.
# Specify the user name or uid to run as (root by default).
# On Debian system command line option (from /etc/default/minidlna) overrides this.
#user=minidlna
# Path to the directory you want scanned for media files.
#
# This option can be specified more than once if you want multiple directories
# scanned.
#
# If you want to restrict a media_dir to a specific content type, you can
# prepend the directory name with a letter representing the type (A, P or V),
# followed by a comma, as so:
# * "A" for audio (eg. media_dir=A,/var/lib/minidlna/music)
# * "P" for pictures (eg. media_dir=P,/var/lib/minidlna/pictures)
# * "V" for video (eg. media_dir=V,/var/lib/minidlna/videos)
# * "PV" for pictures and video (eg. media_dir=PV,/var/lib/minidlna/digital_camera)
media_dir=V,/home/toto/Vidéos
media_dir=P,/home/toto/Images
media_dir=A,/home/toto/Musique
# Set this to merge all media_dir base contents into the root container
# (The default is no.)
#merge_media_dirs=no
# Path to the directory that should hold the database and album art cache.
db_dir=/var/cache/minidlna
# Path to the directory that should hold the log file.
log_dir=/var/log
# Type and minimum level of importance of messages to be logged.
#
# The types are "artwork", "database", "general", "http", "inotify",
# "metadata", "scanner", "ssdp" and "tivo".
#
# The levels are "off", "fatal", "error", "warn", "info" or "debug".
# "off" turns of logging entirely, "fatal" is the highest level of importance
# and "debug" the lowest.
#
# The types are comma-separated, followed by an equal sign ("="), followed by a
# level that applies to the preceding types. This can be repeated, separating
# each of these constructs with a comma.
#
# The default is to log all types of messages at the "warn" level.
#log_level=general,artwork,database,inotify,scanner,metadata,http,ssdp,tivo=warn
# Use a different container as the root of the directory tree presented to
# clients. The possible values are:
# * "." - standard container
# * "B" - "Browse Directory"
# * "M" - "Music"
# * "P" - "Pictures"
# * "V" - "Video"
# * Or, you can specify the ObjectID of your desired root container
# (eg. 1$F for Music/Playlists)
# If you specify "B" and the client device is audio-only then "Music/Folders"
# will be used as root.
#root_container=.
# Network interface(s) to bind to (e.g. eth0), comma delimited.
# This option can be specified more than once.
#network_interface=
# Port number for HTTP traffic (descriptions, SOAP, media transfer).
# This option is mandatory (or it must be specified on the command-line using
# "-p").
port=8200
# URL presented to clients (e.g. http://example.com:80).
#presentation_url=/
# Name that the DLNA server presents to clients.
# Defaults to "hostname: username".
friendly_name="Serveur DLNA de toto"
# Serial number the server reports to clients.
# Defaults to the MAC address of nework interface.
#serial=
# Model name the server reports to clients.
#model_name=Windows Media Connect compatible (MiniDLNA)
# Model number the server reports to clients.
# Defaults to the version number of minidlna.
#model_number=
# Automatic discovery of new files in the media_dir directory.
inotify=yes
# List of file names to look for when searching for album art.
# Names should be delimited with a forward slash ("/").
# This option can be specified more than once.
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
# Strictly adhere to DLNA standards.
# This allows server-side downscaling of very large JPEG images, which may
# decrease JPEG serving performance on (at least) Sony DLNA products.
#strict_dlna=no
# Support for streaming .jpg and .mp3 files to a TiVo supporting HMO.
#enable_tivo=no
# Which method to use for registering in TiVo: 'bonjour' (default) or
# legacy 'beacon'
#tivo_discovery=bonjour
# SSDP notify interval, in seconds.
#notify_interval=895
# Path to the MiniSSDPd socket, for MiniSSDPd support.
#minissdpdsocket=/run/minissdpd.sock
# Always set SortCriteria to this value, regardless of the SortCriteria
# passed by the client
# e.g. force_sort_criteria=+upnp:class,+upnp:originalTrackNumber,+dc:title
#force_sort_criteria=
# maximum number of simultaneous connections
# note: many clients open several simultaneous connections while streaming
#max_connections=50
# set this to yes to allow symlinks that point outside user-defined media_dirs.
#wide_links=no
Voir le chapitre suivant pour changer l'utilisateur et le groupe avec lequel est exécuté miniDLNA.
Selon la quantité de média que vous partagez, leur disponibilité pour vos appareils clients ne sera pas immédiate. On peut facilement croire à tort que seuls quelques premiers dossiers sont partagés, simplement parce que miniDLNA n'a pas fini de tout analyser.
Si le serveur n'apparaît pas sur le client, il est possible de baisser la valeur de la ligne notify interval, par exemple à 60, c'est a dire qu'il va attendre 60 secondes pour lancer une recherche de media ajouté. Cela peut régler le problème. Si cela ne fonctionne toujours pas, essayez avec 5 secondes. Exemple de ligne :
notify_interval=60
Par défaut, miniDLNA (lorsqu'il a été installé depuis les dépôts) est exécuté automatiquement au démarrage de l'ordinateur comme un service.
L'utilisateur et le groupe par défaut utilisés sont : minidlna.
Les répertoires situés dans /home/$USER ne sont pas accessibles par défaut car le paramètre "ProtectHome" du service a la valeur "on".
Cela bloque l'accès à vos fichiers de média s'ils sont dans votre /home.
S'ils sont ailleurs, cela les bloquera aussi s'ils ne sont pas accessibles en lecture pour tout le monde.
Il faut donc non seulement définir un ou des répertoires à diffuser dans /etc/minidlna.conf (par exemple avec des lignes comme media_dir=/home/votre_user/videos), mais il faut aussi en autoriser au moins la lecture à un utilisateur (minidlan) qui n'est pas vous.
Vous pouvez donner l'accès en lecture à tout le monde pour vos fichiers, par exemple :
sudo chmod a+rX /chemin/dossier/vidéos/
A ne jamais faire sur le /home/ dans son ensemble, ce serait un vrai danger en termes de sécurité des accès. Sur un répertoire unique sans données confidentielles, ce peut-être plus acceptable. Mais si vous ne souhaitez pas faire cela, il existe l'option avec SystemD.
Pour ne pas modifier le fichier /usr/lib/systemd/system/minidlna.service, on crée un fichier complémentaire pour y changer l'utilisateur, le groupe et autoriser l'accès à /home/$USER. D'abord créer le répertoire qui contiendra le fichier :
sudo mkdir /etc/systemd/system/minidlna.service.d
ensuite le fichier
sudo nano /etc/systemd/system/minidlna.service.d/run-as-user.conf
et y coller ce contenu:
[Service] User=mon_user Group=mon_user ProtectHome=off DynamicUser=no
en remplaçant mon-user par son nom d'utilisateur.
finir par :
sudo systemctl daemon-reload
et relancer le service
sudo systemctl restart minidlna.service
Quelques systèmes linux (peu nombreux) n'utilisent pas SystemD, mais Ubuntu l'utilisant, la solution ci-dessous ne fonctionne plus sur Ubuntu.
Changement de l'utilisateur et du groupe d'utilisateurs utilisés par miniDLNA.
Modifier les lignes du fichier /etc/default/minidlna avec les droits d'administration :
#USER="minidlna" #GROUP="minidlna"
Concrètement, ajouter la ligne :
GROUP="nom_de_l'utilisateur"
(où nom_de_l'utilisateur est à remplacer par le nom de l'utilisateur (user) de votre machine).
La modification de ce paramètre se fait par un autre moyen pour systemd
# User and group the daemon should run as
# only for sysV init, for systemd please override minidlna.service
Dans ce cas, il faut modifier le fichier /usr/lib/systemd/system/minidlna.service pour y changer le groupe utilisateur, et finir par :
sudo systemctl daemon-reload
On peut aussi faire le choix d'ajouter son utilisateur au groupe minidlna
sudo adduser mon_utilisateur minidlna
ou inversement - et selon qui ( utilisateur et groupe ) est propriétaire des éléments partagés via dlna - ajouter l'utilisateur minidlna au groupe de l'$USER propriétaire des éléments partagés :
sudo adduser minidlna $USER
Pour afficher la pochette d'un film, créer un fichier JPEG correspondant.
Comme pour les TV Samsung, pour afficher la pochette d'un film, créer un fichier JPEG correspondant.
L'image doit être au format 320 x 240 pixels pour un meilleur rendu.
A noter qu'il existe un site internet pour générer des pochettes au format PNG : PS3 Media Server - Thumbnail generator
Il conviendra de convertir le fichier png au format jpg (avec gimp par exemple) pour que celà fonctionne avec le serveur minidlna
Certains types de conteneurs vidéo embarquent une piste pour les sous-titres, qui ne s'affichent pas sur l'écran de télé (exemple : fichiers MKV).
Pour bénéficier des sous-titres, il suffit d'extraire cette piste (par exemple avec MKV Extractor GUI ) dans un fichier du même nom que le fichier vidéo (testé avec l'extension .srt), et de le placer dans le même dossier.
Si vous utilisez un pare-feu, il faudra le configurer pour que tout fonctionne correctement.
Avec gufw il vous suffit d'ajouter une nouvelle règle pour autoriser le service uPnP (port 8200 dans l'exemple) quand la source est l'adresse IP de vos équipements.
Exemple de mise en application pour un réseau sous Livebox
sudo ufw allow from 192.168.1.0/24 to any port 8200
DLNA va fonctionner avec des matériels relativement récent. Leur documentation précise normalement cette compatibilité.
La liste suivante n'est pas exhaustive, mais ces périphériques sont compatibles :
home cinema :
casque VR :
Contributeurs : McPeter, ned.net, bruno.