Le dernier service Google à la mode est Google Music. Vous confiez/uploadez toute votre musique à Google et vous pouvez y accéder via une interface Web ou une application Android.

C’est bien mais ce n’est pas révolutionnaire (à part peut être le fait que Google « offre » 100Go de stockage dans le cloud) et cela fait une chose de plus (un bout de votre vie) que vous confiez à un géant du Web.

Cette idée de bibliothèque musicale sur le web, accessible de partout, je l’ai depuis pas mal de temps (voir Marques pages : Choisir un lecteur audio pour Ubuntu et plus particulièrement la fin Lecteurs audio « client-serveur ») et après pas mal de tests, d’exploration de solutions non pérennes (daap, icecast, etc), j’ai enfin trouvé Ampache.

Dans cet article je vais décrire l’installation d’Ampache mais aussi d’autres logiciels ayant la même vocation :

Mes critère de choix, outre la possibilité d’écouter ma musique via internet était que le service doit pouvoir fonctionner sur mon Dockstar avec son petit processeur ARM et ses 128 Mo de RAM !!

 

Ampache

Commençons par le gagnant.

Ampache n’est pas le logiciel le plus beau ni celui offrant le plus fonctionnalité mais il offre l’immense avantage de s’installer sur un pile serveur web + MySQL et de ne pas consommer trop de ressources

Ampache est dans les dépôts Debian (avec une petite particularité nous le verrons plus tard) on l’installe donc avec son gestionnaire de paquet préféré (aptitude pour moi) :

sudo aptitude install ampache
Les NOUVEAUX paquets suivants vont être installés :
 ampache libjs-prototype{a} libmysqlclient16{a} libnusoap-php{a} libphp-snoopy{a} mysql-common{a} php5{a} php5-auth-pam{a}
 php5-mysql{a} php5-xmlrpc{a} ttf-freefont{a}
 Les paquets suivants sont RECOMMANDÉS mais ne seront pas installés :
 ampache-themes apache2-mpm-prefork eyed3 javascript-common lighttpd x-ttcidfont-conf
 0 paquets mis à jour, 11 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de télécharger 4 177 ko/6 087 ko d'archives. Après dépaquetage, 17,9 Mo seront utilisés.

On remarquera que le paquet conseil d’installer apache ou lighttpd, mais j’ai déjà NGINX d’installé…

On Installera aussi le serveur MySQL, bien qu’il ne soit pas dans les paquets nécessaires ni recommandés (pour la bonne raison que l’on peut utiliser une base distante)

Le paquet Ampache installe les pages HTML/php constituant le logiciel dans /usr/share/ampache  et il faut donc les rendre accessible de son serveur web, j’ai pour ma part choisi de créer un lien symbolique entre la racine de mon serveur web et le répertoire d’Ampache :

cd /var/www
ln -s /usr/share/ampache/www/ ampache
sudo chown www-data:www-data ampache/ -R

On se connecte ensuite à son serveur Web :

http://IP-du-serveur/ampache

Et on passe les différents écran de configuration :

Tout d’abord on vérifie que tous les pré-requis système sont présents :

Dans mon cas j’ai eu un problème avec le pré-requis « MySQL for php » et ce malgré l’installation du paquet php5-mysql, je l’ai corrigé en ajoutant une ligne dans mon php.ini

Sélectionner ensuite la langue d’installation.

 

Renseigner ensuite les données MySQL : l’utilisateur root, son mot de passe, la machine hébergeant MySQL (localhost le plus souvant) et le nom de la base à créer (ampache pour faire simple)

On indique aussi que l’on veut créer un nouvel utilisateur MySQL nommé ampache (ou comme vous le souhaitez)

Ayant faire divers essai j’ai remarqué que si on coche la case « Ecraser la configuration existante » on a l’erreur :

Error: Unable to make Database Connection Access denied for user 'root'@'localhost' (using password: NO)

Si on a déjà une base ampache que l’on souhaite écraser, il n’y a pas d’autre moyen que de supprimer les tables et la base précédente via un requeteur

 

Normalement à l’étape suivante la base, l’utilisateur dédié et les table doivent être créés, on indique alors les informations choisies précédemment (nom de la base, utilisateur et mot de passe de ce dernier)

Le bouton « écrire la configuration » télécharge un fichier ampache.cfg.php qu’il faut copier sous /var/www/ampache/config (penser au droit accès)

