Article tagué dockstar

MiniDLNA: le serveur UPnP/DLNA léger

A la recherche d’un serveur UPnP à installer sur mon plug-computer Docktsar, on m’a conseillé MiniDLNA, un serveur UPnP qui répond enfin à mes attentes.

Un petit tour d’horizon

J’avais déjà fait il y a un moment un tour d’horizon de ce que je pouvais installer sur un serveur Debian.

Disponible dans les dépôts Debian Lenny:
Gmediaserver – UPnP Mediaserver
Mediatomb – UPnP MediaServer
uShare – Lightweight UPnP A/V Media Server

Que je connais aussi:
FUPPES
PyMeds
PS3 Media Server
Twonkyvision (aka TwonkyServer) License d’utilisation payante.

Mais aucun ne m’avais pleinement satisfait, soit trop lourds à gérer, trop gourmands en ressources, ne tenant pas forcément la charge d’une grosse collection, des incompatibilités diverses et variées (tant au niveau interne avec les fichiers, les tags, qu’avec certains clients UPnP), des classements farfelus de la médiathèque et/ou de l’ordre des pistes, parfois l’obligation d’un mode de navigation dans la médiathèque pas très ergonomique pour une collection conséquente, ou encore l’impossibilité de naviguer dans la bibliothèque lors que le serveur est en train de streamer un fichier…
Bref aucun ne répondait pleinement à ce que je cherchais, excepté peut-être Twonkyvision qui est payant.

MiniDLNA

MiniDLNA (anciennement ReadyDLNA) est un serveur dont l’objectif est d’être pleinement compatible avec les clients DLNA/UPnP-AV. Il a été développé par un employé de la société NETGEAR pour leur gamme de NAS « ReadyNAS ».
Donc dans sa conception MiniDLNA est pensé pour fonctionner sur de petites machines aux capacités restreintes (tel que les NAS), ce qui est idéal pour le Dockstar (CPU ARM, 128Mo de RAM).

Il est aussi réputé pour être plus compatible que certains autres serveurs UPnP/DLNA avec différents matériels un peu capricieux dans l’électronique grand public (ex: Téléviseurs avec fonctionnalité DLNA).

En téléchargement est disponible un binaire pré-compilé pour architecture x86 et son fichier de conf. Une simple extraction de l’archive en plaçant minidlna dans le répertoire /usr/sbin/ et minidlna.conf dans le répertoire /etc/. Puis quelques réglages dans le fichier de conf, lancer minidlna et hop ça a fonctionné direct sur mon portable sur Ubuntu.

Parfait rendu sur ma radio wifi Freecom MusicPal: navigation par artistes, albums, recherche de fichier, mais surtout possibilité de navigation dans l’arborescence du système de fichiers (ce que je préfère). Les pistes sont bien classées dans le bon ordre, lancez un morceau et il enchaine automatiquement ceux qui suivent dans le même dossier.
Le seul « désagrément » inévitable mais attendu c’est la durée du scan initial de la bibliothèque si celle-ci est conséquente. (Note: à partir de la version 1.0.22, l’utilisation de Inotify permet à la base de données de se mettre à jour toute seule lors de l’ajout de nouveaux médias).

Installation de MiniDLNA sur le Dockstar (Debian)

Étant donné que le Dockstar de Seagate (équivalent du PogoPlug, basé sur SheevaPlug) a une architecture processeur différente (ARM Marvell Kirkwood 1,2 GHz), il va falloir compiler MiniDLNA.

Un petit tutoriel? Allez…
Bon déjà ne pas oublier qu’on est avec l’utilisateur root.

On installe d’abord les dépendances requises pour la compilation:

aptitude install build-essential libexif-dev libjpeg-dev libid3tag0-dev libflac-dev libvorbis-dev libsqlite3-dev libavformat-dev libuuid1


Puis on va se placer dans le dossier temporaire:

cd /tmp/


On télécharge le fichier des sources (ici la dernière version en date était la 1.0.18):

wget http://downloads.sourceforge.net/project/minidlna/minidlna/1.0.18/minidlna_1.0.18_src.tar.gz


Et l'on décompresse l'archive:

tar -xzvf minidlna_1.0.18_src.tar.gz


On se met dans le dossier des sources décompressées "minidlna":

cd minidlna


Et on lance un "make"

make


Il n'y a plus qu'à copier les fichiers obtenus aux bons endroits:

