自宅サーバの Fedora に DLNA サーバ MediaTomb のインストール

Audio Accessory 増刊号の Net Audio vol.01 を読んでみた で書きましたがネットワークオーディオに興味が出てきました。僕のメイン機では DLNA サーバとして VAIO Media Plus っていうソフトが動いていましたが、コンテンツ解析やらいろいろと動作が重くなったりするため、設定やサービスを無効化して動作させていません。

ちょうど自宅サーバが常時接続・常時稼働状態にあるため、Linux の DLNA サーバとして評判の良いオープンソースの MediaTomb を導入することにしました。今回は手抜きをしたかったのでソースコンパイルではなく yum からパッケージをとってきてインストールする方法を選択しました。

- スポンサーリンク -

Fedora に DLNA サーバ MediaTomb のインストール

自宅サーバは Fedora10-x86_64 環境ですが、CentOS 系もほぼ同じで行けると思います。yum で mediatomb をインストールします。mediatomb はライブラリの依存関係などでソースからインストールするのが面倒という記事をよく見かけるので、yum を使って依存関係など一発解決が楽ちんだと思います。yum で依存関係にあるライブラリのインストールを求められたらあわせてインストールを行ってください。

yum install mediatomb

次に /etc/mediatomb.conf を編集してネットワークの設定を行います。eth0 を使って配信を配信を行う場合、赤色の部分のように修正を行います。通常下記のまねをすればOKです。
MT_USER="mediatomb"、MT_GROUP="mediatomb" の部分で実行ユーザが設定されていますが、yum でインストールした場合には必要なユーザとグループは自動的に作成されています。

## This is a sambel configuration file for the MediaTomb daemon script
## used on Fedora Core

## By default the configuration will be created in /etc/mediatomb

## Network interface on which the server will run, you need to edit this!
#MT_INTERFACE="NOT_SET"
MT_INTERFACE="eth0"

## User defined command line options that may be passed to the server
MT_OPTIONS=""

## MediaTomb will be started on port 50500
MT_PORT="50500"

## MediaTomb will run as mediatomb
MT_USER="mediatomb"
MT_GROUP="mediatomb"

## Location of the PID file
MT_PIDFILE="/var/run/mediatomb.pid"

## Location of the log file
MT_LOGFILE="/var/log/mediatomb"

## Location of the config file/database
MT_HOME="/etc"
MT_CFGDIR="mediatomb"

次に /etc/mediatomb/config.xml を自動生成させるために、一度 mediatomb を起動・停止します。

/etc/init.d/mediatomb start
/etc/init.d/mediatomb stop

次にコンテンツの管理をデフォルトの SQLite ではなく MySQL に変更するために MySQL で mediatomb 用のデータベースおよびユーザの作成を行います。SQLite のままの管理で良い場合には本項目は不要です。

mysql -u root -p
mysql> create database mediatomb;
mysql> grant all privileges on mediatomb.* to mediatomb@localhost identified by 'パスワード';
mysql> flush privileges;
mysql> exit

次にスキーマを作成します。作成用の SQL が用意されているので実行するだけです。

mysql -u mediatomb -p mediatomb < /usr/share/mediatomb/mysql.sql

次に /etc/mediatomb/config.xml のデータベース設定を mysql 用に切り替えます。赤文字のように編集してください。

    <storage>
      <sqlite3 enabled="no">
        <database-file>mediatomb.db</database-file>
      </sqlite3>
      <mysql enabled="yes">
        <host>localhost</host>
        <username>mediatomb</username>
        <password>設定したパスワード</password>
        <port>3306</port>
        <database>mediatomb</database>
      </mysql>
    </storage>

次に mysql との socket 通信に使うファイル名の設定を行います。yum で入れた場合には mediatomb は /var/lib/mysql/mysql.sock を使うのですが、僕の環境では /tmp/mysql.sock が mysql との socket 通信に使うファイルになります。下記のようにシンボリックリンクを張って対応させます。

ln -s /tmp /var/lib/mysql

ちなみにこんなエラーがでて躓きました。ネットで情報が出てこなかったのでメモしておきます。

tail -f /var/log/mediatomb 

2010-11-13 08:00:00    INFO: Loading configuration from: /etc/mediatomb/config.xml
2010-11-13 08:00:00    INFO: Checking configuration...
2010-11-13 08:00:00    INFO: Setting filesystem import charset to EUC-JP
2010-11-13 08:00:00    INFO: Setting metadata import charset to CP932
2010-11-13 08:00:00    INFO: Setting playlist charset to EUC-JP
2010-11-13 08:00:00    INFO: Configuration check succeeded.
2010-11-13 08:00:00   ERROR: The connection to the MySQL database has failed: mysql_error (2002): "Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)"

