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.
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
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
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…)
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
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.
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
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:
Enfin j’ajoute un plugin sur mon wordpress pour intégrer la radio: