Установка и настройка IceCast сервера

Установка и настройка IceCast сервера

В этой статье пойдет речь об установке сервера радио IceCast и плагина к нему Ices 0.4(данная версия для вещание в формате mp3, для вещание в формате ogg есть версия Ices 2) . Данная связка в данный момент и работает на нашем радио PiPRadio.ru, а Ices 0.4 благополучно вещает 24\7 канал nonstop.
Ну что ж перейдем к установке.

Прежде чем устанавливать сам сервер IceCast, нам нужны будут некоторые библиотеки, а именно:

libshout-2.2.2
libmp3lame-3.97

Обе библиотеки есть в репозиториях, так что проблем возникнуть не должно, ставим:

sudo apt-get install libshout3

sudo apt-get libmp3lame-dev

И на всякий случай установим LibXML2(у меня она стояла из коробки, но был случай, когда после установки Ubuntu этой библиотеки не было):

wget ftp://xmlsoft.org/libxml2/libxml2-sources-2.6.29.tar.gz

tar -xvzf libxml2-sources-2.6.29.tar.gz

./configure –prefix=/usr/local/libxml2

make

sudo make install

Установка Ices 0.4
После установкии библиотек будет ставить Ices 0.4. К сожалению его нет в репозиториях, поэтому придется собирать самим.

sudo apt-get http://downloads.us.xiph.org/releases/ices/ices-0.4.tar.gz

tar -zxvf ices-0.4.tar.gz

cd ices-0.4

./configure –with-lame (если не получается с параметром with-lame, то можно просто ./configure )
make && make install

После установки Ices 0.4 переходит к непосредственной установки IceCast, он к счастью есть в репозиториях.

Установка IceCast.

sudo apt-get install icecast2

Настройка IceCast.

После установки, можно приступить к настройке.
Сначала надо создать пользователя и группу IceCast.

sudo groupadd icecast
sudo useradd -g icecast -d /home/icecast -s /sbin/nologin icecast

Теперь займемся непосредственно настройкой самого сервера, конфиг которого хранится в /etc/icecast2/icecast.xml

sudo nano /etc/icecast2/icecast.xml

<icecast>
<limits>…
//Количество пользователей
<clients>10000</clients>
<sources>5</sources>
<threadpool>5</threadpool>
<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>131070</burst-size>
</limits>

//Тут Ваши пароли
<authentication>
<!– Sources log in with username ’source’ –>
<source-password>паророль_для_вещания</source-password>
<!– Relays log in username ‘relay’ –>
<relay-password>password</relay-password>

//Пароли админа
<!– Admin logs in with the username given below –>
<admin-user>admin</admin-user>
<admin-password>password</admin-password>
</authentication>

<!– Uncomment this if you want directory listings –>
<!–
<directory>
<yp-url-timeout>15</yp-url-timeout>
<yp-url>http://dir.xiph.org/cgi-bin/yp-cgi</yp-url>
</directory>
–>
//Настройки сервера
<!– This is the hostname other people will use to connect to your server.
It affects mainly the urls generated by Icecast for playlists and yp
listings. –>
<hostname>sr.pipradio.ru</hostname>
<!– You can use these two if you only want a single listener –>
<!–<port>9500</port> –>
<!–<bind-address>127.0.0.1</bind-address>–>

<!– You may have multiple <listener> elements –>
<listen-socket>
<port>9500</port>
<!– <bind-address>127.0.0.1</bind-address> –>
</listen-socket>
<!–
<listen-socket>
<port>9501</port>
</listen-socket>
–>

<!–<master-server>127.0.0.1</master-server>–>
<!–<master-server-port>9501</master-server-port>–>
<!–<master-update-interval>120</master-update-interval>–>
<!–<master-password>hackme</master-password>–>

<!– setting this makes all relays on-demand unless overridden, this is
useful for master relays which do not have <relay> definitions here.
The default is 0 –>
<!–<relays-on-demand>1</relays-on-demand>–>

//Настройки relay (вещание другой радисостанции через Ваш сервер)
<relay>
<server></server>
<port>7284</port>
<mount>/</mount>
<local-mount>/nonstop</local-mount>
<on-demand>0</on-demand>

