Créer sa webradio

J’ai déjà fait ça il y a une dizaine d’années, et même si il y a pléthore de webradios, avoir sa propre diffusion sonore me permet d’écouter la musique que j’ai choisi sans dépendre d’un site et/ou d’un abonnement.
Evidemment cela implique d’avoir sa propre discothèque.
Dans mon cas, il va nous falloir une machine émetteur (chez soi) et une machine diffuseur (hébergé). C’est la configuration que j’ai choisie mais tout pourrait être regroupé sur une machine à la maison avec une redirection de port.

Pour émettre je vais utiliser une machine windows avec VirtualDJ pro, mais il y beaucoup d’autres logiciels qui pourraient remplir cette tache.
Pour diffuser, je vais utiliser une VM (machine virtuelle) sous VMWARE avec une distribution Debian et le serveur Icecast.

Voilà à quoi ça va ressembler, si j’ai le temps j’intègrerais un lecteur audio dans le site.
Diagramme1

On va commencer par l’installation du diffuseur. Je pars de la version Icecast 2.4.1.

J’utilise une Debian installation minimale, on va donc utiliser une connection SSH:
Commençons par installer les paquets nécessaire pour la compilation d’Icecast

root@server-icecast:$
apt-get update
apt-get upgrade
apt-get install build-essential libogg0 libvorbis-dev libxml2 libshout3 libxslt1-dev

On va faire le téléchargement, décompresser et compiler

root@server-icecast:$
cd /usr/src
wget http://downloads.xiph.org/releases/icecast/icecast-2.4.1.tar.gz
tar -xzvf icecast-2.4.1.tar.gz
cd icecast-2.4.1
./configure
make && make install

Jusque là Icecast est installé, mais il va falloir traiter les détails (importantsles détails, très importants…)

root@server-icecast:$
cp -R /usr/local/share/icecast/* /usr/icecast/
cp /usr/local/share/icecast/doc/icecast.xml.dist /usr/local/share/icecast/
cd /usr/local/share/icecast/
mv icecast.xml.dist icecast.xml

Occupons nous des logs

root@server-icecast:$
mkdir /var/log/icecast
touch /var/log/icecast/error.log
touch /var/log/icecast/access.log
chown -R nobody:nogroup /var/log/icecast

Je configure le fichier de config sur la base de ce que je viens de faire. Je vous invite à mettre le fichier de config icecast.xml dans un autre chemin que celui du web. Pour cette procédure afin de simplifier, je vais laisser les fichiers au même endroit, mais si vous faites un serveur en prod, il est préférable de faire cette modification.

root@server-icecast:$
nano icecast.xml

Il faudra modifier LES CARACTERES EN MAJUSCULES pour mettre les paramètres personnalisés.

<?xml version="1.0"?>
<icecast>
<location>LE WEB</location>
<admin>adminATinfos-reseau.com</admin>

<limits>
<clients>100</clients>
<sources>2</sources>
<queue-size>524288</queue-size>
<client-timeout>30</client-timeout>
<header-timeout>15</header-timeout>
<source-timeout>10</source-timeout>
<burst-on-connect>1</burst-on-connect>
<burst-size>65535</burst-size>
</limits>

<authentication>
<!-- Sources log in with username 'source' -->
<source-password>MOTDEPASSE</source-password>
<!-- Relays log in with username 'relay' -->
<relay-password>MOTDEPASSE</relay-password>
<!-- Admin logs in with the username given below -->
<admin-user>admin</admin-user>
<admin-password>MOTDEPASSE</admin-password>
</authentication>

<hostname>MONIP</hostname>
<listen-socket>
<port>8000</port>
<bind-address>MONIP</bind-address>
<shoutcast-mount>/stream</shoutcast-mount>
</listen-socket>

<http-headers>
<header value="*" name="Access-Control-Allow-Origin"/>
</http-headers>

<fileserve>1</fileserve>
<paths>
<basedir>/usr/local/share/icecast</basedir>
<logdir>/var/log/icecast</logdir>
<webroot>/usr/local/share/icecast/web</webroot>
<adminroot>/usr/local/share/icecast/admin</adminroot>
</paths>

<logging>
<accesslog>access.log</accesslog>
<errorlog>error.log</errorlog>
<loglevel>3</loglevel>
<!-- 4 Debug, 3 Info, 2 Warn, 1 Error -->
<logsize>10000</logsize>
<!-- <logarchive>1</logarchive> -->
</logging>

<security>
<chroot>0</chroot>
<changeowner>
<user>nobody</user>
<group>nogroup</group>
</changeowner>
</security>
</icecast>

Allez je démarre le serveur

root@server-icecast:$
icecast -b -c /usr/local/share/icecast/icecast.xml

Voilà pour vérifier je fais http://MONIP:8000 et j’obtiens la page web par défaut.

Maintenant, passons donc à la partie VirtualDJ. Je vais connecter VirtualDJ avec Icecast2:
Dans VirtualDJ aller dans paramètres et configurez comme indiqué ci-dessous:

virtualdj1

Enfin j’ajoute un plugin sur mon wordpress pour intégrer la radio:

Leave Comment

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