Un fois copié, cliquer sur le lien « teste de la configuration » et tout devrait être OK :

Créer ensuite un compte administrateur :

Et la configuration est terminée, reste plus qu’a aller sur la page d’accueil et se logguer avec le compte administrateur défini précedemment :

Voici l’interface par défaut d’Ampache (vous verrez par la suite il y a d’autres logiciel plus beaux mais aussi des plus moches…)

L’étape suivante à aller dans les pages de paramétrage et d’ajouter un répertoire contenant de la musique :

Attention Ampache (via l’utilisateur www-data de votre serveur web) doit avoir accès en lecture aux fichiers…

 

Pour la lecture de la musique Ampache propose de télécharger une playlist avec les adresses des morceaux sélectionnés (en http) ou de piloter un serveur MPD ou dans le cas qui nous intéresse de jouer la musique directement dans l’interface via un lecteur en Flash.

Or ce lecteur Flash n’est packagé dans l’archive Debian/Ubuntu (pour des raison de droits ?), il faut donc l’installer manuellement.

Pour cela télécharger l’archive des sources sur le site d’Ampache, la décompresser et copier les fichiers xspf_jukebox.fla et swf présents dans le répertoire module/flash dans le répertoire correspondant de votre installation.

 

Enfin si on veut rendre Ampache plus (les goûts et les couleurs…) on pourra installer le paquet ampache-themes qui propose des thème supplémentaire par rapport a ceux embarqués par défaut.

Pour ma part j’ai installé un thème trouvé sur le forum d’Ampache :

Fresh theme (r5 – now playing update)

 

Subsonic

Subsonic a été le plus sérieux concurrent à Ampache.

Il est beau, bourré de fonctionnalité, ergonomique :

MAIS il est en Java.

Il occupe donc beaucoup de place disque (90Mo rien que pour le JRE), mémoire et CPU.

Ces 2 derniers points sont bloquant pour mon Dockstar :

En pré-requis Subsonic à le JRE, sur un serveur comme le Dockstar il est impératif de prendre la version headless, sinon on se retrouve à télécharger xorg et 50 Mo supplémentaires de librairies graphiques…

sudo aptitude install openjdk-jre-headless
Les NOUVEAUX paquets suivants vont être installés :
 ca-certificates-java{a} java-common{a} libavahi-client3{a}   libavahi-common-data{a} libavahi-common3{a} libcups2{a} libdbus-1-3{a}   libfreetype6{a} liblcms1{a} libnspr4-0d{a}
 libnss3-1d{a} openjdk-6-jre-headless openjdk-6-jre-lib{a} tzdata-java{a}
 Les paquets suivants sont RECOMMANDÉS mais ne seront pas installés :
 dbus icedtea-6-jre-cacao
 0 paquets mis à jour, 14 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de télécharger 32,0 Mo/32,4 Mo d'archives. Après dépaquetage, 87,3 Mo seront utilisés.

On téléchargera ensuite le paquet correspondant à Debian/Ubuntu sur la page du projet :

Subsonic » Free Music Streamer

Et on l’installera :

sudo dpkg -i subsonic*.deb

Pour finir l’installation / la configuration il suffit d’aller sur le serveur sur lequel vous avez installé Subsonic sur le port 4040 :

http://IP-du-serveur:4040

On se connecte avec l’utilisateur et mot de passe « admin »

Et la page d’accueil s’affiche :

Et indique les étapes à réaliser (les étapes sont cliquables) :

Premièrement pour des raisons de sécurité, changer le mot de passe administrateur :

Puis configurer les lieux de stockage de la musique :

Lorsque l’indexation est terminée on peut profiter de Subsonic

… pour peu que sa machine le supporte, c’est à dire pas un Dockstar, vraiment dommage …

 

Zeya

Zeya est un petit serveur musical ne proposant que très peu de fonctionnalités : une liste de morceau, on en choisi un et il est joué dans le navigateur…

Zeya est disponible dans les dépôts Debian/Ubuntu (v0.4) il suffit donc de faire :

sudo aptitude install zeya

Sur ma Debian cela prend 8 675 ko et installe les paquets suivants :

libao-common{a} libao4{a} libboost-python1.42.0{a} libflac8{a} libogg0{a} libspeex1{a} libtag1-vanilla{a} libtag1c2a{a}
 libvorbis0a{a} libvorbisenc2{a} libvorbisfile3{a} python-simplejson{a} python-tagpy{a} vorbis-tools{a} zeya