<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>

<relay>
<server>aol.streams.bassdrive.com</server>
<port>8010</port>
<mount>/</mount>
<local-mount>/playlist2</local-mount>
<on-demand>0</on-demand>

<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>

<relay>
<server>sr.pipradio.ru</server>
<port>9500</port>
<mount>/</mount>
<local-mount>/nonstop</local-mount>
<on-demand>0</on-demand>

<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>

<!– Only define a <mount> section if you want to use advanced options,
like alternative usernames or passwords
<mount>
<mount-name>/example-complex.ogg</mount-name>

<username>othersource</username>
<password>hackmemore</password>

<max-listeners>1</max-listeners>
<dump-file>/tmp/dump-example1.ogg</dump-file>
<burst-size>65536</burst-size>
<fallback-mount>/example2.ogg</fallback-mount>
<fallback-override>1</fallback-override>
<fallback-when-full>1</fallback-when-full>
<intro>/example_intro.ogg</intro>
<hidden>1</hidden>
<no-yp>1</no-yp>
<authentication type=”htpasswd”>
<option name=”filename” value=”myauth”/>
<option name=”allow_duplicate_users” value=”0″/>
</authentication>
<on-connect>/home/icecast/bin/stream-start</on-connect>
<on-disconnect>/home/icecast/bin/stream-stop</on-disconnect>
</mount>

<mount>
<mount-name>/auth_example.ogg</mount-name>
<authentication type=”url”>
<option name=”mount_add” value=”http://myauthserver.net/notify_mount.php”/>
<option name=”mount_remove” value=”http://myauthserver.net/notify_mount.php”/>
<option name=”listener_add” value=”http://myauthserver.net/notify_listener.php”/>
<option name=”listener_remove” value=”http://myauthserver.net/notify_listener.php”/>
</authentication>
</mount>

–>

<fileserve>1</fileserve>

<!– set the mountpoint for a shoutcast source to use, the default if not
specified is /stream but you can change it here if an alternative is
wanted or an extension is required
<shoutcast-mount>/live.nsv</shoutcast-mount>
–>

<paths>
<!– basedir is only used if chroot is enabled –>
<basedir>/usr/share/icecast2</basedir>

<!– Note that if <chroot> is turned on below, these paths must both
be relative to the new root, not the original root –>
<logdir>/var/log/icecast2</logdir>
<webroot>/usr/share/icecast2/web</webroot>
<adminroot>/usr/share/icecast2/admin</adminroot>
<pidfile>/usr/share/icecast2/icecast.pid</pidfile>

<!– Aliases: treat requests for ’source’ path as being for ‘dest’ path
May be made specific to a port or bound address using the “port”
and “bind-address” attributes.
–>
<!–
<alias source=”/foo” dest=”/bar”/>
–>
<!– Aliases: can also be used for simple redirections as well,
this example will redirect all requests for http://server:port/ to
the status page
–>
<alias source=”/” dest=”/status.xsl”/>
</paths>

<logging>
<accesslog>access.log</accesslog>
<errorlog>error.log</errorlog>
<!– <playlistlog>playlist.log</playlistlog> –>
<loglevel>4</loglevel> <!– 4 Debug, 3 Info, 2 Warn, 1 Error –>
<logsize>10000</logsize> <!– Max size of a logfile –>
<!– If logarchive is enabled (1), then when logsize is reached
the logfile will be moved to [error|access|playlist].log.DATESTAMP,
otherwise it will be moved to [error|access|playlist].log.old.
Default is non-archive mode (i.e. overwrite)
–>
<!– <logarchive>1</logarchive> –>
</logging>

<!– <security> –>
<!– <chroot>0</chroot>

<changeowner>
<user>icecast2</user>
<group>icecast2</group>
</changeowner>

</security> –>
</icecast>

