Installation
Icecast2 n’est pas un logiciel qui évolue beaucoup. La version dans les dépots Debian est donc relativement à jour, nous choisissons donc de l’utiliser. Pour ce faire on utilisera la commande :
- sudo apt-get install icecast2
APT se chargera d’installer le serveur ainsi que l’ensemble de ses dépendances.
Première configuration de base
Le fichier de configuration d’Icecast2 (icecast.xml
) se trouve dans le répertoire /etc/icecast2
, on utilisera donc la commande suivante pour le modifier :
- sudo nano /etc/icecast2/icecast.xml
Attention : le fichier de configuration d’Icecast2 est au format XML, qui ne permet pas d’erreurs dans la syntaxe. Une erreur fréquente est l’oubli de fermeture d’une balise. Si une erreur existe dans le fichier de configuration et que le serveur ne démarre pas, on peut obtenir certaines informations concernant ladite erreur dans les fichiers de logs et notamment /var/log/icecast2/error.log
.
Changer les mots de passe d’administration et de sources
La première chose à faire est de modifier les mots de passe par défaut à la fois pour l’administration mais aussi pour la connexion des sources.
Le code dans le fichier de configuration contenant ces mots de passe par défaut est :
- <authentication>
- <!-- Sources log in with username 'source' -->
- <source-password>hackme</source-password>
- <!-- Relays log in username 'relay' -->
- <relay-password>hackme</relay-password>
- <!-- Admin logs in with the username given below -->
- <admin-user>admin</admin-user>
- <admin-password>hackme</admin-password>
- </authentication>
Il suffit de modifier les valeurs de hackme
et de admin
.
NB : la signification de ces options sont :
-
source-password
: mot de passe principal utilisé par les sources pour se connecter. Icecast2 permet d’avoir une identification spécifique par point de montage avec nom d’utilisateur et mot de passe mais ce mot de passe permet de se connecter à l’ensemble des points de montage en utilisant le nom d’utilisateursource
[1] ; -
relay-password
: mot de passe utilisé pour les relais avec comme nom d’utilisateurrelay
comme poursource-password
; -
admin-user
: nom d’utilisateur pour accéder à l’interface web d’administration du serveur (nomalementhttp://ip_ou_nom_du_serveur:8000
par défaut) ; -
admin-password
: mot de passe administrateur de cette même interface ;
Modifier les informations de base du serveur
Il est ensuite important de modifier au moins le hostname
du serveur qui sert à communiquer avec les annuaires de flux ainsi que la création des liens dans les playlistes. Cela fait partie des informations de base du serveur comme sa location
et son admin
qui, pour ces dernières sont des données facultatives.
On modifiera ces données de la sorte :
- <icecast>
- <admin>email@admin_serveur.tld</admin>
- <hostname>ssdomaine.admin_serveur.tld</hostname>
- <location>Somewhere on earth</location>
- .....
- <!-- Suite de la configuration -->
- .....
- </icecast>
Création d’un point de montage de base
Il est nécessaire ensuite de créer un point de montage de base sur lequel le client émetteur pourra se connecter pour envoyer sons ou vidéos et sur lequel également les clients auditeurs pourront recevoir le flux.
Il suffit d’ajouter dans la configuration quelque chose du genre (des informations sont mises en commentaire) :
- <icecast>
- ......
- <mount>
- <!-- Nom du point de montage avec ou sans extension (.mp3,.ogg) -->
- <mount-name>/point_test</mount-name>
- <!-- Nom d'utilisateur spécifique à ce point,
- si vous utilisez de vieux clients pour transmettre le flux, il faut mettre "source"
- comme nom d'utilisateur -->
- <username>utilisateur_du_point</username>
- <!-- Mot de passe spécifique à ce point -->
- <password>pass_pour_ce_point</password>
- <!-- Nombre d'utilisateur maximal -->
- <max-listeners>500</max-listeners>
- </mount>
- ......
- </icecast>
Tester la configuration
Afin de tester la configuration, il est nécessaire de changer d’utilisateur pour icecast2
tout d’abord :
- su icecast2 -s /bin/bash
Puis de lancer le serveur :
- icecast2 -c /etc/icecast2/icecast.xml
Vous devriez alors pouvoir voir le serveur à l’adresse http://ssdomaine.admin_serveur.tld:8000
et voir ses fichiers de logs dans le répertoire /var/log/icecast2
.
Lancement en démon
Le démon Icecast2 est désactivé par défaut (utile le temps de bien régler la configuration), pour activer son fonctionnement, il suffit de modifier son fichier de configuration par défaut (fichier de configuration du script d’init) :
- sudo nano /etc/defaults/icecast2
Puis de modifier la ligne :
- ENABLE=false
En :
- ENABLE = true
Vous aurez alors la possibilité de lancer le démon [2] :
- sudo /etc/init.d/icecast2 start
Si vous n’avez pas modifié les données de port
, le serveur devrait dorénavant être accessible à l’adresse : http://domaine.tld:8000
ainsi que toutes les autres adresses pointant sur le serveur si on ajoute le port :8000
à l’URL.
Résolution de quelques problèmes
Problème : le serveur a du mal à redémarrer
NB : Apparemment ce problème est résolu dans les dernières versions de Debian.
Il se peut qu’en utilisant la commande /etc/init.d/icecast2 restart
le serveur s’arrête mais ne se relance pas, le problème étant que le serveur n’a pas le temps de s’éteindre avant que l’on essaie de le relancer. Pour ce faire, il peut être nécessaire d’augmenter le temps d’attente avant de le démarrer à nouveau. On édite d’abord le script de lancement :
- nano /etc/init.d/icecast2
et de modifier au niveau de l’action de restart en fin de fichier :
- restart)
- echo -n "Restarting $DESC: "
- start-stop-daemon --stop --oknodo --quiet --exec $DAEMON
- sleep 1
- start-stop-daemon --start --quiet --chuid $USERID:$GROUPID \
- --exec $DAEMON -- -b -c $CONFIGFILE
- echo "$NAME."
- ;;
en par exemple (seule la valeur de sleep
est modifiée) :
- restart)
- echo -n "Restarting $DESC: "
- start-stop-daemon --stop --oknodo --quiet --exec $DAEMON
- sleep 3
- start-stop-daemon --start --quiet --chuid $USERID:$GROUPID \
- --exec $DAEMON -- -b -c $CONFIGFILE
- echo "$NAME."
- ;;
Le lien des listes XSPF sur la partie web ne fonctionnent pas
NB : Apparemment ce problème est résolu dans les dernières versions de Debian.
Si lorsque sur le serveur web d’icecast vous cliquez sur une liste de lecture au format XSPF et que vous vous retrouvez sur une erreur 404 ou du type Could not parse XSLT file
, c’est que vous avez installé icecast avec le paquet de Debian Lenny dans lequel manque un fichier xslt.
On peut voir cela dans les logs du serveur icecast /var/log/icecast2/error.log
sous la forme :
- [2011-01-19 23:10:00] WARN xslt/xslt_get_stylesheet Error checking for stylesheet file "/usr/share/icecast2/admin/xspf.xsl": No such file or directory
Ce fichier n’est même pas présent (le 15 janvier 2011) dans le paquet officiel actuel d’Icecast 2 2.3.2.
Pour palier à cela, nous allons récupérer les sources svn d’icecast2 et copier ledit fichier au bon endroit avec les commandes suivantes :
- # On vérifie que subersion est bien installé
- sudo apt-get install subversion
- # On récupère ensuite les sources dans notre Home
- cd ~
- svn co http://svn.xiph.org/icecast/trunk/icecast/ icecast
- # On finit en copiant le bon fichier
- cp icecast/admin/xspf.xsl /usr/share/icecast2/admin/xspf.xsl
Et le tour est joué, il vous suffit de réessayer de télécharger une des listes de lecture au format XSPF et tout devrait être revenu en ordre.