CherryMusic
CherryMusic は CherryPy と jPlayer がベースの音楽ストリーミングサーバーです。リモートで動作させたりシングルコンピュータで使うことができ膨大な音楽ライブラリ (3 TB 以上) を扱えるように設計されています。ただし小規模なコレクションでも問題なく利用できます。MPD や Icecast などとは違い、CherryMusic はウェブブラウザを使って HTTP/HTTPS 経由で複数のユーザーが同時にログインして、音楽データベースを閲覧・検索したりプレイリストを作成・編集して音楽をブラウザからストリーミングすることが可能になっています。ウェブサイト より:
- CherryMusic は CherryPy と jPlayer を基にして Python で書かれたスタンドアロンの音楽サーバーです。Last.fm, Spotify, Grooveshark などの代わりとなることを目指しています。"
CherryMusic プロジェクトは GitHub 上で開発されています。
インストール
CherryMusic は AUR からインストールできます。安定版リリースと開発版のパッケージが存在しています。安定版を使いたくない場合、開発版を使うことを推奨しますが、インストールには Git が必要になります。
安定版
最新の安定版は cherrymusicAUR パッケージでインストールできます。
Git バージョン
実験的な機能が搭載された最新版を使いたい場合は cherrymusic-devel-gitAUR パッケージをインストールしてください。
任意の依存パッケージ
任意の依存パッケージは以下の通りです:
- ライブ変換: lame, vorbis-tools, flac, faad2, mpg123, opus-tools, ffmpeg (コーデックを置き換えて WMA のデコードが追加されます)。
- カバーアートの画像自動リサイズ: imagemagick。
- 特殊文字の検索: python-unidecode。
- GTK システムトレイアイコン: python-gobject。
設定
クイックスタート
基本設定で立ち上げて使うには、以下のコマンドを実行:
$ cherrymusic --setup --port 8080
それからブラウザ (例: Firefox) で localhost:8080
アドレスを開いてください:
$ firefox localhost:8080
ブラウザの中から重要なオプションを設定して、管理者アカウントをセットアップします。
システムサービスとして CherryMusic を起動時に自動的に実行したい場合、systemd サービスファイルを参照してください。
手動設定
CherryMusic を起動して初期設定を行って下さい:
$ cherrymusic
最初の起動時に CherryMusic はデータと設定ファイルを ~/.local/share/cherrymusic/
と ~/.config/cherrymusic/
に作成し、標準出力にノートを出力して終了します。作成された設定ファイル ~/.config/cherrymusic/cherrymusic.conf
を編集して以下の行を適当に変更してください:
~/.config/cherrymusic/cherrymusic.conf
[...] basedir = /path/to/your/music [...] port = 8080 [...]
ブラウザ (例: Firefox) で localhost:8080
アドレスを開いて管理者アカウントを作成します:
$ firefox localhost:8080
ログイン後、Admin パネルの Update Music Library をクリックすることで検索データベースが作成されます。
システムサービスとして CherryMusic を起動時に自動的に実行したい場合、systemd サービスファイルを参照してください。
設定することができるオプションは多数存在します。こちらのセクションを見てください。
微調整
CherryMusic には豊富なドキュメントの man ページが付属しています。見るには:
$ man cherrymusic
または:
$ man cherrymusic.conf
ヒントとテクニック
"basedir" のシンボリックリンク
専用のディレクトリを作成して、音楽コレクションのパスを示すシンボリックリンクだけを保存することで CherryMusic の音楽ディレクトリ ("basedir") を柔軟に運用することができるようになります:
$ mkdir ~/.local/share/cherrymusic/basedir $ ln -s /path/to/musicdir1 ~/.local/share/cherrymusic/basedir/musicdir1 $ ln -s /path/to/musicdir2 ~/.local/share/cherrymusic/basedir/musicdir2
Systemd サービスファイル
CherryMusic 自体にはデーモンが付属していませんが、CherryMusic の AUR パッケージには systemd サービスファイルが含まれています。cherrymusic@user.service
ユニットを使って CherryMusic を起動できます (user
は CherryMusic を実行するのに使用するユーザーに置き換えてください、root を使ってはいけません)。
GNU Screen セッションで起動
ログアウト後も CherryMusic を実行させたい場合、GNU Screen セッションの中で実行するという方法があります:
$ screen -d -m -S cherrymusic cherrymusic
CherryMusic は GNU Screen に出力を書き出すだけのため、セッションの中から管理することはありません。systemd サービスファイルを使うほうが便利ですが、デバッグ用途には有用です。
以下の systemd サービスファイルを作成・使用することで起動後に GNU Screen セッションで実行することも可能です:
/etc/systemd/system/cherrymusic@.service
[Unit] Description = CherryMusic server Requires = network.target After = network.target [Service] User = %I Type = simple ExecStart = /usr/bin/screen -d -m -S cherrymusic /usr/bin/cherrymusic ExecStop = /usr/bin/screen -X -S cherrymusic quit StandardOutput = null PrivateTmp = true Restart = always [Install] WantedBy = multi-user.target
検索アルゴリズムの検索パラメータを手動で調整
CherryMusic のインストールディレクトリ内の cherrymusicserver/tweak.py
ファイルを使うことで検索アルゴリズムの検索パラメータを手動で調整できます。
CherryMusic で 1024 以下のポートを使う (root 権限を使用しない)
通常 CherryMusic (や他のアプリケーション) を 1024 以下のポートにバインドするには root 権限が必要になります。しかしながら、CherryMusic を root で動かすのは推奨されません。複数の方法が考えられます:
詳しくは以下のページを見てください:
- https://serverfault.com/questions/268099/bind-to-ports-less-than-1024-without-root-access
- https://www.debian-administration.org/article/386/Running_network_services_as_a_non-root_user
- https://stackoverflow.com/questions/413807/is-there-a-way-for-non-root-processes-to-bind-to-privileged-ports-1024-on-l
サードパーティ製の拡張
- CherryMusic Control - Firefox の再生コントロールプラグイン: https://addons.mozilla.org/en-US/firefox/addon/cherrymusic-control 。GitHub で開発されています: https://github.com/Sets88/cherrymusicctrl 。
トラブルシューティング
pip でインストールした場合に `wsgiserver2` モジュールが認識されない
CherryMusic を起動したときに以下のエラーが発生する場合:
ImportError: No module named wsgiserver2
おそらく pip からインストールした CherryPy のパッケージが壊れているのが原因です (影響を受けるバージョンは `3.2.6` と `3.4.0` です)。問題の説明は こちら にあります。解決するには、CherryPy をアンインストールしてから再インストールしてください:
$ pip uninstall cherrypy $ pip install --no-use-wheel cherrypy
Flash ブロックの無効化
Flash ブロックがウェブフロントエンドと干渉することがあります。トラックの選択や再生で問題が発生する場合、ブラウザの Flash ブロックやプラグインマネージャでサーバーをホワイトリストに追加してみてください。
Android Chrome で CherryMusic がロードされない
おそらくブラウザにインストールされた AdBlock Plus が原因です。
Nginx でトラックスクロールが機能しない
主要なデスクトップブラウザで Nginx を使っている場合にトラックスクロールが動作せず曲の中盤で再生が停止され最初から再生されてしまう場合、Nginx モジュールの ngx_http_proxy_module
を設定してください [1]。
proxy_http_version 1.0;
という行を以下のように変えてください:
ngx_http_proxy_module
[...] proxy_http_version 1.1; [...]