Raspberry Pi2にSubsonicを導入する
2017/01/31
Subsonicとは
Java製でマルチプラットフォーム(Windows, Mac, Linux)で動作するミュージックストリーミングサーバーです。デモページがあるのでどんなことが出来るかはこちらで確認してみてください。
これがあればどんなOSのPCだろうがiPhone・Androidだろうが持っている曲を再生することができます。トランスコーディングにも対応しているのでiTunesで購入した(.m4aなんかの拡張子の)曲でも再生できます。
家のVmware Esxiサーバーの調子が悪くなったので、Raspberry Pi 2にミュージックストリーミングサーバーを担当してもらうことに。
Raspbianを導入する
 Raspberry Pi にOSをインストールするにあたって、SDカードをフォーマットする必要があります。Windowsマシンでフォーマットする場合、容量が大きいSDカードに対してFAT32は選べず、exFATの選択肢が表示されるようです。フォーマットするフリーソフトを探していたのですが、どうやらwin32diskimagerというものでフォーマットとimgファイルの書き込みをまとめてやってくれるようなのでこちらを使用してみました。
Raspberry Pi にOSをインストールするにあたって、SDカードをフォーマットする必要があります。Windowsマシンでフォーマットする場合、容量が大きいSDカードに対してFAT32は選べず、exFATの選択肢が表示されるようです。フォーマットするフリーソフトを探していたのですが、どうやらwin32diskimagerというものでフォーマットとimgファイルの書き込みをまとめてやってくれるようなのでこちらを使用してみました。
http://sourceforge.net/projects/win32diskimager/files/latest/download
次に公式サイトからRaspbianのimgファイルを取得。
subsonicのダウンロード
Java実行環境の取得
| 1 | pi@raspberrypi:~ $  sudo apt-get install oracle-java8-jdk | 
alternativesで別のJavaが選択されている場合があるので8を選択する
| 1 2 3 4 5 6 7 8 9 10 11 12 13 | pi@raspberrypi:~ $ sudo update-alternatives --config java There are 3 choices for the alternative java (providing /usr/bin/java). Selection Path Priority Status ———————————————————— * 0 /usr/lib/jvm/java-6-openjdk/jre/bin/java 1061 auto mode 1 /usr/lib/jvm/java-6-openjdk/jre/bin/java 1061 manual mode 2 /usr/lib/jvm/java-6-sun/jre/bin/java 63 manual mode 3 /usr/lib/jvm/jdk1.7.0/bin/java 1 manual mode 4 /usr/lib/jvm/jdk1.8.0/bin/java 1 manual mode Press enter to keep the current choice[*], or type selection number: 4 update-alternatives: using /usr/lib/jvm/jdk1.8.0/bin/java to provide /usr/bin/java (java) in manual mode. | 
javaのバージョン確認
| 1 2 3 4 | root@raspberrypi:~# java -version java version "1.8.0" Java(TM) SE Runtime Environment (build 1.8.0-b132) Java HotSpot(TM) Client VM (build 25.0-b70, mixed mode) | 
subsonicのダウンロードとインストール
| 1 2 3 4 5 6 7 8 | pi@raspberrypi:~ $ wget http://subsonic.org/download/subsonic-5.3.deb pi@raspberrypi:~ $ sudo dpkg -i subsonic-5.3.deb Selecting previously unselected package subsonic. (Reading database ... 124851 files and directories currently installed.) Preparing to unpack subsonic-5.3.deb ... Unpacking subsonic (5.3) ... Setting up subsonic (5.3) ... Processing triggers for systemd (215-17+deb8u2) .. | 
ユーザを新規追加
| 1 | pi@raspberrypi:~ $ sudo adduser subsonic | 
rootをsubsonicに変更
| 1 2 3 | sudo nano /etc/default/subsonic ↓以下に変更 SUBSONIC_USER=subsonic | 
subsonicの再起動
| 1 | sudo service subsonic restart | 
GCが頻出
以下のコマンドでログを確認できます。
| 1 | tail -f /var/subsonic/subsonic_sh.log | 
こんな感じにログが出てきます。起動時にFull GCが発生しまくりでした。
| 1 2 3 | [Full GC 22352K->14355K(32012K), 0.5163650 secs] [GC 24211K->15490K(34936K), 0.0250100 secs] [GC 25346K->15533K(34936K), 0.0264300 secs] | 
メモリのチューニングは「/etc/default/subsonic」にある引数を調整すればよいです
| 1 | SUBSONIC_ARGS="--max-memory=300" | 
とりあえず300としてみました。
トランスコーディングの追加
ffmpegを使用しますが、リポジトリにない(無くなった)ので自力でコンパイルする必要があります。以下を参考に用意。
lameのmake
sourceforgeから最新のLAMEをダウンロードする。
| 1 2 3 4 5 6 | tar zxvf lame-3.99.5.tar.gz cd lame-3.99.5/ ./configure make -j9 sudo make install sudo ldconfig | 
ffmpegのmake
上のlameのmake installが完了していないと「–enable-libmp3lame」が選択できなくてエラーとなるので注意。
| 1 2 3 4 5 | git clone git://source.ffmpeg.org/ffmpeg.git ffmpeg cd ffmpeg ./configure --enable-gpl --enable-libx264 --enable-libmp3lame --disable-yasm make all sudo make install | 
インストール先の確認とリンク
subsonicでトランスコーディングコマンドを使用する場合は「/var/subsonic/transcode/」に入れる必要があります。今回はシンボリックリンクで配置。
| 1 2 3 4 | which ffmpeg which lame sudo ln -fs /usr/local/bin/ffmpeg /var/subsonic/transcode sudo ln -fs /usr/local/bin/lame /var/subsonic/transcode | 
音楽ディレクトリの追加
曲はすべてterastationに入れているのでそちらからアクセス出来るようにに設定。NFSを使う予定でしたが、何故かタイムアウトになって接続できなかったのでsamba-clientを導入。
/etc/fstab
| 1 2 3 4 5 6 | proc            /proc           proc    defaults          0       0 /dev/mmcblk0p1  /boot           vfat    defaults          0       2 /dev/mmcblk0p2  /               ext4    defaults,noatime  0       1 # a swapfile is not a swap partition, no line here #   use  dphys-swapfile swap[on|off]  for that //subsonic/subsonic /mnt/subsonic cifs username=subsonic,password=**** | 
音楽ディレクトリをRaspberry Pi 2のSDカードにまとめたい場合はディスクフォーマットの拡張方法を参考にして下さい。(SDカードに大切なデータを入れる場合は必ずバックアップを持つようにしましょう!!)
完成
自分だけのミュージックプレイヤーを作ることが出来ました。
このiSubですがiPhoneアプリがあります。
これがまためちゃくちゃ便利なんです。出先でもインターネット経由で自分のサーバにアクセスして好きな音楽を聞くことが出来ます。
通信量が気になるところではありますが、キャッシュ機能があるので聞く曲がある程度決まっている人は特に問題なしです。ふとした会話の中で曲の話題になったときにささっと流せるのはiSubですね。
ただし、このiSubを使い続けてるにはsubsonicのプレミアム会員になる必要があります。現在は「月額$1」または「年額$12(値引きなし)」、「永久会員$99」の2つを選択する必要があるようです。自分はその昔subsonicに出会い感動して5€寄付したためそのまま永久会員にしていただいてます。
Subsonic導入して以来音楽管理ツールや音楽の拡張子、エンコード方式の違いでイライラしたことがありません。月額$1以上の価値はあると思います。Raspberry Pi 2を持て余している方は是非お試し下さいね。


