2010/07/12

Ubuntu+Firefly(mt-daap)+SambaでiTunesサーバ構築してみた。


(2013/01/08 追記)

こちらのFireFly関連の情報はすでに古いものとなっており、
おそらく最新のバージョンのUbuntuではapt経由でのFireflyのインストールはできなくなっています。

私も最近DAAPからDLNAへ移行をしたのでよろしければそちらの記事を参照ください。
-> 今更ながら家の音楽環境をDAAPからDLNAに移行したお話

(2013/01/08 追記 終わり)


なんだかんだで気がついたら1Rの部屋に結構使うPCが3台も。
しかも気分によってCDからの音楽データの取り込むPC変えていたから管理がぐちゃぐちゃ。。。。
どうしたもんかなー。
ってずっと思っていたがある日某O氏に「UbuntuでFireflyっていうの使えば簡単にiTunesサーバ作れるよー」っと言われた。

調べてみるとUbuntuでもRhythmbox使えばクライアントとしていける模様。
せっかくなので
あまっていた4年くらい前のノートPC+バッファローの外付けHDD 1T(500G:500Gでディスクは切ってある)
で構築してみることにした。
ノートPCのスペックもPentiumM1.73G、メモリ1.5Gだったわけでサーバとしては申し分ないでしょ。

今回は構築の際の主要部分のメモ。

音楽データの差分見ながらひとつのHDDに合わせていった作業まではメモらないよ。

あと、ここの手順をマネして何かあっても一切責任は取れませんので自己責任でお願いしますよー。
1. Ubuntuサーバ構築
  本家サイトからServer版ubuntuのisoファイルをとってくる。
  ブート用ディスクの作成、詳細のインストール方法はすでにいるんな情報があるから割愛。
  #インストールの段階でSambaは入れてしまったほうがラク。

  今回はUbuntu10.04 Serverを使いました。


2. 基本環境の整備

2-1. SSH(Server)のインストール

□laughk@Ubuntu_Server-Console
======================================
sudo aptitude install openssh-server
  # 別に必須ではないけどWebページ参照しながらコピペとかが出来なかったり,
  # 直接マシンをいじって設定するのは何かと不便なのでここからはSSHで作業する。
  #
  # とりあえずグローバルに公開するわけではないので設定はデフォのままにしておく。

sudo service sshd start
  # openssh-serverを起動する

ifconfig
  # ブラウザから操作するためにホストのipアドレスを控えておく

exit
  # SSHが動いたらあとは別の端末から操作するのでログアウトしてPCのフタは閉めておく

2-2. 同一ネットワーク上のPCからSSH接続
 #家で普通にやる分にはオンライン上のPCで問題ないはず。。。
   毎回ipで接続はいろいろイヤなのでとりあえずhostsに以下を追記。

□laughk@Ubuntu_Desktop
=====================================
sudo vi /etc/hosts
【追記内容】------------------
[さっき控えたip]         [構築したサーバのホスト名]
                ^^^^^^^^ <-tab区切り
 ----------------------------
【追記例】-----------------
10.0.1.1 laugk-PC
 ----------------------------

ssh [サーバのユーザー名]@[ホスト名(ipでも可)]
   # Ubuntuサーバに接続

 ※デスクトップマシンもUbuntu使うことが前提になっている。
 ※実はmacでも同じ手が使える。windowsからの場合はTeratermとかの設定でどうにかできるのかな?(不明)

-- 追記 --
Windowsの場合は以下の場所に hosts ファイルがあるようです。
XP, Vista, 7  ->   C:\WINDOWS\system32\drivers\etc
2000          ->   C:\WINNT\system32\drivers\etc
このフォルダ以下にある拡張子なしの "hosts" というやつです。
もしかしたら編集の際は管理者権限が必要になるかもしれませんが参考までに。
メモ帳やサクラエディタなんかで編集すればよいでしょう。

2-3. 準備とか
※Ubuntuの場合デフォでbashになるので、特に環境変数の指定は不要。

2-3-1. まずは更新

□laughk@Ubuntu_Server-SSH
=====================================
sudo aptitude update
sudo aptitude upgrade

sudo shutdown -r now
 # 更新を反映さあせるため再起動

ping [ホスト名(ipでも可)]

ssh [サーバのユーザー名]@[ホスト名(ipでも可)]
  # 疎通ができることを確認して再びログイン
2-3-2. 外付けのHDDのマウント
##デスクトップ版と違って自動的にマウントされるとかはないんだなorz

□laughk@Ubuntu_Server-SSH
=====================================
sudo mkdir /media/SmbVol1
sudo mkdir /media/SmbVol2
 # 適当にマウントポイントを作っておく
 # まあ適当でいいんだけどなんとなく/media配下に。
 # 普通は/mnt配下とかなのかな?

