2013/01/08

今更ながら家の音楽環境をDAAPからDLNAに移行したお話


結構むかしに「Ubuntu+Firefly(mt-daap)+SambaでiTunesサーバ構築してみた。」なんてエントリーを書きました。

当時の知識を振り絞って頑張って書いた感があってなんだか懐かしなーとしみじみします。

ただ、私は1年半以上前から実はDAAP環境を使ってませんでした。
構築した最初のうちは結構使っていたのに、いつしかYoutubeやニコ動の作業用BGMで事足りるようになって
メンテもせずに放置して一旦サーバマシン潰しちゃって... てな感じになっておりました。

けど最近になってやっぱり昔集めたCD(のデータ)の音楽聞きたいなーと思うことが増えてきたんで
DAAP環境を再構築しようとしたのですが、Fireflyは開発止まっちゃったわ後継のforked-daapdはなんか微妙な感じだわで
せっかくなのでDLNAに以降することにしました。

今回はそのへんの環境整備のメモ。(あくまで音楽だけ聞ければいいこと前提)


マシン構成的な
現在 Shuttle XG41 で構築したKVMホストサーバがあったのでそこのVMとして構築して見ました。
OSはubuntu12.04,CPUは1core,Memは1Gで Diskは / 20GB, /data 50GBとして/data配下に音楽ファイルをぶち込む感じ。
ついでにUSBのHDDとNasもマウントてバックアップ用途も兼任させる。

OSインストールは本題じゃないから概要だけ。

VM作成は基本virt-managerのGUI通りでOKだけど
/dataはIOのことを考えて念の為以下のように予め作成した上でアサイン

## laughk@vm-host
# -----------------------------------
nice -n 18 sudo dd if=/dev/zero of=/var/lib/libvirt/images/host.data.img bs=1M count=51200
Diskイメージは qemu-img create のほうが作成時は負荷もないし早いんだけど、VMのIOパフォーマンスに結構影響するみたい。
ddだと負荷上がるからnice下げつつ Ctrl+z <-> fg で様子見ながらちびちびとね。

できたディスクイメージは virt-manager でいいから作成したゲストマシンにstrage追加する。
そのあとは適当にfdiskあたりでフォーマットして fstab へ記載する感じ。
Ubuntuの場合は /dev/sdb1 とかで指定しちゃうとOS起動しなくなったことがあったんで必ずUUID指定で書く。
Usb HDDも同様にマウント。


DLNAサーバ用のミドルウェアを導入
ここから先ほど作成したVM上、つまりDLNAサーバにするホスト上での作業です。
今回はMediaTombにしました。以下導入手順。

## laughk@dnla-server
# -----------------------------------

## MediaTombをインストール
sudo aptitude install mediatomb

## 一応サービスは停止
sudo service mediatomb stop

## confを最低限変更
sudo cp -ip /etc/mediatomb/config.xml{,.bkup}
sudo vim /etc/mediatomb/config.xml
/etc/mediatomb/config.xml の差分
--- /etc/mediatomb/config.xml.bkup 2013-01-07 22:21:28.368753002 +0900
+++ /etc/mediatomb/config.xml 2013-01-07 22:34:37.340753000 +0900
@@ -4,8 +4,8 @@
      information on creating and using config.xml configration files.
     -->
   <server>
-    <ui enabled="no" show-tooltips="yes">
-      <accounts enabled="no" session-timeout="30">
-        <account user="mediatomb" password="mediatomb"/>
+    <ui enabled="yes" show-tooltips="yes">
+      <accounts enabled="yes" session-timeout="30">
+        <account user="hogehoge" password="hugahuga"/>
       </accounts>
     </ui>
@@ -49,6 +49,8 @@
     </extended-runtime-options>
   </server>
   <import hidden-files="no">
+    <filesystem-charset>UTF-8</filesystem-charset>
+    <metadata-charset>UTF-8</metadata-charset>
     <scripting script-charset="UTF-8">
       <common-script>/usr/share/mediatomb/js/common.js</common-script>
       <playlist-script>/usr/share/mediatomb/js/playlists.js</playlist-script>
  • server タグのところは WebUI絡みの設定。ブラウザ経由で管理したいので有効にしてログイン機能もONにしておく
  • filesystem, metadata のところは日本語文字化け対策

## laughk@dnla-server
# -----------------------------------

## MediaTomb を再起動
sudo service mediatomb start

## プロセスとポートを確認、何も出なかったら設定ミスってる可能性あり。
pgrep -lf mediatomb
sudo netstat -nplt | grep ':49152'

こんな感じでMediaTombの設定は完了です。
あとはrsyncとかで /data 配下の適当なディレクトリに音楽ファイルをぶち込みます。

ブラウザ経由で追加する音楽ファイルの取り込み
ここからはブラウザ経由での作業です。
作業マシンのブラウザから以下にアクセスします。
http://xxx.xxx.xxx.xxx:49152   ※ xxx.xxx.xxx.xxxはDLNAサーバのIP
ログイン機能を有効にした場合はログインします。
すると以下のような画面になります。




左側の「Filesystem」を選択し、音楽データが入っている一番上の階層のディレクトリを選択。
その状態で画面右上の + に 回りそうな矢印が重なってるようなアイコンをクリック。
以下のような画面になります。




モードの違いはよくわからなかったけど ScanMode: Timed, Scanlevel: Full で無事読み込みが確認できました。
特にシンクしているような画面は出ませんが待っているとDatabaseにどんどん音楽データが突っ込まれていきます。
これで取り込みは完了です。


クライアントの準備
ググれば色々出てくるんで詳細な比較はしませんが、
自宅で普段使ってるマシンもUbuntuで、今回は音楽だけ聞ければOKなのでRythmboxのプラグインを導入します。

こちら(Ubuntu 12.04 - Rhythmbox & Totem as UPnP/DLNA clients)を参考に以下のとおり

## laughk@client
# -------------------------------------
sudo aptitude install grilo-plugins-0.1

cd /tmp
## Ubuntu12.10 64bitの場合。詳細は参考リンク先を参照
wget http://ppa.launchpad.net/dobey/rhythmbox-dailies/ubuntu/pool/main/r/rhythmbox/rhythmbox-plugin-grilo_2.97+r8100-29~quantal1_amd64.deb

ar x rhythmbox-plugin-grilo_*~precise1_*.deb data.tar.gz
tar -zxvf data.tar.gz
sudo cp -R usr/lib/rhythmbox/plugins/grilo /usr/lib/rhythmbox/plugins/
rm -rf data.tar.gz usr

tar玉の中を覗いてみてもコピーしているファイル以外はドキュメントくらいしかないので
素直にdpkgで入れればいんじゃないかなーと思いつつも、ここは参照元に従っておきます。

この状態でRythmboxを起動し、「Edit」->「plugins」から「Grilo media browser」を有効にすれば
以下のように「Shared」項目が現れ、同一ネットワーク上のDLNAサーバを自動的に探して表示してくれます。
再生もできます。



さいごに
最初はFireflyの導入より面倒かもしれないかと思ってましたが全然簡単でした。
音楽聞くのにYoutubeやニコ動も便利ですが、過去に自分で集めた音楽聞きたい時はDLNA便利ですね。
forked-daapdよりもかなり安定しています。

ではでは、お疲れ様でしたー。