LeWiki404

IcecastDoc3

PagePrincipale :: DerniersChangements :: DerniersCommentaires :: ParametresUtilisateur :: Vous êtes 38.107.191.115
retour à l'index Icecast2


Le fichier de conf d'Icecast 2




Icecast 2 utilise un fichier de configuration au format xml, qui s'appelle icecast.xml mais que vous pouvez nommer pierrette.xml si vous êtes "in love" de pierrette..
voici donc les différentes parties du fichier icecast.xml :


limits


<limits/>

<clients>100</clients>
<sources>2</sources>
<threadpool>5</threadpool>
<queue-size>102400</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>65536</burst-size>

<limits>

cette section contient des réglages au niveau du serveur, qui en général n'ont pas besoin d'être changés. n'effectuez des changement la dessus que si vous savez ce que vous faites, vous voila prévenu.

clients
nombre total de clients simultanés au serveur. les auditeurs sont considérés comme client, mais aussi l'accès à n'importe quelle statistique. en fait, ce sont les connexions maximums simultanées au serveur, quelque soit le point de montage (mountpoint) et l'utilisation de la connexion.

sources
indiquez ici le nombre maximum de sources acceptées par le serveur.

threadpool
ceci est le nombre de "threads" qui sont utilisés pour accueillir les connexions des clients. vous aurez peut être à augmenter cette valeur si votre serveur est très sollicité, la valeur 5 par defaut est suffisante pour un serveur au traffic faible ou moyen.

