CherryMusic

提供: ArchWiki
ナビゲーションに移動 検索に移動

CherryMusicCherryPyjPlayer がベースの音楽ストリーミングサーバーです。リモートで動作させたりシングルコンピュータで使うことができ膨大な音楽ライブラリ (3 TB 以上) を扱えるように設計されています。ただし小規模なコレクションでも問題なく利用できます。MPDIcecast などとは違い、CherryMusic はウェブブラウザを使って HTTP/HTTPS 経由で複数のユーザーが同時にログインして、音楽データベースを閲覧・検索したりプレイリストを作成・編集して音楽をブラウザからストリーミングすることが可能になっています。ウェブサイト より:

CherryMusic は CherryPy と jPlayer を基にして Python で書かれたスタンドアロンの音楽サーバーです。Last.fm, Spotify, Grooveshark などの代わりとなることを目指しています。"

CherryMusic プロジェクトは GitHub 上で開発されています。

インストール

CherryMusic は AUR からインストールできます。安定版リリース開発版のパッケージが存在しています。安定版を使いたくない場合、開発版を使うことを推奨しますが、インストールには Git が必要になります。

安定版

最新の安定版は cherrymusicAUR パッケージでインストールできます。

Git バージョン

実験的な機能が搭載された最新版を使いたい場合は cherrymusic-devel-gitAUR パッケージをインストールしてください。

任意の依存パッケージ

任意の依存パッケージは以下の通りです:

設定

クイックスタート

基本設定で立ち上げて使うには、以下のコマンドを実行:

$ 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 の検索機能が破壊される可能性があります。編集する前にファイルをバックアップすると良いでしょう。

CherryMusic で 1024 以下のポートを使う (root 権限を使用しない)

通常 CherryMusic (や他のアプリケーション) を 1024 以下のポートにバインドするには root 権限が必要になります。しかしながら、CherryMusic を root で動かすのは推奨されません。複数の方法が考えられます:

詳しくは以下のページを見てください:

サードパーティ製の拡張

トラブルシューティング

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;
[...]

参照