cp minidlna /usr/sbin/
cp minidlna.conf /etc/
cat linux/minidlna.init.d.script > /etc/init.d/minidlna
chmod +X /etc/init.d/minidlna
chmod 755 /etc/init.d/minidlna


On peut faire un peu de ménage en désinstallant les paquets "dev" destinés à la compilation:

aptitude remove libexif-dev libjpeg-dev libid3tag0-dev libflac-dev libvorbis-dev libsqlite3-dev libavformat-dev

Voilà, vous n'avez plus qu'à faire les réglages de vos préférences (dossier où sont stockés vos medias, port d'écoute, pochettes d'albums, etc...) dans le /etc/minidlna.conf puis de lancer minidlna, soit par:

./usr/sbin/minidlna

ou plus propre:

/etc/init.d/minidlna start

Note: /etc/init.d/minidlna vous permet de l'ajouter en démarrage automatique à votre séquence de boot ;)

update-rc.d minidlna defaults

Cas pratique et personnel sur le Dockstar:

MiniDLNA a mis 1h15 pour scanner 71815 fichiers, c'est très honorable en considérant le petit CPU du Dockstar, sa RAM et le fait que les medias soient sur un disque USB.

Néanmoins lors du scan/indexation il se gauffre complétement et passe un temps monstre dès qu'il trouve le moindre fichier de playlist de type m3u.