sudo fdisk -l
 # 外付けのHDDがどう認識されているか確認
 # いろいろズラーっと出てくるけど大事なのは
 "警告: GPT (GUID パーティションテーブル) が '/dev/sdb' に検出されました! この fdisk ユーティリティは GPT をサポートしません。GNU Parted を使ってください。"
 # のメッセージ下にある以下のような行。※別に異常があるわけではないので、特にGPartedとかは使う必要はなし。
 -------
デバイス ブート      始点        終点     ブロック   Id  システム
/dev/sdb1               1       65296   524490103   83  Linux
/dev/sdb3           65297      121601   452267212+  83  Linux
 -------
 # ちなみにこれは1TのHDDを500G,500Gでパーティションを切っているディスクを接続している例。
 # ディスクの先頭の方から認識されるみたい。

sudo mount /dev/sdb3/ /media/SmbVol1
sudo mount /dev/sdb1/ /media/SmbVol2
 # 必要に応じたマウントポイントにマウント、sdb3がSmbVol1になっているのは個人的な事情で仕様。
 # 計画性がない管理だったんで。。。
 # ちなみに予めext4でフォーマットしておくこと推奨。
 #
 # fstabへの追記はしないでおく。
 # 理由はUSB外付けHDDの起動時の読み込むタイミングが遅いのかなんなのかは不明だけど、
 # とにかく、うまくいかないどころかOSがまともに上がってこなくなったから。
 # そのときはディスクからブートしてレスキューモードで入ってfstabを元に戻して復旧。

2-3-3. Sambaの設定
ネットワーク越しに簡単に音楽データの追加・編集・削除等の管理がやりやすいように先にSambaを設定しておく。

□laughk@Ubuntu_Server-SSH
=====================================
sudo aptitude install samba
 ※もしもUbuntuをインストルする際にSambaをインストールしていなかった場合はインストールする。

ls -l /etc/samba/smb.conf
sudo cp -ip /etc/samba/smb.conf /etc/samba/smb.conf.`date +%Y%m%d`
sudo vi /etc/samba/smb.conf
 # バックアップはとっておいたほうが無難。
 # 設定は基本的にデフォのままでOK
 # 必要なディレクトリを追加する感じで
【追記例】-----------------
※最下行に追記
#MusicData
[MusicBox]
   comment = MusicData
   path = /media/SmbVol1/MediaFiles/Music/
   public = yes
   writable = yes
   only guest = yes
--------------------------
 # こんな感じで音楽データが保存されているディレクトリを指定する。
 # スキャンする際に配下のディレクトリ以下の層もすべてスキャンするので、
 # Music/[アーティスト名]/[アルバム名]/hogehoge.mp3
 # みたいな管理の仕方でも問題なし。

sudo chmod -R 755 /media/SmbVol1/MediaFiles/Music/
sudo chown -R nobody:nogroup /media/SmbVol1/MediaFiles/Music/
 # PC側からもデータの書き込み、編集ができるようにパーミッションを変えておく。

sudo service smbd start
 # Sambaを起動

3. FireFly(mt-daap)のインストール
□laughk@Ubuntu_Server-SSH
=====================================
sudo aptitude install mt-daapd
 # インストールはこれでOK,"firefly"ではないので注意。

ls -l /etc/mt-daapd.conf
sudo cp -ip /etc/mt-daapd.conf /etc/mt-daapd.conf.`date +%Y%m%d`
sudo vi /etc/mt-daapd.conf
 # バックアップはとっておく。
 # パスワードの変更とmp3等の音楽データを置くディレクトリのパスを設定しておく。
【変更内容】--------------------------------
※基本的にはデフォのままで。以下の行に注目
admin_pw = xxxxxxx
 # パスワードの設定。
 # ここはデフォのままより変えておいたほうがいい。

db_type = sqlite
↓
db_type = sqlite3
 # デフォでsqlite3になっているのなら特に変更する必要はなし。確認はしておくこと。

mp3_dir = xxxxxx
↓
mp3_dir = /media/SmbVol1/MediaFiles/Music/ (共有する音楽データを置いているディレクトリ)
------------------------------------------
 # 普通に使う分にはこれだけやれば問題なし。
 # あとは必要に応じて設定を変えるべし。

sudo service mt-daapd start
 # 編集ができたら"Firefly(mt-daap)"を起動する

exit
 # ターミナル作業は終了。特に用がなくなったならサーバーから抜ける。

同一ネットワーク上のPCのブラウザで以下のアドレスにアクセス。
http://[控えたipアドレス]:3689/
 ※/etc/hostsに情報を追記している場合はipでなくホスト名にしても大丈夫。