queue-size
non, ceci n'a rien de cochon...c'est le nombre de bytes (non, je répete, ce n'est pas cochon) qu'il y'a en attente pour les auditeurs. un auditeur peut "ramer" (lag) temporairement, a cause de congestion reseau, dans ce cas il y'a une queue utilisée pour chaque auditeur. si cette queue dépasse la valeur indiquée, l'auditeur sera déconnecté à préciser, c'est pas très clair tout ça, si j'ai bien compris, si un auditeur lag au dela de la limite, il est déconnecté

client-timeout
ça n'a pas l'air d'être utilisé (sic)...

header-timeout
la durée maximum d'attente pour que la connexion d'un client se fasse (en secondes). normalement il n'y a pas lieu de modifier cette valeur.

source-timeout
si le client source (le dj) n'envoit pas de données au dela de cette période (en secondes), la connexion sera annulée par le serveur.

burst-on-connect
Avec cette option, une grosse quantité de données est envoyé au client par le serveur. Cela à pour effet de réduire la durée du démarrage du stream pour l'auditeur. En fait, les lecteurs multimédias ont des caches pour les connexions réseau, cache qui doit se remplir avant de jouer le stream. Le seul inconvéniant du burst-on-connect, c'est l'augmentation du décallage (latence) entre la lecture de stream par l'auditeur par rapport à ce que la source diffuse. Si cela vous gène, n'utilisez pas cette fonction. La latence est dépendante du bitrate, mais par exemple pour un stream en 128kbps on double la latence avec le burst-on-connect, passant de 1.5s à 3s.

burst-size
Le burst-size indique la quantité de données en bytes qui sont envoyés au client lors du burst-on-connect. La valeur de 64kbyts utilisée par défaut doit convenir pour la plupart des lecteur multimédia, il est donc en général inutile de changer cette valeur. Ce réglage s'applique à tous les mountpoint de votre serveur icecast.



authentication


<authentication>

<source-password>hackme</source-password>

<relay-user>relay</relay-user>

<relay-password>hackme</relay-password>
<admin-user>admin</admin-user>
<admin-password>hackme</admin-password>

</authentication>

cette section définit tous les utilisateurs et mots de passe utilisés pour l'administration, ou pour la connexion des sources (dj) et des relais.

source-password
mot de passe non-crypté utilisé par les sources pour se connecter à icecast2. c'est ce que le dj utilisera dans son logiciel de streaming, sachant que le nom d'utilisateur sera toujours "source". il y'a de fortes chances que cela change dans les prochaines versions.

relay-user
Utilisé sur un master serveur pour l'autentification quand un serveur esclave demande la liste des streams à relayer. Le nom d'utilisateur par défaut est "relay"

relay-password
Utilisé sur un master serveur pour l'autentification quand un serveur esclave demande la liste des streams à relayer

admin-user et admin-password
le nom d'utilisateur et son mot de passe utilisés pour les fonctions d'administration. cela inclut l'accès aux stats, à l'interface web d'administration, etc. la liste des fonctions est disponible dans la section administration du manuel.


yp directory settings



<directory>

<yp-url-timeout>15</yp-url-timeout>
<yp-url>http://dir.xiph.org/cgi-bin/yp-cgi%3C/yp-url%3E;

<directory/>

cette section correspond aux réglages des répertoires yp, qui permettent de recenser les streams de tous les serveurs icecast2. il peux y'avoir plusieurs entrées dans cette section, pour signaler sa présence à plusieurs répertoire yp (yp directory servers)
voici à quoi ressemble l'yp directory officiel d'icecast : http://dir.xiph.org/index.php

yp-url-timeout
on définit ici la durée maximum qu'icecast utilisera pour contacter chaque serveur. la valeur recommandée doit suffire, sauf si vous avez une connexion lente (mais dans ce cas, vous aurez bien du mal à faire passer le son à vos auditeurs...)

yp-url
l'url avec laquelle icecast2 va communiquer, elle dépend du répertoire yp (yellow pages) ou vous voulez être listés. vous pouvez y mettre plusieurs serveurs, chacun sur une ligne de la forme : <yp-url>url<yp-url>
ajouter une liste des serveurs yp utilisable



réglages autres et diverses ou "misc server settings"


<hostname>localhost</hostname>


<-- you can use these two if you only want a single listener -->
<-- <port>8000</port> -->
<-- <bind-address>127.0.0.1</bind-address> -->


<-- you may have multiple <listener> elements -->
<listen-socket>

<port>8000<port>
<bind-address>127.0.0.1<bind-address>
<shoutcast-compat>1 </shoutcast-compat>

</listen-socket>


<fileserve>1</fileserve>
<shoutcast-mount>/live.nsv</shoutcast-mount>

cette section contient divers réglages du serveur. notez que la section "multiple listen-socket" doit être configurée pour qu'icecast2 puisse écouter sur plusieurs interfaces reseau.
si "bind-address" n'est pas spécifié dans la section "listen-socket", c'est le nom de la machine qui sera utilisé. l'idéal est donc d'indiquer votre ip internet, et non votre ip locale, si vous voulez diffuser mondialement.

port
le port tcp qui va intercepter les connexions des clients.

bind-address
vous pouvez indiquer une IP qui sera utilisée pour la connexion, si le paramètre est omis, <hostname> sera utilisé à la place.

shoutcast-compat
Cette entrée optionnel indique que ce port va opérer en mode "compatible shoutcast". A cause des différences entre les protocoles de connection des différents clients source, si vous souhaitez utiliser des outils de DJ shoutcast, vous devez configurer au moins un socket comme compatble shourcast. Notez que dans ce mode de fonctionement, seul les clients source shoutcast pourront se connecter à ce port, les auditeurs devrons se connecter aux port n'ayant pas cette option. Notez aussi que pour une compatibilité complète shoutcast, vous devez configurer un port d'écoute non shoutcast sur le port précédent de votre port client source shoutcast : si vous utiliser le port 8001 en "shoutcast-compat", vous devez définir un port d'écoute 8000, qui lui ne doit pas être shoutcast-compat. Voyez le fichier de conf d'exemple fourni avec icecast pour plus d'informations.

fileserve
enclenche le serveur de fichiers statiques. les fichiers présents dans le dossier configuré par <paths><webroot> sont maintenant accessibles, une sorte de mini serveur ouéb en fait.

shoutcast-mount
Un point de montage optionnel pour la connexcion des clients compatible shoutcast DSP. Par défaut c'est /stream mais cela peux être modifié, par exemple pour mettre une extention pour que les clients de stream des auditeurs sachent quel type de flux il vont trouver (du nsv dans notre exemple)



relay settings



<master-server>127.0.0.1</master-server>

<master-server-port>8001</master-server-port>
<master-update-interval>120</master-update-interval>
<master-username>relay</master-username>
<master-password>hackme</master-password>


<relay>

<server>127.0.0.1</server>
<port>8001</port>
<mount>example.ogg</mount>
<local-mount>different.ogg</local-mount>
<username>joe</username>
<password>soap</password>
<relay-shoutcast-metadata>0</relay-shoutcast-metadata>
<on-demand>0</on-demand>

</relay>

cette section définit la fonction de relai. il y'a deux sortes de relai, "master server relay" (relai de serveur maitre) ou "specific mountpoint relay (relai spécifique d'un point de montage)
"master server relay" ne fonctionne qu'entre serveurs icecast2 et sert à relayer tous les points de montage d'un icecast distant, une sorte de miroir du serveur principal par exemple.

