Voici le troisième article consacré à la mise en place d’une webradio avec MPD et Icecast. Dans notre précédent article, nous avons décrit la mise en oeuvre d’un serveur de flux audio sur un serveur dédié. Aujourd’hui, nous allons rendre notre webradio plus fonctionnelle.
- Travailler en ligne de commande
- MPD pour le commun des mortels
- Installer et configurer MPD sur ma station de travail
- Débogage de SELinux
- Reconfigurer MPD sur le serveur dédié
- Synchroniser les fichiers locaux avec le serveur dédié
- Radio Novak
Travailler en ligne de commande
Évidemment, rien ne m’empêche de transférer mes fichiers audio vers mon serveur et d’y établir mes playlists. Dans ce cas, tout se passerait en ligne de commande.
rsync
ouscp
pour transférer les fichierschown
etchmod
pour définir les permissions qui vont bienncmpcpp
pour définir les playlists
Après avoir expérimenté un peu, j’ai trouvé une solution plus pratique pour gérer le contenu à proprement parler.
MPD pour le commun des mortels
Le serveur MPD permet de tourner avec les droits d’un utilisateur du commun des mortels. Je vais donc installer MPD pour mon utilisateur kikinovak
local.
Le contenu de la radio sera stocké dans ~/Webradio/music
et ~/Webradio/playlists
.
Ensuite, je crée un utilisateur kikinovak
sur le serveur dédié, et je reconfigure MPD pour qu’il tourne avec les droits de cet utilisateur.
Il ne me reste plus qu’à rédiger un petit script qui me permette de synchroniser le contenu de l’arborescence ~/Webradio
locale et distante, et le tour est joué.
Installer et configurer MPD sur ma station de travail
Sur ma station de travail locale, je crée l’arborescence de ma webradio.
$ mkdir -pv ~/Webradio/{music,playlists} mkdir: création du répertoire « /home/kikinovak/Webradio » mkdir: création du répertoire « /home/kikinovak/Webradio/music » mkdir: création du répertoire « /home/kikinovak/Webradio/playlists »
J’installe le serveur MPD et le client qui va avec.
# yum install mpd ncmpcpp
Après avoir sauvegardé le fichier de configuration d’origine, j’édite /etc/mpd.conf
comme ceci.
music_directory "/home/kikinovak/Webradio/music" playlist_directory "/home/kikinovak/Webradio/playlists" db_file "/home/kikinovak/Webradio/mpd.db" log_file "/var/log/mpd/mpd.log" state_file "/home/kikinovak/Webradio/mpdstate" user "kikinovak" group "kikinovak"
Je configure la sortie audio comme ceci.
audio_output {
type "alsa"
name "My ALSA Device"
device "hw:0,0" # optional
mixer_type "hardware" # optional
mixer_device "default" # optional
mixer_control "PCM" # optional
mixer_index "0" # optional
}
...
# audio_output {
# type "pulse"
# name "My Pulse Output"
# server "remote_server" # optional
# sink "remote_server_sink" # optional
#}
Débogage de SELinux
Lorsqu’on fait tourner MPD en tant qu’utilisateur simple, SELinux affiche toute une série d’alertes qu’il est nécessaire de corriger. Voici en gros ce que j’ai dû faire.
Problème n° 1 :
SELinux is preventing /usr/bin/mpd from search access on the directory /home/kikinovak.
Solution :
# setsebool -P mpd_enable_homedirs 1
Problème n° 2 :
SELinux is preventing /usr/bin/mpd from search access on the directory Webradio.
Solution :
# ausearch -c 'mpd' --raw | audit2allow -M my-mpd # semodule -i my-mpd.pp
Problème n° 3 :
SELinux is preventing /usr/bin/pulseaudio from read access on the directory /home/kikinovak.
Solution :
# ausearch -c 'pulseaudio' --raw | audit2allow -M my-pulseaudio # semodule -i my-pulseaudio.pp
À partir de là, tout semble rentré dans l’ordre.
# sealert -a /var/log/audit/audit.log 100% done found 0 alerts in /var/log/audit/audit.log
Reconfigurer MPD sur le serveur dédié
À présent, je crée un utilisateur kikinovak
sur le serveur, je définis les répertoires ~/Webradio/music
et ~/Webradio playlists
, je reconfigure MPD comme je l’ai fait sur ma station de travail, mais en conservant ma sortie audio de type shout
redirigé vers Icecast.
music_directory "/home/kikinovak/Webradio/music" playlist_directory "/home/kikinovak/Webradio/playlists" db_file "/home/kikinovak/Webradio/mpd.db" log_file "/var/log/mpd/mpd.log" state_file "/home/kikinovak/Webradio/mpdstate" user "kikinovak" group "kikinovak"
Là aussi, je devrai procéder à une série d’ajustements avec SELinux. Pour plus de détails, on pourra lire cet article.
Synchroniser les fichiers locaux avec le serveur dédié
Mon utilisateur kikinovak
devra être capable de se connecter par clé SSH au serveur dédié. Une fois que c’est fait, il ne me reste plus qu’à écrire un petit script qui me permet de synchroniser mon arborescence locale avec celle du serveur dédié. Voici à quoi cela peut ressembler.
#!/bin/bash
#
# Script pour synchroniser Radio Novak avec le serveur
HOST=alphajet.microlinux.fr
MPDDIR=/home/kikinovak/Webradio
ping -c 1 $HOST >/dev/null 2>&1 ||
{
echo "L'hôte distant n'est pas joignable"
exit
}
echo
echo ":: Transfert des fichiers audio..."
echo
rsync -av --delete $MPDDIR/music/ $HOST:/$MPDDIR/music/
echo
echo ":: Transfert des playlists..."
echo
rsync -av --delete /$MPDDIR/playlists/ $HOST:/$MPDDIR/playlists/
Radio Novak
Depuis quelques jours, ma petite webradio tourne non-stop, avec quelque chose comme 30 heures de compils qui passent en boucle.
Vous pouvez utiliser n’importe quel lecteur audio digne de ce nom pour ouvrir le flux. Avec VLC par exemple, ouvrez Média > Ouvrir un flux réseau et saisissez l’URL suivante.
http://www.radionovak.com:8000/radionovak.ogg
Ping : Ma propre webradio avec MPD et Icecast (3) - My Tiny Tools
Bonjour,
Le projet est intéressant, cette partie montre bien, qu’il faut trouver le moyen d’alimenter simplement en programmes audio cette radio, sinon elle ne sert à rien.
Aux RMLL 2017 javais assisté a une présentation de la gestion de stations radio (bande FM) avec Rivendell Audio (GPL), à la fin, avec des auditeurs de cette conférence, nous avions parlé des webradios.
Je sais que des webradios (ie http://www.icradio.com/) utilisent Rivendell, qui est un logiciel d’automatisation, que j’avais trouvé complet, avec une mise en œuvre sans doute assez complexe.
Plus simplement, il existe Studiobox, qui est une distribution, pour réaliser facilement une webradio avec Icecast.
http://www.education-aux-medias.ac-versailles.fr/studiobox/
Iso Live ou installable. Jamais utilisé, Airtime est choisi pour le séquenceur, il fonctionne comme un agenda, au lieu de mettre des rendez vous, on glisse des programmes musicaux. (play list)
https://www.sourcefabric.org/en/airtime/
Pour ma part j’utilise Cantata comme client d’un mpd local et d’un mpd distant (serveur audio dans un Raspberry branché sur ma chaîne) décrit sur mon site web.
mpd très bon choix !
Bonne continuation
AR
Cool, merci pour cette série de tuto 🙂
Ta radio n’est plus en ligne ? dommage