[PukiWiki:wiki] BSD/FreeBSD/icecast2

最終更新日: 2008/12/10 09:33:20

目次

はじめに

  • SHOUTcast 互換のソフトウェアらしい。
  • オープンソースらしい。
  • 設定ファイルが xml でちょっと読みづらい。

インストール

# portinstall audio/icecast2

To start icecast at system boot, copy
/usr/local/etc/icecast.xml.sample to /usr/local/etc/icecast.xml, customize
to your environment as desired and add:

icecast_enable="YES"

to /etc/rc.conf. See the icecast -h command for optional additional
flags. To specify an alternative config file for example add:

icecast_flags="-c /path/to/your/configuration.xml"

**********************************************************************
**  Make sure the <changeowner> section in your configuration file  **
**     is NOT commented out. Icecast will refuse to run as root.    **
**                                                                  **
** Also make sure that the user you choose is able to write to your **
**  configured log directory, otherwise icecast will refuse to run. **
**********************************************************************

icecast 用にユーザとグループを作成する。

# pw groupadd -n icecast
# pw useradd -n icecast -c "icecast" -d /nonexistent -g icecast -h - -s /sbin/nologin

icecast を立ち上げられるように。

# vi /etc/rc.conf

icecast_enable="YES"

設定

設定ファイルのコピー

# cp /usr/local/etc/icecast.xml.sample /usr/local/etc/icecast.xml
# chmod 644 /usr/local/etc/icecast.xml

ログ保存ディレクトリの作成。

# mkdir /var/log/icecast
# chown icecast:icecast /var/log/icecast
# chmod 700 /var/log/icecast

設定内容が多いので分割。

各自の環境と比べて読んでください。

# vi /usr/local/etc/icecast.xml

    <limits>
        <clients>10</clients>
        ※ 回線の太さに応じて設定する。個人なら10くらいで十分?
        <sources>2</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>65535</burst-size>
        ※ 遅延と関係あるらしいけどよくわかんね
    </limits>

    <authentication>
        <!-- Sources log in with username 'source' -->
        <source-password>hackme</source-password>
        ※ ices から接続する PASS
        <!-- Relays log in username 'relay' -->
        <relay-password>hackme</relay-password>
        ※ なんだろ?

        <!-- Admin logs in with the username given below -->
        <admin-user>admin</admin-user>
        <admin-password>hackme</admin-password>
        ※ Web 上の管理ユーザの ID と PASS
    </authentication>

    <!-- 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>localhost</hostname>
    ※ LAN 内からアクセス出来るように変更する。

    <!-- You may have multiple <listener> elements -->
    <listen-socket>
        <port>8000</port>
        ※ 待ちうけポート。出来れば変えた方が良い。
        <!-- <bind-address>127.0.0.1</bind-address> -->
    </listen-socket>

    <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>/var/run/icecast.pid</pidfile>
        ※ pid ファイル

        <!-- 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 -->
        ※ ログレベルはテストが済んだら3に落とした方がいいかも。
        <logsize>100000</logsize> <!-- Max size of a logfile -->
        ※ ログファイルの Max ファイルサイズ
        <!-- 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>
        ※ logarchive を有効にしておけばerror.log.DATESTAMPのようになる。
        ※ セキュリティの事を考えると取っておくべき
   </logging>

# vi /usr/local/etc/icecast.xml

    <security>
        <chroot>0</chroot>
        <changeowner>
            <user>icecast</user>
            <group>icecast</group>
            ※ 先程追加したユーザとグループを記述する
        </changeowner>
    </security>

起動

起動してみる。

# /usr/local/etc/rc.d/icecast2 start

プロセスが上がってるか確認する。

# ps -auxww | grep icecast

ブラウザから hostname と port に設定した値を入れて表示されたらひとまず成功。