hantas's blog

ブログ移転しました→ http://blog.taniho.net/

GooglePlayMusic->Supersonic

またまた,有名なクラウドサービスから自前クラウドサービス(?)に乗り換えるというお話です。
といっても今回は乗り換えではありません(GooglePlayMusicは関係ない)。
旅行の移動中や部室での作業中などに音楽をかけたいと思うようになったのですが,携帯はiPhone16GBモデルで,今持ってる音楽プレイヤーはBluetooth2.0しか使えないことが判明しました。
そこで最近流行のGooglePlayMusicっぽいサービスを自前で用意しようと思い立ちました。

今回使用したのは"Supersonic"なるソフトウェアです。
こいつが音楽データの管理・ストリーミング配信等を行ってくれます。
配信を聞くために,パソコンからはブラウザ,iPhoneからはiSub Music Streamerを使いました。

iSub Music Streamer

iSub Music Streamer

  • Benjamin Baron
  • ミュージック
  • ¥600
600円のフルバージョンと200円のライトバージョンがありますが,プレイリストを使用したいと思ったのでフルバージョンを購入しました。
特に不便もなく利用できそうです。

環境

いつもどおりのUbuntuServer12.04 LTSサーバーにインストールしました。
本来であれば,
Mach5/supersonic · GitHub
このリポジトリをクローンして自前でパッケージをビルドすべきなのでしょうが,どうしてもコンパイルが通らなかったので
(プロジェクト外のファイルに対して"Not a v4.0.0 POM"というエラーが出ました),
ビルド済みのパッケージを使用しました。
Downloads · Mach5/supersonic · GitHub

cd /path/you/want/to/download
sudo apt-get update
sudo apt-get install lame ffmpeg
sudo apt-get install default-jre-headless
sudo dpkg -i supersonic-4.7.beta1.deb

インストールと同時に自動起動の設定もされるようです。

設定

ポートをあけてローカル環境からアクセスできるようにします。
デフォルト設定では4040番を使うそうなので,そのままにしておきます。

sudo ufw allow 4040

デフォルト状態ではセキュリティ上あまりよろしくないので,権限周りの変更をします。

/etc/default/supersonic

SUBSONIC_ARGS="--port=4040 --https-port=4443 --max-memory=100"
SUBSONIC_USER=supersonic

新規ユーザーを作成し,音楽データの保管先の所有権を変更します。

sudo useradd supersonic
cd /var
sudo mkdir music
sudo mkdir playlists
sudo chown supersonic:supersonic music
sudo chown supersonic:supersonic playlists
sudo service supersonic restart

ブラウザからの設定

これでとりあえずの準備はできたはずなので,早速4040ポートにアクセスします。
f:id:hantas:20151027140721p:plain
初期ID,パスワードはadmin, adminなのでログインし,表示されている3項目の設定変更を行います。
実際に使うことを考え,ユーザーアカウントも作成しておきます。
f:id:hantas:20151027140725p:plain
実はここにありがたい項目があり,ユーザーごとに最大ビットレートを変更することができます。
僕は携帯回線用と無線LAN用の2種類のアカウントを作成しています。

設定ができたらFTPなどを利用して音楽データを転送します。
僕は/var/music/以下にアーティスト名のディレクトリを作り,その下にアルバム名のディレクトリを作成しています。
データ転送後にはブラウザから音楽データのスキャンを実行する必要があります。
f:id:hantas:20151027140723p:plain

学内からのアクセス

本筋から少し離れるのですが,ここで少し苦戦しました。
携帯回線を使用する場合は構わないのですが,学内LANから4040ポートにアクセスできないようになっているので,リバースプロキシを利用して回避します。
リバースプロキシが何かは自分で調べてみてください。
すでにApache2を立ち上げているので,追加設定を行います。

/etc/apache2/sites-available/000-default.conf に追記

<VirtualHost *:80>
    ServerName music.hogehoge
    ProxyPass / http://localhost:4040/
    ProxyPassReverse / http://localhost:4040/
</VirtualHost>
sudo a2enmod proxy
sudo a2enmod proxy_http
sudo service apache2 restart

合わせてDNSサーバーにもmusic.hogehogeを通しておき,アクセスできるようにしておきます。

以上の設定で"http://music.hogehoge:80/"または"http://music.hogehoge/"でSupersonicにアクセスできるようになりました。
f:id:hantas:20151027140728p:plain

今回ストリーミングサーバとしていくつかの環境を候補に上げました。
その中でも,良い比較記事を書かれているブログがあったので紹介しておきます。
ミュージックストリーミングWebサーバのAmpacheとSubsonicを比較してみた: boKUma


さてさて,大会前なのになんでこんなことやってるんだろうなあ。
頑張ってマウス作ります。