Ecouter sa musique partout avec Subsonic

Pour continuer sur l'auto-hébergement, le service suivant concerne le streaming audio. Je possède sur mon serveur toute ma bibliothèque audio. Je cherchais depuis longtemps un service web pouvant s'installer sur un serveur et permettant de diffuser depuis mon serveur toute ma musique.

Après quelques recherches, je suis tombé sur Subsonic qui est un service auto-hébergeable et qui dispose de beaucoup de fonctionnalités :

  • La lecture en streaming (via un petit lecteur en flash) de fichiers audios.
  • Le support de formats audio libres comme le Ogg Vorbis. Dans les faits, le ogg est converti à la volée en mp3 par ffmpeg (ou maintenant avconv) pour la lecture sur le lecteur flash. Pour info, j'utilise l'application k3b pour convertir mes CD audios en ogg.
  • La possibilité d'ajouter des flux de Podcasts qui seront automatiquement téléchargés dans le dossier configuré.
  • L'ajout de flux de web-radios.
  • La gestion de plusieurs utilisateurs et playlists associées.
  • La gestion des jaquettes, paroles des chansons, lien vers la fiche Wikipédia de l'artiste ou de l'album.

Subsonic est un logiciel libre sous license GPL3, mais payant pour débloquer des fonctionnalités avancées. Du fait de sa license GPL3, les forks sont autorisés, et il existe une version entièrement débloquée (sans le système de license) disponible sur ce dépôt GitHub.

L'installation se fait très facilement en suivant les instructions sur le site officiel. Pour rendre le service disponible depuis l'extérieur, j'ai redirigé un sous domaine vers le port de l'application subsonic en utilisant la fonctionnalité de Proxy par Apache. Voici la configuration (Subsonic est en écoute sur le port 4040) :

<VirtualHost *:80>

    ServerName music.monsite.com
    ProxyRequests Off
    <Proxy *>
            Order deny,allow
            Allow from all
    </Proxy>
    ProxyErrorOverride On
    ProxyPass / http://localhost:4040/
    ProxyPassReverse / http://localhost:4040/
    <Location />
        Order allow,deny
        Allow from all
    </Location>

</VirtualHost>

Adieu les lecteurs audio sur les machines locales (et la prise de tête pour trouver un protocole de diffusion multi-plateforme), les services centralisés type Deezer ou Spotify ! Je peux enfin écouter MA musique partout où je le souhaite grâce à cette aplication très complète !

Changer de moteur de recherche

Pour continuer la série sur mes manières de me séparer des services centralisés que j'utilisais auparavant, après avoir changé de navigateur, on continue avec un des services qu'on utilise le plus : le moteur de recherche. Le moteur de recherche est un service très important.

Pourquoi vouloir me séparer de Google pour mes recherches ?

  • Google est un service hyper-centralisé, à tel point que pour de nombreuses personnes Google est Internet.
  • Google récolte sans complexe toutes nos données de navigation pour les vendre à des annonceurs qui affichent des pubs ultra-ciblées entre autres.
  • Google trie les résultats de recherche et effectue une sélection des résultats qu'il présente (selon nos précédentes recherches, cookies, notre profil, les volontés des gouvernements ou ayants-droit, etc.). Google n'est donc pas du tout un moteur de recherche neutre.

Différentes alternatives existent, l'une d'elle qui est de plus en plus connue s'appelle DuckDuckGo. C'est un moteur de recherche qui se veut neutre, et respectueux de la vie privée. Tout ceci est expliqué (par DuckDuckGo) sur ce site : http://donttrack.us/.

Pour avoir essayé ce moteur il y a 2 ou 3 ans, je n'avais pas trouvé les résultats pertinents du tout. Aujourd'hui après plusieurs semaines d'utilisation j'ai réussi à retrouver le confort de la recherche et la pertinence des résultats que je pouvais avoir sur Google. Voici les différentes adaptations que j'ai faites :

  • Installation du plug-in DuckDuckGo pour Firefox
  • Personnalisation des préférences de DuckDuckGo (sur la page de recherche, aller dans les Paramètres et choisir la Région et la langue préférée pour les résultats).
  • Utilisation massive des !bang. Cette liste de mots clefs permet d'effectuer des recherches directement sur d'autres moteurs de recherche, par exemple printf !cpp ira directement chercher le mot printf sur le site cplusplus.com. Le gain de temps est très vite appréciable ! De plus, ce point est très intéressant car le fait de pouvoir lancer des recherches directement sur d'autres site que le moteur de recherche en lui-même va dans le sens de la décentralisation que je recherche.

