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 : Introducing Blofeld
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
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
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
Plus maintenu depuis 2004 (qui dit mieux)
Sources :
ampache – jinzora – subsonic – mp3act – netjuke etc….
Retour d’experience sur streaming souhaité (Ampache, Jinzora,…)
My Favorite Ubuntu Linux Music Server – 1000umbrellas.com
Zeya :
- Zeya: bring your music anywhere
- Zeya: bring your music anywhere — I Still Know What You Learned Last Summer
- Zeya-bring your music anywhere with a web browser
Subsonic :
- Subsonic » Free Music Streamer
- [Tuto]Subsonic: Votre musique, partout. | Gizeek
- Install Subsonic on Ubuntu Server : installation du WAR sur Tomcat
Ampache :
- Ampache
- Web based media manager that suits me best – Ampache
- Viridian – python based front-end for an Ampache
- Ecouter sa musique depuis un serveur distant grâce à MPD et AMPACHE
- Ampache… et votre collection de musique vous suit partout
Zina :
Blofeld
Streeme :
Solutions à base de MPD + IceCast