Ma propre webradio avec MPD et Icecast (3)

WebradioVoici 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

É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 ou scp pour transférer les fichiers
  • chown et chmod pour définir les permissions qui vont bien
  • ncmpcpp 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

VLC Icecast

Ce contenu a été publié dans CentOS, Documentation Microlinux, avec comme mot(s)-clé(s) , , . Vous pouvez le mettre en favoris avec ce permalien.

2 réponses à Ma propre webradio avec MPD et Icecast (3)

  1. Ping : Ma propre webradio avec MPD et Icecast (3) - My Tiny Tools

  2. André Ray dit :

    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

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.