A vous d'essayer !

Installer Mozilla Sync sur son serveur

Premier article d'une série consacrée à l'auto-hébergement. J'ai indiqué dans mon article précédent que je souhaitais petit à petit reprendre le contrôle de mes données, et cela passe notamment par trouver des alternatives libres et "auto-hébergeables" des services qui stockent mes données personnelles sur leurs serveurs.

Je dispose d'un petit serveur basse consommation allumé en permanence chez moi, et qui me sert principalement de NAS sur le réseau local, et héberge quelques services et sites en externe.

J'ai décidé de commencer par changer de navigateur. Auparavant j'étais sur Google Chrome, puis Chromium, avec pour principale raison la synchronisation automatique des données (onglets, favoris et plugins) sur toutes les machines que j'utilise. De fait, Google possède des informations sur tous mes centres d'intérêt, ce qui est pour lui des données intéressantes à revendre, par exemple à des régies publicitaires pour mieux me cibler.

Firefox possède également une solution de synchronisation des données (qui n'existait pas au moment ou j'ai changé de navigateur), appelée Mozilla Sync. Par défaut, la fonction vous propose d'héberger vos données à synchroniser sur le serveur Sync de Mozilla, ce qui ne résout pas le problème initial.

Mais là oà ça devient intéressant, c'est que la partie serveur de Sync est libre, et qu'on peut l'installer sur son propre serveur ! Ainsi, mes données restent bien au chaud chez moi (les données sont cryptées lors de la synchronisation, rien ne circule en clair).

Pour l'installation, je vous laisse aller voir directement les instructions d'installation sur le wiki de Mozilla.

Le seul problème que j'ai eu à l'installation, qui est très bête, mais ça ne m'a pas sauté aux yeux directement. Dans le cas où la connexion au service ne fonctionne pas, et que le log indique :

IOError: [Errno 13] Permission denied: '/tmp/sync-error.log'

Il faut supprimer le fichier /tmp/sync-error.log qui n'a pas eu les bons droits lors de sa première création.

Au passage, voici la configuration Apache, si ça peut en aider certains (les sources sont installées dans /opt/mozilla/server-full) :

<Directory /opt/mozilla/server-full>
  Order allow,deny
  Options -Indexes +ExecCGI
  Allow from all
</Directory>

<VirtualHost *:80>
  ServerName sync.monsite.com
  DocumentRoot /opt/mozilla/server-full
  WSGIProcessGroup sync
  WSGIDaemonProcess sync user=sync group=sync processes=2 threads=25
  WSGIPassAuthorization On
  WSGIScriptAlias / /opt/mozilla/server-full/sync.wsgi
  CustomLog /var/log/apache2/ff-sync-access.log combined
  ErrorLog  /var/log/apache2/ff-sync-error.log
</VirtualHost>

Comme indiqué sur le wiki de Mozilla, ne pas oublier, une fois que vous avez créé vos comptes d'interdire la création de nouveaux comptes dans la configuration, pour éviter d'éventuels robots spammeurs. Dans le fichier etc/sync.conf, décommenter la ligne :

allow_new_users = false

Puis redémarrer le serveur Apache comme à chaque modification de ce fichier.

Enfin, afin de garantir que mes données ne sont pas perdues, j'ai terminé l'installation en ajoutant à mon script de backup les données de la base stockant les données du serveur Sync (au pire, les données restent en local sur mes différents ordinateurs).

Mes nouvelles "résolutions"

Cela commence à faire un petit moment que je n'ai rien publié sur mon site, et ce pour diverses raisons (déménagement, boulot, activités annexes,...). Bref, toujours est-il qu'après cette petite pause j'ai pas mal de choses à partager.

