さくら VPS の Debian Squeeze に Subsonic を導入してみた

さくら VPS に Subsonic を導入しストリーミングメディアサーバーを構築してみます。

Debian/Ubuntu の場合 ここ に簡単なインストールガイドがあります。

$ sudo apt-get install openjdk-6-jre
$ wget http://www.subsonic.org/pages/download2.jsp?target=subsonic-4.7.deb
$ sudo dpkg -i subsonic-4.7.deb

デフォルトでは Subsonic プロセスは root で行われるので、セキュリティ上よくありません。特定のユーザーに変更するには /etc/default/subsonic の内容を適宜変更しておきます。また、同じファイルでポート番号 (default: 4040) や Java のメモリ (default: 100) の設定や他のスタートアップ時のパラメーターを指定しておきます。

export LANG="ja_JP.UTF-8"
SUBSONIC_ARGS="--max-memory=200 --https-port=443 --port=80"
SUBSONIC_USER=subsonic

オリジナルのデータの codec がクライアントのプレーヤーでサポートされていない場合などには、メディアデータ再生時にオリジナルデータが特定のフォーマットへ変換 (transcoding) されます。その際、Subsonic 自体が transcoding を行うのではなく、サーバーのコマンドラインツールに依存しています。これらがないと、Subsonic はオリジナルデータのフォーマットでストリーミング再生を行うだけとなるようです (cf. Transcoders)。

2つの重要な transcoding のツールは ffmpeglame です。これらはもともと Subsonic に含まれるようですが、サーバーのものと入れ替えておいた方が良いと思います (Debian Squeeze での ffmpeg のインストールは こちら を参照)。

$ sudo apt-get install ffmpeg lame
$ sudo mv /var/subsonic/transcode/ffmpeg /var/subsonic/transcode/ffmpeg_orig
$ sudo mv /var/subsonic/transcode/lame /var/subsonic/transcode/lame_orig
$ sudo ln -s /usr/bin/ffmpeg /var/subsonic/transcode/ffmpeg
$ sudo ln -s /usr/bin/lame /var/subsonic/transcode/lame

設定が終われば subsonic 再起動します。

$ sudo /etc/init.d/subsonic restart

あとはクライアントのブラウザからアクセスしてユーザーの追加やパスワードの設定、デフォルトの言語やメディアデータの場所の指定などを行います。

https://ryogan.org/blog/wp-content/uploads/2013/02/wpid-subsonic_safari_01.png

いくつかデータをアップロードして「Scan media folders now」をクリックします。フォルダがスキャンされると下の画像のようにアップロードしたメディアデータが再生可能となります。

https://ryogan.org/blog/wp-content/uploads/2013/02/wpid-subsonic_safari_02.png

うまく再生されないときは「ヘルプ」からログが確認できるので参考になるかもしれません。

Subsonic は動画のストリーミングサーバーとしても活躍しそうです (しかし、この機能を使用し続けるには Donate をする必要がある模様…)。

https://ryogan.org/blog/wp-content/uploads/2013/02/wpid-subsonic_safari_03.png

折角なので iOS のアプリ iSub も試してみました。

https://ryogan.org/blog/wp-content/uploads/2013/02/wpid-subsonic_safari_04.png

イコライザでの音質調整、Last.fm や Twitter との連携など、細かい融通が利き、操作性も確かによいのですが、このアプリで利用するための API を使い続けるためには、先と同様 PayPal 経由の寄付でライセンス認証を行う必要があるようです。こうなるともう「寄付」ではありませんね ^^;

他にも携帯電話やタブレット、デスクトップや Google Chrome 拡張など、サードパーティ開発者による多くのアプリケーションが利用できるようです (cf. Subsonic Apps)。

以下は Mac OS X (Mountain Lion) での subAir (Adobe Air) の様子。フリーですが日本語の表示には問題があるようです。

https://ryogan.org/blog/wp-content/uploads/2013/02/wpid-subair.png

どのようにしてメディアデータを同期するか

さくら VPS の容量に余裕があるとしても、私の場合、ローカル (Mac OS X, Mountain Lion) のすべての iTunes のデータと同期を取るほどには余裕はありませんでした。そこで以下の様な rsync を用いた方法でひとまず、いくつかのデータのみアップロードしてみました。

#!/bin/sh
REMOTE="USERNAME@example.com"
MUSIC="/Volumes/itunes/Music/iTunes/iTunes Media"
MUSIC_LST="$HOME/Music/Subsonic/subsonic_music.lst"
MOVIES="/Volumes/disk/Movies"
MOVIES_LST="$HOME/Music/Subsonic/subsonic_movies.lst"

# -r (recursive) を入れること!
rsync -arvz --delete --force --iconv=UTF8-MAC,UTF-8 \
      -e "ssh -p 10022" --rsync-path="sudo rsync" \
      --files-from="$MUSIC_LST" "$MUSIC/" "$REMOTE:/var/www/subsonic/music"

rsync -arvz --delete --force --iconv=UTF8-MAC,UTF-8 \
      -e "ssh -p 10022" --rsync-path="sudo rsync" \
      --files-from="$MOVIES_LST" "$MOVIES/" "$REMOTE:/var/www/subsonic/movies"

アップロードしたい音楽データを subsonic_music.lst にリストアップしておきます。注意すべきは files-from オプションでリストを読み込む場合 a オプションを指定していても r オプション (recursive) は指定する必要があるという点です (cf. rsync to copy only particular folders)。私はここではまりました…

【追記】

この方法でアップロードしてしばらく使用していたのですが、自動的にスキャンされるものとされないものがでてきて、不思議に思っていました。どうも Subsonic は音楽フォルダのタイムスタンプを見て新しく取り込むべきデータを判断しているようです。上記の rsync を用いた方法では、タイムスタンプもローカルのものが反映されるので、古いタイムスタンプのものは Subsonic に取り込まれません。Subsonic をあまり使用していなかったということもあったのですが、この単純なことに長い間気づきませんでした…orz

ですので rsync でデータを同期する場合、以下のように --no-t を付加することにしたところ、自動スキャンからもれるデータはなくなりました。

rsync -arvz --no-t --delete --force --iconv=UTF8-MAC,UTF-8 (以下略)

すでに取り込んだものは touch で変更しておきました。

cd /var/www/subsonic/music
find . -type f -print0 | xargs -0 touch

もう一つ気づいた問題は、日本語の文字化けが一部のデータで起こること。これは id3 のタグデータが CP932 になっていたことに起因していました。

python-mutagen に含まれる mid3iconv で一括変換して対応しました。

find . -name "*.mp3" -print0 | xargs -0 mid3iconv -e CP932 -d

iTunes から乗り換えるべきか

最近ではネットワークにつながっていない環境の方が珍しくなってきましたので、こうした容量を取るメディアデータをサーバーに置いておけば、iPhone などの携帯端末からもその容量の少なさを気にせず音楽データを楽しむことができます。しかし、一方で Subsonic は FLAC などの高音質を維持する可逆圧縮コーデックであってもダウンサンプリングしてストリーミング再生を行います。最近ではとくに PC オーディオにも注目が集まって、デジタルデータでもなるべく高音質で音楽を楽しもうという動きがありますので、そうしたユーザーにとっては、まだ完全に移行するとまでは行かないかもしれません。

さくら VPS の Debian Squeeze に Subsonic を導入してみた」への2件のフィードバック

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください