altevo.net

Serveur de streaming Icecast

Serveur Icecast

Icecast 2

Icecast est un logiciel serveur libre (GNU GPL V2) de télédiffusion multimédia (streaming) qui permet de diffuser des flux audio/vidéo sur un réseau (internet/intranet).

Il supporte actuellement les streams aux formats OGG (Vorbis et Theora), Opus, WebM et Mp3. Il peut donc être utilisé pour créer une web radio, une web TV ou encore un jukebox privé en ligne et génère une interface web dynamique permettant d'administrer facilement le serveur.

Il est très stable et ne nécessite pas de mises à jour fréquentes, la version proposé dans les dépôts Debian est donc généralement fiable, même s'il est préférable d'utiliser le paquet fournit sur le site officiel du projet si l'on veut être certain d'utiliser la dernière version.

 

Installation

Pour installer le serveur Icecast 2 et l’ensemble de ses dépendances:

sudo apt install icecast2

 

Configuration de base

Le fichier de configuration icecast.xml se situe dans le répertoire /etc/icecast2, pour le modifier:

sudo nano /etc/icecast2/icecast.xml

 

Voici un exemple de ce fichier de configuration qui décrit les paramètres de base nécessaires au bon fonctionnement du serveur:

<icecast>
    <!-- location et admin sont deux champs facultatifs qui seront visibles sur la page d'info
         accessible au public de l'interface web du serveur (server_version.xsl). -->
    <location>emplacement du serveur</location>
    <admin>pseudo de l'administrateur du serveur</admin>
 
    <!-- le hostname est le nom d'hôte (ou adresse IP) qui sera utilisé pour se connecter au serveur.
         Il doit absolument être correctement renseigné pour un bon fonctionnement avec les
         annuaires de flux et les liens avec les playlists.  -->
    <hostname>nom d'hôte ou adresse ip du serveur</hostname>
 
    <limits>
    <!-- clients est le nombre maximum de connexions clientes possibles sur le serveur (auditeurs). -->
        <clients>100</clients>
    <!-- sources est le nombre maximum de connexions sources possibles sur le serveur (diffuseurs). -->   
        <sources>2</sources>
        <queue-size>524288</queue-size>
        <client-timeout>30</client-timeout>
        <header-timeout>15</header-timeout>
        <source-timeout>10</source-timeout>
        <!-- If enabled, this will provide a burst of data when a client 
             first connects, thereby significantly reducing the startup 
             time for listeners that do substantial buffering. However,
             it also significantly increases latency between the source
             client and listening client.  For low-latency setups, you
             might want to disable this. -->
        <burst-on-connect>1</burst-on-connect>
        <!-- same as burst-on-connect, but this allows for being more
             specific on how much to burst. Most people won't need to
             change from the default 64k. Applies to all mountpoints  -->
        <burst-size>65535</burst-size>
    </limits>
 
    <authentication>
        <!-- mot de passe nécessaire aux connexions Sources avec le nom utilisateur 'source' -->
        <source-password>mot de passe source</source-password>
        <!-- mot de passe nécessaire aux connexions Relays avec le nom utilisateur 'relay' -->
        <relay-password>mot de passe relay</relay-password>
 
        <!-- nom utilisateur et mot de passe pour se connecter à l'interface web de gestion du 
        serveur à l'adresse http://hote_ou_ip_du_serveur:8000 (par défaut) -->
        <admin-user>pseudo de l'administrateur</admin-user>
        <admin-password>mot de passe de l'administrateur</admin-password>
    </authentication>
 
    <!-- point de montage à préciser par les connexions sources, /stream par défaut mais peut
     être modifié si une extension est souhaitée ou requise, je recommande /stream.ogg -->
    <shoutcast-mount>/stream.ogg</shoutcast-mount>
 
    <!-- You may have multiple <listener> elements -->
    <listen-socket>
    <!-- port de communication TCP utilisé pour la connexion au serveur, 8000 par défaut,
        il doit être redirigé (port forwarding) dans les paramètres de la box internet vers 
        l'adresse IP locale de la machine qui héberge le serveur.  -->
        <port>8000</port>
 
    <http-headers>
        <header name="Access-Control-Allow-Origin" value="*" />
    </http-headers>
 
    <fileserve>1</fileserve>
 
    <paths>
        <logdir>./log</logdir>
        <webroot>./web</webroot>
        <adminroot>./admin</adminroot>
        <alias source="/" destination="/status.xsl"/>
    </paths>
 
    <logging>
        <accesslog>access.log</accesslog>
        <errorlog>error.log</errorlog>
        <!-- <playlistlog>playlist.log</playlistlog> -->
        <loglevel>3</loglevel> <!-- 4 Debug, 3 Info, 2 Warn, 1 Error -->
        <logsize>10000</logsize> <!-- Max size of a logfile -->
    </logging>
</icecast>

De nombreuses autres options sont disponibles, pour plus de détails, consulter la documentation officielle.

 

Démarrer le serveur

On change d'abords d'utilisateur:

su icecast2 -s /bin/bash

 

Le démon Icecast2 est désactivé par défaut, ce qui est pratique le temps du paramétrage, pour l'activer on doit modifier son fichier de configuration:

sudo nano /etc/defaults/icecast2

 

On modifie la ligne:

ENABLE=false

 

Par:

ENABLE=true

 

Puis on lance le demon:

sudo /etc/init.d/icecast2 start

 

Se connecter au serveur

On peut maintenant voir et gérer le serveur à l'adresse: http://hote_ou_ip_du_serveur:8000

Ses logs sont alors visibles dans le répertoire /var/log/icecast2.

Les clients diffuseurs (sources) peuvent s'y connecter en précisant dans leurs paramètres (ex. VLC, Foobar2000, Mixxx, etc..):

  • l'adresse du serveur (hôte ou IP)
  • le port (8000 par défaut)
  • le nom utilisateur source ainsi que son mot de passe
  • le point de montage (dans l'exemple /stream.ogg)

Les client auditeurs peuvent s'y connecter de deux façons:

Par le biais des boutons de l'interface web du serveur à l'adresse: http://hote_ou_ip_du_serveur:8000

Directement par leur lecteur multimédia (ex. VLC) en ouvrant le flux: http://hote_ou_ip_du_serveur:8000/stream.ogg

 

Bon stream !