Subsonic
Subsonic はウェブインターフェイスや様々なアプリケーションを使って別のマシンに保存されている音楽を再生できるミュージックサーバーです。
目次
インストール
AUR の subsonicAUR パッケージでインストールできます。バージョン6から Subsonic はオープンソースでなくなりました。
設定
何か設定を行ったら、忘れずに subsonic.service
を再起動してください。
トランスコーダーのインストール
デフォルトでは、Subsonic は FFmpeg を使って動画や音声を適切なフォーマット・ビットレートに変換します。Subsonic のインストール後、デフォルト設定を変更して FFmpeg の代わりに FLAC や LAME を使用して FLAC ファイルを変換するようにできます。ffmpeg をインストールして、必要であれば flac や lame もインストールしてください。
セキュリティ上の理由で、Subsonic はシステム上のトランスコーダーを検索しません。/var/lib/subsonic/transcode
フォルダにトランスコーダーのシンボリックリンクを作成する必要があります。以下のコマンドで作成することができます:
$ cd /var/lib/subsonic/transcode # for transcoder in ffmpeg flac lame; do ln -s "$(which $transcoder)"; done
HTTPS の設定
Subsonic を使う
HTTPS ブラウジング・ストリーミングを有効にするには、/var/lib/subsonic/subsonic.sh
を編集して、以下の行を:
SUBSONIC_HTTPS_PORT=0
以下のように変更してください:
SUBSONIC_HTTPS_PORT=8443
Nginx を使う
既に複数のウェブサービスを運用している場合、既存の SSL 設定を使用すると楽です。以下の Nginx 設定は Subsonic を https://example.com/subsonic で動作させます:
server { listen 443 default ssl; server_name example.com; ssl_certificate cert.pem ssl_certificate_key key.pem location /subsonic { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto https; proxy_set_header Host $http_host; proxy_max_temp_file_size 0; proxy_pass http://127.0.0.1:4040; proxy_redirect http:// https://; } }
別のパスで Subsonic を使うには、/var/lib/subsonic/subsonic.sh
で以下のオプションを設定してください:
SUBSONIC_CONTEXT_PATH=/subsonic SUBSONIC_HOST=127.0.0.1 SUBSONIC_PORT=4040 SUBSONIC_HTTPS_PORT=0
Lighttpd を使う
以下の設定は Lighttpd で HTTPS 接続を使えるようにしてローカルホストに転送します。Subsonic は SSL の設定を気にする必要がなく、デフォルト設定のままでかまいません。同一の IP アドレスで複数のサイトを Lighttpd でホストしている場合でも問題なく動作します。
/etc/lighttpd.conf
# Documentation at: http://redmine.lighttpd.net/projects/lighttpd/wiki/Docs # Check for errors: lighttpd -t -f /path/to/config server.modules += ("mod_proxy", "mod_redirect") server.username = "http" server.groupname = "http" server.pid-file = "/var/run/lighttpd.pid" server.errorlog = "/var/log/lighttpd/error.log" server.document-root = "/srv/http/" index-file.names = ("index.html") mimetype.assign = ( ".avi" => "video/x-msvideo", ".css" => "text/css", ".html" => "text/html", ".jpg" => "image/jpeg", ".log" => "text/plain", ".markdown" => "text/plain", ".md" => "text/plain", # markdown ".mkv" => "video/x-matroska", ".mp4" => "video/mp4", ".nfo" => "text/plain", ".png" => "image/png", ".rc" => "text/plain", ".rst" => "text/plain", # reStructuredText ".svg" => "image/svg+xml", ".txt" => "text/plain", ".xml" => "application/xml", "" => "application/octet-stream" ) $SERVER["socket"] == ":80" { $HTTP["host"] == "subsonic.example.com" { url.redirect = ("^/(.*)" => "https://subsonic.example.com/$1") } } $SERVER["socket"] == ":443" { # A default ssl.pemfile is required. It can be overridden in specific host # blocks. It *may* also be possible to override ssl.ca-file, but this has # not been tested. ssl.engine = "enable" ssl.use-sslv3 = "disable" ssl.ca-file = "/etc/lighttpd/ssl/GandiStandardSSLCA2.pem" ssl.pemfile = "/etc/lighttpd/ssl/subsonic.example.com.pem" $HTTP["host"] == "subsonic.example.com" { ssl.pemfile = "/etc/lighttpd/ssl/subsonic.example.com.pem" proxy.server = ( # This proxying is completely transparent to clients. We load # balance requests for this path or extension... "" => ( # ... among the following servers. The string naming each server # is just a label, and it has little functional impact. (It # might affect log file output?) ("host" => "127.0.0.1", "port" => 4040) ) ) } }
トラブルシューティング
FLAC の再生
FFmpeg は FLAC ファイルを上手く処理することができず、クライアントからストリームを再生できないことがあります。FFmpeg の代わりに FLAC と LAME を使うことで解決します。トランスコーダーのインストールに書かれているように FLAC と LAME をインストールしてください。
Subsonic を起動して settings > transcoding
を開いてください。"flac" 拡張子のファイルでデフォルトの FFmpeg トランスコーダーが使われないようにしてから、新しいエントリを追加してください:
名前 | 変換元 | 変換先 | Step 1 | Step 2 |
---|---|---|---|---|
mp3 default | ... NOT flac ... | mp3 | ffmpeg ... | |
mp3 flac | flac | mp3 | flac --silent --decode --stdout %s | lame --silent -h -b %b - |
データベースにアクセス
Subsonic は全てのデータを /var/lib/subsonic/db
に存在する HyperSQL データベースに保存します。http://localhost:4040/db.view にあるシンプルなウェブインターフェイスからアクセスすることが可能です。
HyperSQL ディストリビューションに含まれている SQLTool コマンドラインツールを使うこともできます。hsqldb2-javaAUR をインストールしてください。Subsonic インスタンスが実行している間はツールを使うことはできないため、一度 Subsonic をシャットダウンするかデータベースを別のディレクトリにコピーしてください。
SQLTool を使うには以下の内容の ~/sqltool.rc
ファイルが必要です:
urlid subsonic url jdbc:hsqldb:/var/lib/subsonic/db/subsonic username sa password
MEDIA_FILE
テーブルの中身を全てエクスポートすることができます:
$ java -jar /usr/share/java/sqltool.jar subsonic - <<< '\xq MEDIA_FILE' 8074 row(s) fetched from database. Wrote 3252295 characters to file 'MEDIA_FILE.csv'.
Madsonic
Madsonic は Subsonic に機能を追加したフォークであり、AUR からインストールすることができます。
サーバーを起動したら、Transcoding オプションに注意してください。コマンドを "Audioffmpeg" から "ffmpeg" に変更する必要があります。