mediatombは開発が終了しています。後継のgerbera( http://gerbera.io/ )を使う場合はportsに無い様ですので自力で。
2017/05/07
Media Tombの開発は終わってしまいました。このサイト管理者おすすめはServiioメディアサーバーになります。こちらのご検討を。
2011年08月19日
DLNAサーバとしてMediaTombを使った構築のメモ。
FreeBSD/AMD64 8.2 RELEASEで構築しています。
2013年3月12日
mediatomb-0.12.1_9にしたところ、CP932を理解してくれなくなりました。ログをみたらeuc-jpにされてた。
filesysem-charset,metadata-charaset,playlist-charaset,の3つをUTF-8にしてみたらなんかうまく動いている模様。
sambaとmediatombはjailではなくホストに導入する。 jail内だとブロードキャストで問題があるのかうまく機能させられなかった。
mysqlは他での使いまわしも考えてjailに隔離する。
データベースに mysql or sqlite が必要になる。情報収集の結果、今回はmysqlを選択した。 jailを作り、mysqlと名づける。その中にportsの mysql51-server をインストール。make install なり、 portinstall mysql51-server なりでどうぞ。 うちの環境では mysql-server-5.1.58 となった。
インストールできたら、 /etc/rc.conf に以下を登録。
mysql_enable="YES" mysql_dbdir="/var/db/mysql"
デフォルトのデータベース格納ディレクトリは“/var/db/mysql”になるので、変更しなければmysql_dbdirは不要。 ここ以外の場所を指定したい場合はmysql_dbdirで指定する。
portsの net/samba35 をインストール。make install なり、 portinstall net/samba35 なりでどうぞ。 うちの環境では samba35-3.5.11 となった。設定で楽をするため、SWAT の有効化を行っておく。
インストールできたら、 /etc/rc.conf に以下を登録。
samba_enable="YES" inetd_enable="YES"
inetd_enableはSWATを使うために必要。※inetd経由でSWATを起動するため。
portsの mysql51-client をインストール。make install なり、 portinstall mysql51-client なりでどうぞ。 うちの環境では mysql-client-5.1.58 となった。
portsの net/mediatomb をインストール。make install なり、 portinstall net/mediatomb なりでどうぞ。 うちの環境では mediatomb-0.12.1_5 となった。
インストールできたら、 /etc/rc.conf に以下を登録。
mediatomb_enable="YES"
まずjailにインストールしたmysqlを起動する。
mysql# /usr/local/etc/rc.d/mysql-server start Starting mysql. mysql#
※次回からはjail再起動時に自動で立ち上がる。
また、/etc/hosts に以下のエントリを追加する。
192.168.1.31 mysql
jailのホスト名 mysql から 192.168.1.31 を引けるようにする。192.168.1.31はこのjailに割り当てたIPアドレス。 これが無いと、jail外部からの接続が出来ないので注意。
次にmediatombで使用するデータベースとそのデータベースを使用する際のデータベースユーザを作成する。 以下は、データベース mediatomb、ユーザmediatomb、ユーザのパスワード'password'を定義した例。
mysql# mysql Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2 Server version: 5.1.58 FreeBSD port: mysql-server-5.1.58 Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved. This software comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to modify and redistribute it under the GPL v2 license Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> create database mediatomb; Query OK, 1 row affected (0.00 sec) mysql> grant all on mediatomb.* to 'mediatomb'@'localhost' identified by 'password'; Query OK, 0 rows affected (0.00 sec) mysql> grant all on mediatomb.* to 'mediatomb'@'mysql' identified by 'password'; Query OK, 0 rows affected (0.00 sec) mysql> quit Bye mysql#
'mediatomb'@'mysql'は、jailのIPアドレスを使わせるために定義してある。これもエントリがないと外部から接続できない。
次に、作成したデータベースにテーブルを作成する。
これはmediatomb をインストールしたホスト側の/usr/local/share/mediatomb/mysql.sqlを実行させればよい。
※以下はホストで行ったオペレーション
amanda# mysql -h 192.168.1.31 -u mediatomb -p -D mediatomb Enter password: password Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 11 Server version: 5.1.58 FreeBSD port: mysql-server-5.1.58 Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved. This software comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to modify and redistribute it under the GPL v2 license Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> \. /usr/local/share/mediatomb/mysql.sql Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 1 row affected (0.01 sec) Query OK, 1 row affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Rows matched: 0 Changed: 0 Warnings: 0 Query OK, 1 row affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 1 row affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) mysql> quit Bye amanda#
/etc/inetd.confを編集する。
#swat stream tcp nowait/400 root /usr/local/sbin/swat swat
の行を見つけ、先頭の“#”をはずす。 それから、/etc/rc.d/inetd start を実行する。
amanda# /etc/rc.d/inetd start Starting inetd. amanda#
inetdが起動する。既に起動しているのであれば /etc/rc.d/inetd restart を実行。
amanda# /etc/rc.d/inetd restart Stopping inetd. Starting inetd. amanda#
この状態で、http://192.168.1.20:901/ をブラウザで参照する。
BASIC認証のダイアログが出るので、rootアカウントを入れる。このUIで smb.conf の修正を行う。
最終的にうちの環境での smb.conf は
# Samba config file created using SWAT # from UNKNOWN (192.168.1.xxx) # Date: 2011/08/xx xx:xx:xx [global] dos charset = CP932 workgroup = IBMPEERS netbios name = DLNA server string = Samba Server interfaces = 192.168.1.33 security = SHARE log file = /var/log/samba/log.%m max log size = 50 load printers = No dns proxy = No hosts allow = 192.168.1. [mediatomb] path = /home/usb001 read only = No guest ok = Yes
となった。
interfaceにはホストのIPアドレスエリアス 192.168.1.33 を指定した。エリアスを使わないなら不要。
また、このsambaのバージョンでは unix charset のデフォルトが UTF-8 になっている。これは直さないでおく。
理由は、mediatombがUTF-8でしか日本語表示してくれないので、FreeBSD側の記録時文字コードも UTF-8 を使う必要があるため。
※ターミナルのLANGがEUC-JPのままコンテンツの格納されたディレクトリを見ると文字化けした状態になるので注意。
共有は mediatomb のみ作成し、ディレクトリ /home/usb001 にマッピングされる。コンテンツファイルはここに格納される。
※ちなみにこのディレクトリには外付けのHDDがマウントされている。
ワークグループやNETBIOS名は自分の環境に合わせておけば問題ない。この設定の場合、WindowsクライアントからはDLNAというサーバが動いているように見える。
編集が終わったら、/usr/local/etc/rc.d/samba start を実行する。
amanda# /usr/local/etc/rc.d/samba start Removing stale Samba tdb files: ........ done Starting nmbd. Starting smbd. amanda#
※次回からはjail再起動時に自動で立ち上がる。
/usr/local/etc/mediatomb/config.xml を編集する。 このとき、config.xmlはUTF-8のファイルなのでUTF-8を利用可能なエディタを使うこと。 素のviだとおかしくなるかもしれない。
以下はデフォルトのconfig.xmlとの差分。
dlna# diff -c config.xml.dist config.xml *** config.xml.dist --- config.xml *************** *** 11,23 **** <home>/var/mediatomb</home> <webroot>/usr/local/share/mediatomb/web</webroot> <storage> ! <sqlite3 enabled="yes"> <database-file>mediatomb.db</database-file> </sqlite3> ! <mysql enabled="no"> ! <host>localhost</host> <username>mediatomb</username> <database>mediatomb</database> </mysql> </storage> <protocolInfo extend="no"/><!-- For PS3 support change to "yes" --> --- 11,24 ---- <home>/var/mediatomb</home> <webroot>/usr/local/share/mediatomb/web</webroot> <storage> ! <sqlite3 enabled="no"> <database-file>mediatomb.db</database-file> </sqlite3> ! <mysql enabled="yes"> ! <host>192.168.1.31</host> <username>mediatomb</username> <database>mediatomb</database> + <password>password</password> </mysql> </storage> <protocolInfo extend="no"/><!-- For PS3 support change to "yes" --> *************** *** 39,44 **** --- 40,47 ---- --> </server> <import hidden-files="no"> + <filesystem-charset>UTF-8</filesystem-charset> + <metadata-charset>CP932</metadata-charset> <scripting script-charset="UTF-8"> <common-script>/usr/local/share/mediatomb/js/common.js</common-script> <playlist-script>/usr/local/share/mediatomb/js/playlists.js</playlist-script>
filesystem-charsetにUTF-8を指定するのは、mediatombがUTF-8でしか日本語を解釈してくれないため。 ※sambaのunix charsetをEUC-JPに指定してもmediatombのUIにはエントリが出てこない。
metadata-charsetがCP932なのは、コンテンツに書き込まれたタグのコードはSJISのものが多かろうという判断から。
編集が終わったら、usr/local/etc/rc.d/mediatomb start を実行する。
amanda# /usr/local/etc/rc.d/mediatomb start Starting mediatomb. amanda#
※次回からはjail再起動時に自動で立ち上がる。
うまく設定が出来ていれば、Windowsクライアントのネットワークから、ネットワークデバイス MediaTomb のアイコンが見えている。
また、\\DLNA\mediatomb で共有フォルダmediatombへアクセスができるようになっている。
この共有フォルダは、sambaの定義に従い、ホストのディレクトリ/home/usb001 にマッピングされている。
このフォルダにコンテンツファイルをコピーする。
コピー後、ネットワークデバイス MediaTomb のアイコンを右クリックし、右クリックで“デバイスのWebページを開く”を選択すると、mediatombのUIがブラウザに表示される。mediatomb UI上の「Filesystem」を選択し、先ほどのディレクトリ usb001 を開くと、先にコピーしたコンテンツファイルが一覧されている。
この状態で、一覧上にある“add as autoscan dir”アイコンをクリック、メディアスキャンのタイミングとタイプをセットすると、このディレクトリにコンテンツファイルが追加されるたびにデータベースに登録されていく。
mediatomb UI上の「Database」を選択すると、その状況がわかる。
あとは、DLNAクライアントでアクセスするだけ。