Et recommande les paquets suivants :

flac libjs-jquery mpg123 mpg321

Le lancement de Zeya se fait ensuite avec un simple :

zeya --path=/data/multimedia/Musiques

Le premier démarrage est long car Zeya scanne le répertoire passé en paramètre en vue d’indexer les morceaux de musique qu’il contient :

Using 'dir' backend.
 Scanning for music in '/data/multimedia/Musiques/Musique'...
 TagLib: MPEG::Header::parse() -- Invalid sample rate.
 
TagLib: MPEG::Properties::read() -- Could not find a valid last MPEG frame in the stream
 
TagLib: Ogg::File::packet() -- Could not find the requested packet.
 TagLib: Vorbis::File::read() - Could not find the Vorbis comment header.
 
TagLib: ID3v2.4 no longer supports the frame type RVAD.  It will be discarded from the tag.

Les erreurs que j’ai eu (ci-dessus) seraient sûrement corrigées avec l’installation des paquets recommandés.

Ensuite Zeya démarre un serveur web sur le port  8080, sert l’interface et stream la musique :

Loading library...
 Listening on port 8080
 ::ffff:192.168.1.100 - - [16/Jun/2011 21:37:18] "GET / HTTP/1.1" 200 -
 ::ffff:192.168.1.100 - - [16/Jun/2011 21:37:18] "GET /zeya.css HTTP/1.1" 200 -
 ::ffff:192.168.1.100 - - [16/Jun/2011 21:37:18] "GET /zeya.js HTTP/1.1" 200 -
 ::ffff:192.168.1.100 - - [16/Jun/2011 21:37:18] "GET /previous.png HTTP/1.1" 200 -
 ::ffff:192.168.1.100 - - [16/Jun/2011 21:37:18] "GET /play.png HTTP/1.1" 200 -
 ::ffff:192.168.1.100 - - [16/Jun/2011 21:37:18] "GET /next.png HTTP/1.1" 200 -
 ::ffff:192.168.1.100 - - [16/Jun/2011 21:37:18] "GET /pause.png HTTP/1.1" 200 -
 ::ffff:192.168.1.100 - - [16/Jun/2011 21:37:18] "GET /spinner.gif HTTP/1.1" 200 -
 ::ffff:192.168.1.100 - - [16/Jun/2011 21:37:18] "GET /repeat.png HTTP/1.1" 200 -
 ::ffff:192.168.1.100 - - [16/Jun/2011 21:37:18] "GET /shuffle.png HTTP/1.1" 200 -
 ::ffff:192.168.1.100 - - [16/Jun/2011 21:37:18] "GET /search.png HTTP/1.1" 200 -
 ::ffff:192.168.1.100 - - [16/Jun/2011 21:37:18] "GET /favicon.png HTTP/1.1" 200 -
 ::ffff:192.168.1.100 - - [16/Jun/2011 21:37:18] "GET /favicon.png HTTP/1.1" 200 -
 ::ffff:192.168.1.100 - - [16/Jun/2011 21:37:18] "GET /getlibrary HTTP/1.1" 200 -
 ::ffff:192.168.1.100 - - [16/Jun/2011 21:38:03] "GET /getcontent?key=3797 HTTP/1.1" 200 -
 Handling request for /data/multimedia/Musiques/Musique/Renan Luce/Repenti/Renan Luce - 13 - LIris Et La Rose.ogg
 ::ffff:192.168.1.100 - - [16/Jun/2011 21:40:25] "GET /getcontent?key=3785 HTTP/1.1" 200 -
 Handling request for /data/multimedia/Musiques/Musique/Renan Luce/Repenti/Renan Luce - 01 - Les Voisines.ogg

Comme indiqué précédemment Zeya est simplissime et il manque tout de même quelques fonctionnalités, notamment la possibilité de gérer sa liste de lecture, en effet Zeya joue les morceau les un derrière les autres sans possibilité de les ordonner (par contre on peut les sélectionner avec la zone de recherche), de plus il n’est pas possible d’avancer dans un morceau et enfin dernier critère de non choix, sur mon Dockstar la CPU monte à 100% et les morceaux coupent toutes les 5s

 

Rque : pour installer le dernière version (v0.5), télécharger le paquet sur le site du projet :
http://web.psung.name/zeya/

Installer les dépendances (et éventuellement les paquets recommandés voir ci-dessus)

vorbis-tools python-simplejson python-tagpy