master relay
le diagramme suivant montre les bases de "relayage" en utilisant " master server relay". notez que le serveur 1 est configuré avec <master-server>, <master-server-port>, etc. le serveur 2 est le serveur sur lequel le serveur 1 connectera tous les points de montage (mountpoints) et les relaiera.
en utilisant "master server relay", tous les points de montage du serveur 2 seront relayés. si vous souhaitez ne relayer qu'un point de montage spécifique, vous devez configurer votre serveur 1 comme "specific mountpoint relay" (voir plus loin). mais dans les 2 cas, la fonction de relais se mettra en place au (re)démarrage du serveur.



un serveur est configuré comme "master server relay" en spécifiant les valeur <master-server>, <master-server-port>, <master-update-interval>, <master-password> dans le fichier de conf. le serveur qui est relayé n'a pas besoin de configuration particulière, vous pouvez relayer n'importe quoi, ça sera considéré comme une connexion client par le serveur qui est relayé.

master-server
indiquez ici l'IP du serveur (master server) dont vous voulez relayer les points de montage.

master-server-port
indiquez ici le port tcp du serveur (master server) dont vous voulez relayer les points de montage.

master-update-interval
l'intervale en seconde selon lequel le serveur relais va demander au serveur maître (master server) si il y'a de nouveaux points de montage à relayer.

master-username
le nom d'utilisateur admin du serveur maître (master server). Par défaut "relay" si ce n'est pas spécifié..

master-password
le mot de passe admin du serveur maître (master server), permet au serveur de relais de connaitre les nouveaux points de montage du serveur maître.

relays-on-demand
Change le comportement par défaut pour les relay (0 : désactivé), sur "1" le stream est relayé uniquement si il y'a des auditeurs, alors que sur "0" le stream est constament relayé.


specific mountpoint relay


le schema suivant montre les bases du "specific mountpoint relay", ou comment relayer uniquement des points de montage.
le serveur 1 est configuré avec les réglages <relay>, ce qui lui permet d'aller relayer les points de montage du serveur 2. en utilisant "specific mountpoint relay", vous ne relayez que les points de montage que vous avez définis sur votre serveur 1.

-

les "specific mountpoint relays" permettent de relayer des serveurs icecast 2 mais aussi icecast 1.x, shoutcast et sûrement d'autres.
le serveur configuré pour relayer les points de montage doit avoir des marqueurs xml spécifiques <relay> pour chaque point de montage à relayer. le serveur qui est relayé n'a pas besoin d'être configuré pour cela, vous n'avez d'ailleurs même pas besoin du mot de passe, mais uniquement des informations de connexion. en fait, votre serveur de relais va se comporter comme un auditeur lambda pour le serveur maître...

voici par exemple ce que vous aurez dans votre fichier de configuration du serveur de relais, ici nous allons relayer le stream haut débit de radio404 :



<server>212.43.196.210</server>
<port>10000</port>
<mount>radio404.ogg</mount>
<local-mount>mirror-radio404.ogg</local-mount>
<username>joe</username>
<password>soap</password>
<relay-shoutcast-metadata>0</relay-shoutcast-metadata>
<on-demand>1</on-demand>