Если у вас есть джингл(у нас его нет к сожалению, так как делать его некому=(() и вы хотите, что бы он играл при подключении к радио, нужно в файле /etc/icecast2/icecast.xml добавить несколько строк.

sudo nano /etc/icecast2/icecast.xml

/nonstop (название точки монтирования)
source

***** /путь/к/файлу/intro.mp3

Что бы избежать сюрпризов выполните две команды:

chown root:root /etc/icecast2/icecast.xml
chmod 640 /etc/icecast2/icecast.xml

Эти команды ограничат доступ к файлу конфигов нашего сервера.
Теперь можно запустить наш сервер:

icecast -b -c /etc/icecast2/icecast.xml

Если все сделано верно, то набрал в браузере адрес localhost:8000(если не меняли порт), Вы сможете увидеть web оболочку сервера IceCast.

Теперь перейдет к настройке Icec 0.4
Сделаем конфиг IceCast(по идеи шаблон конфига должен быть в /usr/local/etc/ices.conf.dist и его можно скопировать в /usr/local/etc/ices.conf)

sudo nano /usr/local/etc/ices.conf

<?xml version=”1.0″?>
<ices:Configuration xmlns:ices=”http://www.icecast.org/projects/ices”>
<Playlist>
<Randomize>1</Randomize>
<File>/расположение/вашего/плейлиста/playlist.txt</File>
<Type>builtin</Type>
<Module>ices</Module>
</Playlist>
<Execution>
<Background>1</Background>
<Verbose>0</Verbose>
<BaseDirectory>/tmp</BaseDirectory>
</Execution>
<Stream>
<Server>
<Hostname>адрес сервера</Hostname>
<Port>порт сервера</Port>
<– См. примечание о паролях в icecast.xml –>
<Password>Ваш пароль на вещание в IceCast</Password>
<Protocol>http</Protocol>
</Server>

///Точка монтирования(название канала), настройки битрейта
<Mountpoint>/nonstop</Mountpoint>
<Dumpfile>ices.dump</Dumpfile>
<Name>Default stream</Name>
<Genre>Default genre</Genre>
<Description>Default description</Description>
<URL>http://localhost/</URL>
<Public>0</Public>
<Bitrate>128</Bitrate>
<Reencode>0</Reencode>
<Samplerate>44100</Samplerate>
<Channels>2</Channels>
</Stream>
</ices:Configuration>

После окончания мучений конфига Ices 0.4, опять же во избежании сюрпризов выполним команду, что бы ограничить доступ к конфигу:

chmod 640 /usr/local/etc/ices.conf

Теперь осталось все это запустить, но для начало нужно сделать плэйлист для нашего Ices 0.4. Предположим что у вас есть коллекция mp3 файликов, скажем в /mnt/mp3/popsa/. Что бы все файлы в данной директории попали в плэй лист, выполняем две команды:

cd /mnt/mp3/popsa/
ls > playlist.txt

Теперь запускаем Ices 0.4:

ices -c ‘/usr/local/etc/ices.conf’

Если не запускается командой выше, или запускается и начинает использовать стандартный конфиг, то запустите Ices командой:

ices

Если вы не меняли кардинально конфиг Icec(не меняли название точки монтирования) но зайдя по ссылке http://localhost:8000/radio вы сможете услышать ваше радио.

Вот и все, на самом деле сложного ничего нет. Естественно иногда случаются проблемы, например у меня не хотели ставить библиотеки, но спустя 15 минут поиска ошибки в гугле, все отлично заработало.

Метки: , , , , ,

3 коммент. к записи “Установка и настройка IceCast сервера”

  1. koollok пишет:

    материал заслуживает повышенного внимания. дабы изучить более подробно, добавлю в избранное

  2. Proof пишет:

    Доброго времени суток. Возникла проблема, после ребута нашего сервера, при попытки запуска айса командой ices -c ‘/usr/local/etc/ices.conf’ , он начинает коннектится на localhost 8000, точней нет, не так, начинает использовать дефолтный конфиг. Конфиг правил, все на месте, 3 день уже борю, гугл тоже молчит, что делать?

  3. Darkness_Lord пишет:

    Главное спокойствие, у Вас видимо тоже стоит Ubuntu Server 9.10 и вы его обновляете периодически=) у меня та же проблема возникла после очередного обновления(а ведь говорил мне Степаныч: Ели сервак работает, не тронь его, не обновляй, пусть пылиться). Решение как ни странно простое, запускайте сервер Ices командой: ices