さて mysql の設定はココまで。次にサーバの charset の設定を行います。例によって赤文字の部分を追加します。サーバの文字コードが UTF-8 の場合の設定です。EUC を使っている場合には EUC-JP を設定します。

  <import hidden-files="no">
    <filesystem-charset>UTF-8</filesystem-charset>
    <metadata-charset>CP932</metadata-charset>
    <scripting script-charset="UTF-8">

次に mappings を追加します。画像の配信や動画の配信が必要ない場合には、この設定はそもそも不要な気がしますが、多くのインストールメモに従ってこうすることとします。

    <mappings>
      <extension-mimetype ignore-unknown="no">
        <map from="jpg" to="image/jpeg"/>
        <map from="jpeg" to="image/jpeg"/>
        <map from="gif" to="image/gif"/>
        <map from="png" to="image/png"/>
        <map from="m4v" to="video/mp4"/>
        <map from="mp4" to="video/mp4"/>
        <map from="mpg" to="video/mpeg"/>
        <map from="mpeg" to="video/mpeg"/>
        <map from="mp3" to="audio/mpeg"/>
        <map from="ogg" to="application/ogg"/>
        <map from="asf" to="video/x-ms-asf"/>
        <map from="asx" to="video/x-ms-asf"/>
        <map from="wma" to="audio/x-ms-wma"/>
        <map from="wax" to="audio/x-ms-wax"/>
        <map from="wmv" to="video/x-ms-wmv"/>
        <map from="wvx" to="video/x-ms-wvx"/>
        <map from="wm" to="video/x-ms-wm"/>
        <map from="wmx" to="video/x-ms-wmx"/>
        <map from="m3u" to="audio/x-mpegurl"/>
        <map from="pls" to="audio/x-scpls"/>
        <map from="flv" to="video/x-flv"/>

ここまで設定が終わったら mediatomb が起動するはずです。

/etc/init.d/mediatomb start

念のためにログも確認してみます。

tail -f /var/log/mediatomb 

2010-11-13 08:55:08    INFO: Loading configuration from: /etc/mediatomb/config.xml
2010-11-13 08:55:08    INFO: Checking configuration...
2010-11-13 08:55:08    INFO: Setting filesystem import charset to EUC-JP
2010-11-13 08:55:08    INFO: Setting metadata import charset to CP932
2010-11-13 08:55:08    INFO: Setting playlist charset to EUC-JP
2010-11-13 08:55:08    INFO: Configuration check succeeded.
2010-11-13 08:55:08    INFO: Initialized port: 50500
2010-11-13 08:55:08    INFO: Server bound to: 192.168.0.2
2010-11-13 08:55:09    INFO: MediaTomb Web UI can be reached by following this link:
2010-11-13 08:55:09    INFO: http://192.168.0.2:50500/

どうやら正常に起動した模様です。プロセスも確認してみます。

[root@srv01 ~]# ps aux|grep mediatomb
493      11826  0.0  0.0 269248  3836 ?        Ssl  08:55   0:00 mediatomb -d -u mediatomb -g mediatomb -P /var/run/mediatomb.pid -l /var/log/mediatomb -m /etc -f mediatomb -p 50500 -e eth0
root     11924  0.0  0.0  89184   872 pts/0    S+   08:56   0:00 grep mediatomb

ブラウザからも確認してみます。ポート 50500 で接続できれば成功です。

MEDIATOMB_1289712810361.png

mediatomb の使い方は別のブログに譲るとして、最後にセキュリティを確保しておきます。上位レイヤーでフィルタ設定ができていればよいのですが、ここではインストールしたサーバ内では iptables を使って接続を限定する方法を記述しておきます。ちなみに家庭内 LAN が 192.168.0.* で運用されている場合です。IP アドレス帯域に部分は適宜変更してください。

iptables -A INPUT -s 192.168.0.0/24 -p udp --dport 1900  -j ACCEPT
iptables -A INPUT -s 192.168.0.0/24 -p tcp --dport 50500 -j ACCEPT
/etc/init.d/iptables save
/etc/init.d/iptables restart

設定の反映を確認してみます。

[root@srv01 ~]# iptables --list
Chain INPUT (policy DROP)
target     prot opt source               destination         
・・・・
ACCEPT     udp  --  192.168.0.0/24       anywhere            udp dpt:ssdp 
ACCEPT     tcp  --  192.168.0.0/24       anywhere            tcp dpt:50500
・・・・

最後に、mediatomb が配信するディレクトリをサーバ上に作成してパーミッションの設定をします。mediatomb ユーザに対して o+r 権限を与えてあげれば、ブラウザ上から FileSystem で公開するフォルダを選んで、右上の+ボタンで公開設定すれば、ディレクトリ内に保存した mp3 などを配信することができるようになります。

おしまい。

玄人志向 Linux BOX 組み立てキット 玄箱シリーズ KURO-BOX/PRO
玄人志向 (2007-02-27)
売り上げランキング: 95150

玄箱を使うとNAS+DLNAサーバを構築できますよ!
- スポンサーリンク -