server
l'IP du serveur où se trouvent les points de montage que vous souhaitez relayer.

port
le port tcp du serveur où se trouvent les points de montage que vous souhaitez relayer.

mount
le point de montage à relayer sur le serveur distant. pour un serveur shoutcast, utiliser "/"

local-mount
le point de montage local (sur le serveur de relais) où sera relayé le point de montage distant défini juste au dessus.

username
La source du relay peut demander une autentification, dans ce cas y indiquer le nom d'utilisateur

password
La source du relay peut demander une autentification, dans ce cas y indiquer le mot de passe

relay-shoutcast-metadata
si vous relayez un serveur shoutcast, vous pouvez aussi relayer les metadata (titres des chansons) en indiquant "1" dans cette rubrique, ou "0" si vous vous en fichez des titres...

on-demand
Change le comportement par défaut pour les relay (0 : désactivé), sur "1" le stream est relayé uniquement si il y'a des auditeurs, alors que sur "0" le stream est constament relayé.


mount specific settings



<mount>

<mount-name>/example-complex.ogg</mount-name>
<username>othersource</username>
<password>hackmemore</password>
<max-listeners>1</max-listeners>
<max-listener-duration>3600</max-listener-duration>
<dump-file>/tmp/dump-example1.ogg</dump-file>
<intro>/intro.ogg</intro>
<fallback-mount>example2.ogg</fallback-mount>
<fallback-override>1</fallback-override>
<fallback-when-full>1</fallback-when-full>
<public>1</public>
<stream-name>My audio stream</stream-name>
<stream-description>My audio description</stream-description>
<stream-url>http://some.place.com%3c/stream-url%3E;
<genre>classical</genre>
<bitrate>64</bitrate>
<type>application/ogg</type>
<subtype>vorbis</subtype>
<hidden>1</hidden>
<burst-size>65536</burst-size>
<mp3-metadata-interval>4096</mp3-metadata-interval>
<authentication type="htpasswd">

<option name="filename" value="myauth"/>
<option name="allow_duplicate_users" value="0"/>

</authentication>
<on-connect>/home/icecast/bin/source-start</on-connect>
<on-disconnect>/home/icecast/bin/source-end</on-disconnect>

</mount>

cette section s'applique uniquement à un point de montage. dans cette section, vous pouvez réserver des points de montage, leur attribuer un utilisateur/mot de passe spécifique, ainsi que spécifier des réglages uniquement pour ce point de montage qui supplanterons les réglages principaux.

Bien entendu, il n'est pas necessaire de définir chaque mountpoint par rapport à sa source, mais uniquement si vous avez besoin de réglages spécifiques. dans c e cas la, définissez uniquement ce dont vous avez besoin, le strict minimum est le "mount-name"/

mount-name
le nom du point de montage auquel vont s'appliquer les réglages.

username
valeur optionnelle, indique le nom d'utilisateur que la source (le dj) doit utiliser pour streamer sur ce point de montage.

password
valeur optionnelle, indique le mot de passe que la source (le dj) doit utiliser pour streamer sur ce point de montage.

max-listeners
valeur optionnelle, indique le nombre d'auditeurs max pour ce point de montage.

max-listener-duration
Valeur optionnelle permettant de limiter la durée d'écoute.

dump-file
valeur optionnelle, nom du fichier créé à partir du stream passant par ce point de montage. attention ça mange de l'espace disque...

intro
valeur optionnelle qui définie le fichier qui est envoyé a l'auditeur quand il se connecte, avant que le vrai stream démarre. Assurez vous que le format est le même que celui de votre stream.

fallback-mount
permet de spécifier un "stream de secours" où seront déplacés les auditeurs si la source se déconnecte. On peut aussi utiliser un fichier se trouvant dans le webroot. Attention aux limitations, voir la http://icecast.planetmirror.com/docs/icecast-2.3.1/icecast2_config_file.html#mount?

