Настройка icecast сервера (сетевое радио)
Вообщем-то решил порадовать своих юзверей и дать им возможность послушать радио,
так как чуть раньше запретил все потоковое радио через прокcи, а бо не фиг тянуть че попала ;).
Для Debian/Ubuntu, ставим пакет
$ aptitude install icecast2
На всякий случий
cp icecast.xml icecast_back.xml
И мучаем наш конфиг, там все описано и при минимальном уровне знания не трудно разобраться, наиболее интересные места я закомментировал с переводом:
<icecast>
<limits>
<clients>50</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>65535</burst-size>
</limits>
<authentication>
<!— Аутентификация — обязательно измените приведённые здесь пароли —>
<!— Sources log in with username ‘source’ —>
<source-password>_6VVhackme</source-password>
<!— Relays log in username ‘relay’ —>
<relay-password>_VVhackme</relay-password>
<!— логин и пароль для входа на веб интерфейс сервера Icecast —>
<admin-user>admin</admin-user>
<admin-password>gjgfhjkm</admin-password>
</authentication><!— Uncomment this if you want directory listings
Если собираетесь публиковать информацию о аудио-потоках вашего сервера в icecast2 YP
каталогах, то следующий раздел вам в этом поможет
<directory>
- Время (в секундах) ожидания ответа от сервера icecast2 YP
<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.
IP Адрес интерфеса смотрящего в локальную сеть, для трансляций —>
<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>192.168.100.100</bind-address>
</listen-socket>
<!—
<listen-socket>
<port>8001</port>
</listen-socket>
—><!—<master-server>127.0.0.1</master-server>—>
<!—<master-server-port>8001</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>
<server>127.0.0.1</server>
<port>8001</port>
<mount>/example.ogg</mount>
<local-mount>/different.ogg</local-mount>
<on-demand>0</on-demand>
<relay-shoutcast-metadata>0</relay-shoutcast-metadata>
</relay> —><relay>
<!—Адрес удаленного источника —>
<server>85.17.53.181</server>
<!— Порт удаленного источника —>
<port>8000<port>
<!—точка монтирования удаленного потока, местами отсутствует а местами есть надо смотреть внимательно. —>
<mount>/live</mount>
<!—локальная точка монтирования, то что будети после адреса вашего сервера и его порта,
напр. http://192.168.100.100:8000/rusradio.m3u (окончание .m3u будет автоматически добавлено сервером
<local-mount>/rusradio</local-mount>
<on-demand>1</on-demand> —>
<!— параметр позволяет передавать метаданные композиций которые транслирует онлайн радио, названия трэков, и тд. 0 или 1—>
<relay-shoutcast-metadata>0</relay-shoutcast-metadata>
</relay><relay>
<server>213.184.232.36</server>
<port>8000</port>
<mount>/</mount>
<local-mount>/unistar</local-mount>
<on-demand>1</on-demand>
<relay-shoutcast-metadata>0</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>
<!— Пользователь и группа от имени которого будет запускаться icecast2 —>
<user>nobody</user>
<group>nogroup</group>
</changeowner>
</security>
</icecast>
Далее редактируем:
$ nano /etc/default/icecast2
— исправляем false на true
ENABLE=true
И стартуем:
$ /etc/init.d/icecast2 start
Проверяем старт нашего сервера:
# ps waux | grep icecast
nobody 67309 0.0 0.4 8740 3972 p9 S 11:37AM 0:00.06 /usr/local/bin/icecast -c /usr/local/etc/icecast.xml -b
Так же порт висит и слушаеться:
# netstat -na | grep -i listen | grep 8000
tcp 0 0 192.168.100.100:8000 0.0.0.0:* LISTEN
Так же после можно проверить статус сервера зайдя на веб интерфейс по адресу вашего сервера, например:
http://192.168.10.10:8000
.
Если что не пошло проверяем файл /var/log/icecast/error.log на предмет сообщений об ошибках.
Удачи.