Pour les fidèles du blog, vous pourrez commencer par remarquer que le site a changé de tête, car j'ai quitté le traditionnel Wordpress pour essayer un générateur de site statique Pelican écrit en Python. Au final, ça ne change pas grand-chose pour le visiteur du site (à part qu'il se charge beaucoup, beaucoup plus vite), mais ça change énormément pour moi pour la rédaction des articles et la facilité de publication et de maintenance (puisqu'il y en a pratiquement pas!). Finit les mises à jour Wordpress qui cassent tout à chaque fois ! ;-)

Je pense que je reviendrai à ce sujet dans quelques temps, après avoir pu me faire un peu plus d'expérience avec cet outil.

Dorénavant également, il n'est plus possible de poster des commentaires sur le site, et les commentaires qui existaient ont été supprimés. Ceci est lié au fait que le site est maintenant statique (comprendre uniquement des fichiers .html). J'aurais pu installer Disqus qui permet de gérer des commentaires dans ce genre de cas, mais j'ai choisi de ne pas utiliser cet outil externe (dont je ne possède pas les données), mais de revenir au bon vieux mail pour échanger avec moi (adresse à la fin de cet article).

Enfin, j'essaye de plus en plus de mettre en place des services en auto-hébergement chez moi pour tenter de remplacer tous les services centralisés que j'utilise (Google, Dropbox, Deezer, et encore bien d'autres). L'idée a pas mal germée depuis la fermeture de Google Reader, et depuis que j'ai vu la fameuse conférence Internet ou Minitel 2.0 de Benjamin BAYART, et que je vous conseille de voir.

Une autre série d'articles à venir viendra donc expliquer en détails quelles solutions j'ai mis en œuvre pour remplacer ces services.

Radio Internet sur Raspberry Pi, partie 3 : commande à distance

Nous avons précédemment vu comment installer un serveur audio sur le Raspberry Pi, et comment y ajouter des flux de radio internet.

Dans cet article, nous allons voir comment effectuer des commandes, sans passer par une connexion ssh, mais en utilisant une application smartphone connecté sur le réseau local.

Dans un premier temps, il faut configurer mpd sur le Raspi pour autoriser des commandes à distance. Dans le fichier /etc/mpd.conf, modifier la variable bind_to_address et la modifier (le paramètre par défaut étant "localhost") :

bind_to_address         "any"

Puis redémarrer mpd :

sudo /etc/init.d/mpd restart

On peut donc maintenant commander mpd à distance.

Ensuite il faut rechercher une application sur votre smartphone, en tapant "mpd" comme mot clef. Il existe de nombreuses applications permettant de contrôler mpd à distance. Attention, ces applications ne vont pas rediriger le flux audio vers votre téléphone. Ce ne sont que des télécommandes.

Sur iPhone, j'ai choisi MPoD. J'ai regardé pour Android, il existe tout un tas d'applications similaires.

Voyons maintenant comment configurer MPoD pour Iphone. Je pense que c'est similaire avec une autre application.

Une fois l'application lancée, il faut aller dans le menu "Players" pour configurer le serveur mpd :

{filename}../images/Add_Player_button.png

Ensuite, ajouter un nouveau lecteur :

image:: {filename}../images/Add_Player.png

Configurer le nom du lecteur, ainsi que l'adresse IP. Le reste des paramètres est à laisser par défaut, à moins que vous n'ayez changé des paramètres par défaut sur le serveur mpd :

{filename}../images/Add_Player_2.png

Enfin, si tout est normal, le serveur est ajouté, et l'icône réseau est allumée à côté du nom (sinon, elle sera grisée) : {filename}../images/Add_Player_3.png

Enfin, quittez le menu en appuyant sur "Done", et vous devriez voir la liste de lecture avec les différentes stations de radio ajoutées :

{filename}../images/MPoD_main.png

A partir de là, il est possible de changer de station, changer le volume, éditer la playlist, etc. En revanche, la plupart des stations de radio en streaming ne renseignent pas les champs "Titre" et "Artiste", et par conséquent la liste de lecture n'est pas très user friendly...

A ce stade, vous disposez donc d'un Raspberry Pi configuré pour sortir des flux de stations radio internet. Vous pouvez tout à fait en rester là, mettre le Raspi derrière votre chaîne ou enceintes, et profiter de toutes les radios disponibles sur internet !

{filename}../images/Raspi_Power_ethernet_audio.jpg

Dans la suite, je souhaite intégrer le Raspi dans un boîtier maison avec enceintes, pour disposer d'une radio internet autonome, avec des boutons et un écran pour changer les stations, le volume et visualiser le nom des stations.

Bien évidemment, mpd est aussi capable d'aller chercher des fichiers audio autres que des flux radio sur votre réseau, et on peut donc tout à fait transformer le Raspi en Media Center audio ! ;-)