fallback-override
Permet à un client source ou à un relai qui se connecte sur ce mountpoint d'enlever les auditeurs du "fallback mount", ils retrouvent le stream habituel.

fallback-when-full
Réglé sur 1, envoi les nouveaux auditeurs sur le fallback mount (quand il existe) si le serveur est plein.

no-yp (Obsolète)
Empèche le mountpoint de faire sa pub sur les annuaires YP. Par défaut sur 0. Obsolète, est maintenant remplacé par "public"

public
Le réglage par défaut est -1, ce que signifie que c'est au client source de determiner si ce point de montage doit d'annoncer sur les serveur YP. Avec un réglage à 0, vous n'annoncer pas votre stream, avec 1 vous annoncez obligatoirement votre stream. Si vous forcez les annonces (réglage 1), vous devez remplir les réglages YP qui suivent, sans information suffisante les serveur YP peuvent ne pas vous lister.

stream-name
Le nom du stream pour le point de montage, même si le client/relay en fourni un.

stream-description
La description du stream pour le point de montage, même si le client/relay en fourni un.

stream-url
L'URL du stream pour le point de montage, même si le client/relay en fourni un. L'URL sert en général à annoncer l'adresse du site de votre radio....

genre
Le genre du stream pour le point de montage, même si le client/relay en fourni un. Utile pour les recherches dans les repertoires YP

bitrate
Le bitrate du stream pour le point de montage, même si le client/relay en fourni un. En Kbps.

type
Ce réglage ajoute un type mime aux stats et YP pour le point de montage , même si le client/relay en fourni un.

subtype
Ce réglage ajoute un sous type mime aux stats et YP pour le point de montage , même si le client/relay en fourni un. Cela aide les serveurs YP à identifier les composants du mime type, par exemple régler sur vorbis/theora indique que le codec (ici theora) d'un stream Ogg.

burst-size
This optional setting allows for providing a burst size which overrides the default burst size as defined in limits. The value is in bytes.
Pour indiquer la taille personnelle du "burst", en bytes. Utile si vous savez ce que vous faites...

mp3-metadata-interval
Ce réglage optionnel spécifie l'interval, en byte, qu'il y'a entre deux mise à jour des metadata sur les streams compatibles shoutcast. Cela ne s'applique qu'aux nouveau auditeurs qui se connectent sur ce point de montage, et non aux auditeurs existant, même rebasculés sur ce point de montage. Utile si vous savez ce que vous faites...

hidden
Utile pour cacher un point de montage des pages xsl. Cela sert principalement pour les relais internes ou locaux, que vous ne voulez pas faire voir aux auditeurs.

authentication
Pour spécifier un point de montage avec autentification. Pour l'instant seul l'autentification via un fichier fonctionne (de type htpasswd). Nom d'utilisateurs et mot de passe cryptés, séparé par un ":", sont placés dans un fichier. Toutes les demande de ce point de montage vont necessiter un couple nom d'utilisateur/mot de passe. Ces valeur sont passé via le protocole HTTP classique : http://user:password@stream:port/mountpoint.ogg
Les utilisateurs et mot de passe sont réglables depuis l'interface web. Un point de montage avec autentification se présente avec une clé rouge dans l'inteface. Plus d'informations sont disponibles sur le site d'Icecast.

on-connect
Lance un programme lorsque une source démarre. Le point de montage crée est passé en paramètre, et icecast n'attends aucune réponse du programme lancé. Ne fonctionne pas sous Windows.

on-disconnect
Lance un programme lorsque une source s'arrète. Le point de montage crée est passé en paramètre, et icecast n'attends aucune réponse du programme lancé. Ne fonctionne pas sous Windows.


path settings ou plus poétiquement, réglons nos chemins...



<paths>

<basedir>./</basedir>
<logdir>./logs</logdir>
<pidfile>./icecast.pid</pidfile>
<webroot>./web</webroot>
<adminroot>./admin</adminroot>
<alias source="/foo" dest="/bar"/>

</paths>

cette section contient les "chemins" vers les répertoires utilisés par icecast pour diverses choses. attention, les "path" ne doivent pas finir par "/". pour windows, les "path" utilisent \ a confirmer