Et installer Zeya :

sudo dpkg -i zeya_0.5-1_all.deb

 

Zina

Zina ressemble un peu à Ampache, mais en moins beau et avec le MySQL optionnel.

De plus il n’est plus maintenu (ou tout du moins en pause) depuis Août 2010…

Pour l’installer on télécharge l’archive sur le site, on la décompresse dans un répertoire accessible du serveur web et voila :

wget https://downloads.sourceforge.net/project/zina/Zina/2.0beta22/zina-2.0b22.tar.gz?r=&ts=1315944029&use_mirror=freefr
mv zina-2.0b22.tar.gz* zina-2.0b22.tar.gz
tar -xvf zina-2.0b22.tar.gz
sudo mv zina/ /data/www
sudo chown www-data.www-data /data/www/zina -R

Il suffit ensuite d’accéder à Zina en http (adresse en fonction de votre serveur web) : http://IP_erveur/zina/index.php

Zina permet de jouer la musique en téléchargeant une playlist contenant les lien http vers les morceaux sélectionnés

 

Ou via un lecteur flash embarqué (d’ailleurs mieux intégré que celui d’Ampache)


Blofeld

L’annonce de Blofeld est alléchante :

Mais la phrase « Difficult to install and configure » en parlant des autres serveurs musicaux me fait doucement rire car je n’ai pas réussi à installer Blofeld, pire j’ai planté mon Dockstar ce qui m’a valu une belle frayeur (voir cet article).

Peut être est ce dû au fait que j’ai essayé de l’installer sur une Debian ARM alors que l’auteur semble privilégier Ubuntu…

De plus depuis l’annonce le github du projet ne semble pas beaucoup bouger…

 

Voici les étapes que j’ai suivi :

Installation des dépendances (attention ça fait mal, pire que le JRE) :

sudo aptitude install python-cheetah python-imaging python-mutagen python-couchdbkit couchdb python-gst0.10 gstreamer0.10-ffmpeg python-cherrypy3

Ce qui installe :

couchdb erlang-base{a} erlang-crypto{a} erlang-inets{a} erlang-mnesia{a} erlang-public-key{a} erlang-runtime-tools{a}
 erlang-ssl{a} erlang-tools{a} erlang-webtool{a} erlang-xmerl{a} gstreamer0.10-ffmpeg iso-codes{a} libavcodec52{a}
 libavformat52{a} libavutil49{a} libdirac-encoder0{a} libfaad2{a} libffi5{a} libgsm1{a} libgstreamer-plugins-base0.10-0{a}
 libgstreamer0.10-0{a} libicu44{a} libjs-jquery{a} liblcms1{a} libmozjs2d{a} libnspr4-0d{a} libogg0{a} liboil0.3{a}
 libopenjpeg2{a} liborc-0.4-0{a} libpostproc51{a} libpython2.6{a} libschroedinger-1.0-0{a} libspeex1{a} libswscale0{a}
 libtheora0{a} libvorbis0a{a} libvorbisenc2{a} python-anyjson{a} python-cheetah python-cjson{a} python-couchdbkit
 python-gobject{a} python-gst0.10 python-imaging python-libxml2{a} python-mutagen python-restkit{a}

Soit plus de 110 Mo !!

Récupération et installation de Blofeld :

wget https://github.com/daveisadork/Blofeld/zipball/0.2.5
mv 0.2.5 blofeld.zip
unzip blofeld.zip
mv daveisadork-Blofeld-96c363e/ blofeld

Lancement :

blofeld

Et là se fut le drame, la CPU est montée, le terminal ne répondait plus, la connexion SSH a été interrompue et j’ai du rebooter sauvagement le Dockstar avec pour conséquence de la planter…

Donc pas de copie d’écran….

 

Streeme

[Ajout du 17/06/2013]

Nouveau (enfin pas si nouveau que ça) venu, un serveur musical simple mais complet en HTML5 / PHP (Symfony 1)

Installation des pré-requis :

sudo aptitude install php-pear curl php5-curl php5-gd ffmpeg
sudo pear install HTTP_Download

Clone du repo :

git clone https://github.com/chaffneue/streeme.git streeme
sudo mv streeme/ /data/www
sudo chown www-data.www-data /data/www/streeme -R

Création d’une base MySQL

mysql -uroot -p
CREATE DATABASE streeme  DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
grant usage on *.* to streeme@localhost identified by 'password';
grant all privileges on streeme.* to streeme@localhost ;

