Subsonic

提供: ArchWiki
2017年10月23日 (月) 23:54時点におけるKusakata.bot (トーク | 投稿記録)による版 (文字列「Category:音声/動画」を「Category:マルチメディア」に置換)
ナビゲーションに移動 検索に移動

Subsonic はウェブインターフェイスや様々なアプリケーションを使って別のマシンに保存されている音楽を再生できるミュージックサーバーです。

インストール

AURsubsonicAUR パッケージでインストールできます。バージョン6から Subsonic はオープンソースでなくなりました。

設定

何か設定を行ったら、忘れずに subsonic.service再起動してください。

トランスコーダーのインストール

デフォルトでは、Subsonic は FFmpeg を使って動画や音声を適切なフォーマット・ビットレートに変換します。Subsonic のインストール後、デフォルト設定を変更して FFmpeg の代わりに FLAC や LAME を使用して FLAC ファイルを変換するようにできます。ffmpegインストールして、必要であれば flaclame もインストールしてください。

セキュリティ上の理由で、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
ノート: port 8443 seems hard-coded somewhere. When attempting to change it to port 8080 it will automatically redirect the browser to port 8443 after manually accepting the invalid HTTPS certificate. You will still be able to re-navigate to port 8080 after the warning page and have it work on that port.

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" に変更する必要があります。

参照