basedir
ce path est utilisé avec les réglages chroot, qui forcément ne fonctionnent que sous *nix. il spécifie le répertoire de base qui est "chrooté" quand le serveur est démarré.

logdir
ce path indique le répertoire de base pour les fichiers log, où seront créés error.log et access.log.

pidfile
ce path spécifie le fichier à écrire au démarrage et à la fermeture normale de icecast2. ce fichier contient le n° de processus d'icecast2, ce qui peut être utilisé pour lui envoyer des signaux (que sous *nix je présume)

webroot
ce path indique le répertoire de base pour l'accès aux fichiers statiques. ce répertoire peux contenir tous les fichiers standards, incluant mp3 et ogg. par exemple en étant réglé sur /var/share/icecast2, une requête à http://server:port/mp3/stuff.mp3 va "servir" le fichier.

adminroot
ce path indique le répertoire de base pour les requêtes d'administration. plus spécifiquement, c'est utilisé pour recevoir les scripts xslt utilisés pour l'interface ouéb d'administration. vous trouverez tous les fichiers nécessaires à ce repertoire dans la distribution d'icecast2, décompressé dans /admin.

alias source="/foo" dest="/bar"
les alias sont utilisés pour créer des points de montage multiples, qui en fait réfèrent au même point de montage.


logging settings



<logging>

<accesslog>access.log</accesslog>
<errorlog>error.log</errorlog>

<loglevel>4</loglevel> <-- 4 debug, 3 info, 2 warn, 1 error -->
</logging>

cette section concerne les log dans icecast2. celui-ci génère 2 fichiers : error.log, qui comme son nom l'indique, contient les messages d'erreur, et access.log, qui stocke toutes les connexions (stream/http/admin...)

notez que sur les systèmes non-win32, un signal hup peut être envoyé à icecast2, ce qui lui fait ré-ouvrir ses fichier de log, permettant de déplacer/enlever ces fichiers sans que ce soit le foutoir.

accesslog
permet de définir le fichier où seront stockés tous les accès qui sont fait vers icecast2, ce fichier sera placé dans le répertoire indiqué par <logdir>

errorlog
permet de définir le fichier où sera stocké toutes les erreurs d'icecast2. attention, en reglant (voir plus bas) le loglevel au maximum, ce fichier peut grandir très vite et saturer le disque dur. surtout que pour l'instant, il n'y a pas de rotation des fichiers log d'implémentée.

loglevel
permet de choisir le niveau de log, attention en niveau 4, votre fichier log va grossir très vite. il y'a 4 niveaux :

# loglevel = 4 - debug, info, warn, error messages, sont placés dans le fichier log
# loglevel = 3 - info, warn, error messages, sont placés dans le fichier log
# loglevel = 2 - warn, error messages, sont placés dans le fichier log
# loglevel = 1 - error messages uniquement, sont placés dans le fichier log


security settings



<security>

<chroot>0</chroot>
<changeowner>

<user>nobody</user>
<group>nogroup</group>

</changeowner>

</security>

vous avez deviné, cette section définit la sécurité d'icecast2, en utilisant chroot, méthode qui ne fonctionne pas sous win32...

chroot
spécifie où va se faire le chroot() quand le serveur démarre. le path est spécifié dans la valeur <basedir>, voir plus haut.

changeowner
indique sous quel groupe et utilisateur icecast se lancera. il faut bien entendu que ce soit des utilisateurs qui existent sur le systeme...

NB: avec une config de base, le référencement YP ne fonctionne pas si icecast est chrooté.
En effet, en environnement chrooté, icecast nécessite que certains fichiers et bibliothèques soient accessibles directement depuis la nouvelle racine.
cf le thread http://lists.xiph.org/pipermail/icecast/2004-September/007568.html


retour à l'index Icecast2



traduction fantaisiste de http://www.icecast.org/files/icecast_docs/icecast2_config_file.html
Il n'y a pas de commentaire sur cette page. [Afficher commentaires/formulaire]