1. Ищим в портах
cd /usr/ports make search name=icecast2
2. Устанавливаем
cd /usr/ports/audio/icecast2 && make install clean && rehash
3. Добавляем пользователя
pw groupadd icecast pw useradd icecast -g icecast
4. Редактируем icecast.xml
cd /usr/local/etc/ && ee icecast.xml
Пример
<icecast> <limits> <clients>100</clients> <sources>20</sources> <threadpool>5</threadpool> <queue-size>524288</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>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>_hostname_</hostname> <!-- You may have multiple <listener> elements --> <listen-socket> <port>8000</port> <bind-address>_ip_сервера_</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>stream.radiozu.ro</server> <port>8020</port> <mount>/</mount> <local-mount>/RadioZU</local-mount> <on-demand>1</on-demand> <relay-shoutcast-metadata>1</relay-shoutcast-metadata> </relay> <relay> <server>scfire-ntc-aa04.stream.aol.com</server> <port>80</port> <mount>/stream/1003</mount> <local-mount>/Trance</local-mount> <on-demand>1</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> <paths> <!-- basedir is only used if chroot is enabled --> <basedir>/usr/local/share/icecast</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/icecast</logdir> <webroot>/usr/local/share/icecast/web</webroot> <adminroot>/usr/local/share/icecast/admin</adminroot> <!-- <pidfile>/usr/local/share/icecast/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>3</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>icecast</user> <group>icecast</group> </changeowner> </security> </icecast>
5. Логи
mkdir /var/log/icecast touch /var/log/icecast/error.log touch /var/log/icecast/access.log chown -R icecast:icecast /var/log/icecast
6. Добавляем в автозапуск /etc/rc.conf
echo 'icecast_enable="YES"' >> /etc/rc.conf echo 'icecast_flags="-c /usr/local/etc/icecast.xml"' >> /etc/rc.conf
7. Запускаем
service icecast2 start