まずはパスワードを聞かれるので、
[ID]        admin
 [passwd]    mt-daap.confで設定したパスワード
と入力。




するとこんな感じの画面が出るはず。
ここで「Start Scan」をクリックするのを忘れずに。
また、ここでお好みでプレイリストや各種設定が変更できるので必要に応じて設定できる。

以上で準備完了!
あとは使うだけ。

4. クライアントの設定
 Ubuntu の場合は Rhythmbox , Windows&Mac の場合は iTunesを使うのが手っ取り早い

 
Ubuntu - Rhythmbox の場合

Mac OSX - iTunes の場合

 共有のところに"firefly svn-...."という項目が増えているはず。
 そうすると上のスクショにあるようにFireFlyの設定の際に指定したディレクトリ配下の音楽データがズラーッと表示されるはず。
 もちろん普通に再生できる。
 これでPCに音楽データをいちいち保存していなくてもサーバの方にさえあればいくらでも聞ける!

※追記
 iTunes10以降、FireFlyのライブラリが見えなくなってしまいました。
 Windowsの場合はSngbirdのVer.1.8以降でDAAPクライアントプラグインが使えるのですが、
 Macの場合は10から9.2.1へダウングレードするくらいしか回避策がないようです。

※さらに追記
iTunes10.0.1でFireFlyのライブラリが見えない不具合は解消されています。
ちなみに以前iTunes8 -> 9 にバージョンが上がった際も同様のことがあったようです。

5. Androidでもできるよ。
5-1. DAAP Media Playerのインストールと設定

マーケットで"daap"と検索
-> すると「DAAP Media Player」が出てくるのでインストールすればOK

5-2. DAAP Media Player の設定と使い方

以下、サーバをグローバルに見せていない場合はローカルのネットワークに接続していることが前提。
まあ普通の場合は家のWifi環境に接続していることが前提になると思う。

起動してみると自動的にスキャンをしてくれるけど、あらかじめ情報を登録してしまったほうがラク。
[Add Server]をタップして見ると下のスクショのような画面になるので

[DAAP Share Name] ->  適当に自分の好きな名前でOK
[URL and Port]    ->  グローバルに公開していない場合URLはサーバのipアドレスのみでOK
                           グローバルに公開している場合は持っているURL または グローバルip
                           また、Portもデフォの設定でOK




すると右側のような画面になるので、登録したDAAPをタップ。
※ちなみに下に出ているのは自動的にスキャンしてきたもの。
    別にこれをタップしてもいいけど認識するまでちょっと時間が掛かる。

そうするとあとは流れにそってタップしていくだけでサーバ上に保管してある音楽を聞くことができる。
画面はこんな感じ。



ジャケットに登録しているイメージの表示が出来なかったり、たまにブツブツいって怪しい時もあるけど
普通に音楽聴いている分にはそれほど問題にはならない。

寝ながら音楽聴いたりとか、いちいちPC起動するまでもないときとかは結構便利。


6. おまけ
 Ubuntu(Desktop)でSambaを使う場合、いちいちネットワーク経由でアクセスするのはいろいろ不便なので
 smbmountコマンドでSambaの共有ディレクトリをマウントしてしまうとラク。

□laughk@Ubuntu_Desktop
==============================
sudo aptitude install smbfs
 # smbfsをインストールしてsmbmountコマンドを使えるようにする。

ls -ld /media/MusicData
sudo mkdir /media/MusicData
ls -ld /media/MusicData
 # 適当な場所にマウントポイントを作っておく。

sudo smbmount //[サーバのip]/MusicBox /media/MusicData  -o username=[サーバのユーザ名],iocharset=utf8,uid=${USER},gid=${USER},rw
 # マウントポイントにマウントする。

ls -l /etc/fstab
sudo cp -ip /etc/fstab /etc/fstab.`date +%Y%m%d`
sudo vi /etc/fstab
【追記内容】-------------------------------
※以下を最下行に追記
//[ホスト名]/MusicData /media/MusicData smbfs username=[サーバのユーザ名],password=[サーバのユーザ名のパスワード],iocharset=utf8,uid=[PCのユーザ名],gid=[PCのユーザ名],rw 0 0
-------------------------------------------
 # こんな感じでfstabに追記するのもあり。

こうすると、あたかもUSBの外付けHDDの様にSamba上のディレクトリにアクセスできる。


こんな感じでいちいちネットワークの共有ディレクトリのところまで行かなくてもディレクトリの中身が確認・編集できる。
CDから音楽データを取り込む際の保存先パスの指定が必要だったり、ターミナルから直接操作したいというときなどにはかなり便利。


以上、お疲れ様でしたー。