Configuration :

 

cd /var/www/streeme
cp config/databases.template.yml config/databases.yml
cp apps/client/config/app.template.yml apps/client/config/app.yml
mkdir cache
chmod 777 log cache

 

Édition de config/databases.yml et configuration de la section all (username, password)

Édition de apps/client/config/app.yml et configuration des attributs watched_folders,  allowed_file_types, ffmpeg_executable

Vidage des caches :

 

./symfony cc

 

Vérification pré-requis Symfony

 

php check_configuration.php

 

Construction des tables :

 

./symfony doctrine:build --all --and-load

 

Scan de la librairie :

 

./symfony scan-media --type=filesystem

 

Scan des album art (n’a pas marché chez moi)

 

./symfony scan-art --source=folders
./symfony scan-art --source=meta

 

Création d’un utilisateur :

 

symfony guard:create-user your_username your_password

 

Ma conf NGINX :

 

server {
 listen       8095;
 server_name  music.xxx.fr;
 root         /var/www/xxx.fr/streeme/web;
 
 access_log      /var/log/nginx/streeme.access.log ;
 include         /etc/nginx/common.conf ;
 
 location ~ (/\.|^/(config|test)) {
 deny all;
 }
 
 index           index.php;
 
 rewrite ^/art/([a-zA-Z0-9]+|all)/([a-zA-Z0-9]+|all)$ /proxy_art.php?hash=$1&size=$2 last;
 rewrite ^/client_dev.php/art/([a-zA-Z0-9]+|all)/([a-zA-Z0-9]+|all)$ /proxy_art.php?hash=$1&size=$2 last;
 
 location ~ ^/(index|proxy_art)\.php$ {
 include         /etc/nginx/fastcgi_params;
 fastcgi_param   SCRIPT_FILENAME  $document_root$fastcgi_script_name;
 fastcgi_pass    127.0.0.1:9000;
 }
 
 location / {
 index index.php;
 try_files $uri /index.php?$args;
 }
 
 location /sf/ {
 root /var/www/xxx.fr/streeme/lib/vendor/symfony/data/web/sf/;
 }
 
}
#Music-proxy
server {
 listen 8096;
 
 root /var/www/xxx.fr/streeme/web;
 
 location ~ (/\.|^/(config|test)) {
 deny all;
 }
 
 rewrite ^/play/([a-zA-Z0-9.]+|all)$ /proxy_play.php?unique_song_id=$1 last;
 rewrite ^/client_dev.php/play/([a-zA-Z0-9]+|all)$ /proxy_play.php?unique_song_id=$1 last;
 
 location ~ ^/(proxy_play)\.php$ {
 include         /etc/nginx/fastcgi_params;
 fastcgi_param   SCRIPT_FILENAME  $document_root$fastcgi_script_name;
 fastcgi_pass    127.0.0.1:9000;
 }
 
 location / {
 index index.php;
 try_files $uri /index.php?$args;
 }
}

 

Ne reste plus qu’a rediriger les ports et se connecter sur l’URL choisie port 8095 (par défaut)

A l’usage :

  • Plutôt propre
  • Rapide
  • Léger

Mais

  • Pas très maintenu
  • Pas ultra sexy
  • Pb d’encodage (peut sûrement se résoudre)
  • Pas d’album art (peut sûrement se résoudre)
  • Listes de lecture capriceuses

 

Autres serveurs musicaux (non testés)

Ampjuke

Ampjuke

Pré-requis matériel au dela des capacités du Dockstar :

« Access to a Computer w. min. 500MB memory, and a CPU running not less than 800MHz. »

Music Browser

Music Browser

Plus maintenu depuis 2009 et pas dans mes goûts…

Jinzora

Jinzora – Jinzora :: Free Your Media!

GNUMP3d

GNUMP3d [GNU MP3/Media Streamer]

Plus maintenu depuis 2007…

Tunez

Tunez

Plus maintenu depuis 2004 (qui dit mieux)

 

 

Sources :

Web based media manager

ampache – jinzora – subsonic – mp3act – netjuke etc….

Retour d’experience sur streaming souhaité (Ampache, Jinzora,…)

My Favorite Ubuntu Linux Music Server – 1000umbrellas.com

Zeya :

Subsonic :

Ampache :

Zina :

Blofeld

Streeme :

Solutions à base de MPD + IceCast

Les commentaires sont fermés.