努力したWiki

推敲の足りないメモ書き多数

ユーザ用ツール

サイト用ツール


documents:quick:quick-0006

mediatombクイックセットアップ

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にしてみたらなんかうまく動いている模様。

ソフトウエアのインストール

  1. mysql-server - mediatombで使う。jailに隔離しておく。
  2. samba - コンテンツファイル等のコピーでWindowsクライアントを使うならこれを入れると楽ができる
  3. mysql-client - mediatombで使う。
  4. mediatomb - DLNAサーバ

sambaとmediatombはjailではなくホストに導入する。 jail内だとブロードキャストで問題があるのかうまく機能させられなかった。

mysqlは他での使いまわしも考えてjailに隔離する。

mysqlサーバーのインストール

データベースに 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で指定する。

sambaのインストール

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を起動するため。

mysqlクライアントのインストール

portsの mysql51-client をインストール。make install なり、 portinstall mysql51-client なりでどうぞ。 うちの環境では mysql-client-5.1.58 となった。

mediatombのインストール

portsの net/mediatomb をインストール。make install なり、 portinstall net/mediatomb なりでどうぞ。 うちの環境では mediatomb-0.12.1_5 となった。

インストールできたら、 /etc/rc.conf に以下を登録。

mediatomb_enable="YES"

ソフトウエアの設定

mysqlにユーザとデータベースを作成

まず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#

samba環境設定

/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再起動時に自動で立ち上がる。

mediatomb環境設定

/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クライアントでアクセスするだけ。

documents/quick/quick-0006.txt · 最終更新: 2017/05/07 08:39 by k896951

ページ用ツール