Le problème des fichiers de playlist:
Lors du scan il a passé ~ 2 minutes d'analyse par fichier m3u qu'il a trouvé, s'il en trouve tout un tas l'indexation ne finira jamais...
(il fait une comparaison récurrente de dingue dans une énorme base sqlite sur des valeurs sans index, je vous laisse imaginer le massacre pour ceux qui ont l'habitude des bases de données)

Comme je n'ai aucune utilité des fichiers m3u, ni pls, je les ai effacé de ma bibliothèque en me rendant dans le dossier où sont stockés mes medias et en utilisant ces commandes:

find . -name "*.m3u" -exec rm '{}' \;
find . -name "*.M3U" -exec rm '{}' \;
find . -name "*.pls" -exec rm '{}' \;
find . -name "*.PLS" -exec rm '{}' \;

Le cache de MiniDLNA mis dans le répertoire /tmp:
Par défaut MiniDLNA génère ses fichiers de cache (base de données, etc...) dans le dossier temporaire /tmp/ qui dégage à chaque reboot (ça veut dire rescanner tout à chaque démarrage de la machine).
Une option est disponible depuis des récentes version pour stocker ces données ailleurs (au choix de l'utilisateur).
Il suffit de renseigner la variable "db_dir" dans le fichier de configuration, ex:

db_dir=/var/cache/minidlna

note: je n'avais vu nulle part cette mention, on me l'a indiqué dans un forum.

Une fois le scan terminé, en fonctionnement normal il ne consomme que très peu de ressource:
4.5% de la mémoire (sur 128Mo de RAM) et quasi 0% de CPU (à peine quelques % en pointe)

Module Webmin: MiniDLNA Webmin Module permet de modifier la configuration de MiniDLNA, de le redémarrer ou de relancer un scan depuis Webmin.

Seagate Dockstar en déstockage, un Plug Computer très abordable.

C’est suite à une promotion repérée sur le topic d’un forum que je suis du coin de l’oeil, que j’ai décidé de passer enfin au Plug Computer (ordinateur de la taille d’une prise, ou intégré dans une prise): Seagate déstocke ses Dockstar, vendus à 15€ pièce (attention les commerçants en ligne ont vite fait de repérer l’agitation sur un de leurs produits et d’en remonter très vite le prix).

Le Dockstar, tel qu’il est présenté et commercialisé par Segate

C’est une base (dock) pour les disques durs externes Seagate FreeAgent Go 2.5″, qui permet la mise en partage des données via le service en ligne my.pogoplug.com de la société Cloud Engine.
Voici la présentation officielle: http://www.seagate.com/www/fr-fr/products/network_storage/freeagent_dockstar/

Ce service en ligne qui permet des utilisation très aisée a cependant trois gros inconvénients:
- il est gratuit la 1ere année de l’activation du service (car fournit avec le matériel) et payant les années suivantes (~30€/an).
- il ne faut pas avoir peur de confier à une société tierce les accès en ligne et la sécurité des données stockées sur votre disque dur, ainsi qu’un potentiel droit de regard sur vos données à leur propre discrétion…
- via un système privateur de mises à jour, ils peuvent se permettre de faire ce qu’ils veulent de votre matériel: l’upgrader, le révoquer ou le désactiver…

Bref, Seagate en a fait fabriquer une belle quantité, l’a commercialisé à 99$ et cela a du être un flop commercial (notamment à cause de la gestion en ligne tierce et payante et de mauvaises critiques de ce service lié) car ils liquident désormais les stocks à bas prix.

Ce que le Seagate Dockstar est en réalité

C’est un Sheevaplug sous-vitaminé, un mini-ordinateur avec comme spécifications:
- Processeur ARM Marvell Kirkwood 1,2 GHz
- 128Mo de RAM
- 256Mo de mémoire Flash NAND, dont ~32Mo occupés par le système/firmware
- 3 ports USB
- 1 port mini-USB (le port du haut du dock est en fait un mini-USB mâle standard)
- 1 port Ethernet Gigabit
- Consommation annoncée: entre 4 et 8W selon le fonctionnement (et en incluant la consommation d’un HDD 2.5″)
- 8,6 x 8,5 x 3,8, cm (long. x larg. x prof.) / Poids : 0,50 kg

Limites: pas de calcul CPU en virgule flottantes, pas de Real Time Clock (à contourner avec le service NTP).

Que peut-on faire du Dockstar ?

Il y est possible de se passer du système originel et d’en faire ce que l’on veut en y installant Debian, Plugbox Linux ( Arch Linux compilé pour Sheevaplug et Seagate Dockstar), OpenWRT… d’autres plus spécialisés comme FreeSwitch ou PlugBX, et fort probablement d’autres systèmes à venir étant donné la compatibilité de l’architecture ARM et l’intérêt de la communauté sur ce type de matériel.
La machine est capable de booter soit sur sa mémoire flash interne, soit (après légère adaptation du bootloader) sur un media USB (clef, disque dur externe,…) :D

Il y a donc de quoi faire un petit serveur très capable, sans bruit, discret et basse consommation, sa taille ridicule permet de le planquer n’importe où. C’est parfait pour une machine fonctionnant 24h/24!
Pour info mon petit serveur actuel (sous Voyage Linux, une Debian) est un client léger avec comme spécs: CPU Via C3 500Mhz / 128Mo RAM / 256Mo Flash et s’en sort déjà très bien.

Les 4 ports USB au total et la quantités d’accessoires existants en USB laisse libre-court à l’imagination quant à ce que l’on peut lui rajouter (clef wifi, webcam, carte son, etc…).

Pour voir la bête de l’intérieur, voici des photos de l’ouverture de ses entrailles.

On peut l’imaginer en petit serveur personnel, de mise en réseau de ressources (HDD, imprimante), des services web, serveur de media (upnp, itunes), en serveur VOIP, en serveur de gestion domotique, système de download autonome (torrents, newsgroups, … ), serveur de groupware, de messagerie instantanée, un point d’accès wifi sur mesure (avec portail captif ou sécurité VPN), etc… ça ne dépend que de vos envies.

Voici ce que je compte en faire:
- Serveur OpenVPN (pour me protéger des hotspots quand je suis en déplacement)
- Serveur XMMP/Jabber (Prosody), ainsi qu’un bot jabber (comme ça je n’embêterai plus le serveur jabber.fr avec mes expériences ;) )
- Serveur web léger (Lighttpd ou Nginx), accompagné de PHP et Sqlite
- Serveur UPnP (pour ma radio wifi Freecom MusicPal et le mediacenter de la Neufbox)
- Partage Samba et NFS
- Serveur de sauvegardes programmées
- Gardien de porte (en combinant IPtable, Fail2ban et le bot XMPP)
et peut-être:
- Relais Icecast
- Lecteur audio MPD (en ajoutant une carte son USB)
- Serveur de webcam avec détection de mouvement et système d’alerte

Au prix de 15€ la bestiole, on peut même imaginer plusieurs de ces petites machines avec un usage spécifique pour chacune.

Quelques ressources en vrac:
Plugapps, plugcomputer (son forum et son wiki), forum.hardware.fr (« Topic Unique »: Seagate Dockstar, le plug computer pas cher).

Petit clin d’oeil au passage à Benjamin Bayart: avoir des services en ligne hébergés chez soi sur une machine qui tourne 24h/24, ne coute quasi-rien et consomme que dalles, c’est désormais possible!