Subsonic に不満があったので OSS 版の Libresonic をインストールしてみた
追記
続編です。 これと組み合わせれば Subsonic でも曲をフォルダに置いたら即スキャンしてくれるようになります。
本文
ずっと Subsonic というストリーミングサーバーを使っていた。 1ドル /月 払えば Android アプリでも接続できるようになる。 概ね満足だったんだけどそれでもいくつか不満があった。
- (flac ファイル特有の現象なのかは分からないが)flac ファイルを再生すると曲が終わっても次の曲に行ってくれない
- 曲の時間が明らかに長かったりするので、終わりが正しく取得できてない?
- 音楽フォルダのスキャンが一日一回に限られている
- 曲が追加されたら一定時間後に自動的にスキャンしてほしい
- 最近のバージョンのコードはクローズド(version 6.0-beta1 以降)
これらの問題点を解決するためにLibresonic という Subsonic の OSS 版を試してみた。
ちなみに 2 に関しては解決しなかったが、スキャンを行う REST API はあるようなので、曲が追加されたら REST API 叩くスクリプトを書けば解決しそう。 *1
(追記 2017/8/27 0:30)勘違いでした。Subsonic にはありますが、現在の Libresonic にはありません
Java 8+ のインストール
$ sudo yum install java-1.8.0-openjdk $ java -version openjdk version "1.8.0_141" OpenJDK Runtime Environment (build 1.8.0_141-b16) OpenJDK 64-Bit Server VM (build 25.141-b16, mixed mode)
java-1.8.0-openjdk を入れれば自動的に Java 8 になってるはず。 なってなかったら alternatives コマンドで Java 8 を選ぶようにしてください。 以下は Java 7 と 8 が入ってる環境の図。
$ sudo alternatives --config java 2 プログラムがあり 'java' を提供します。 選択 コマンド ----------------------------------------------- 1 java-1.7.0-openjdk.x86_64 (/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.141-2.6.10.1.el7_3.x86_64/jre/bin/java) *+ 2 java-1.8.0-openjdk.x86_64 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.141-1.b16.el7_3.x86_64/jre/bin/java) Enter を押して現在の選択 [+] を保持するか、選択番号を入力します:
Standalone バージョンのインストール
WAR を持ってきて java -jar {war} すれば動くやつです。 それを systemd で動かすようにします。
まずユーザの作成。
$ sudo useradd --system libresonic $ id libresonic uid=994(libresonic) gid=992(libresonic) groups=992(libresonic)
次に必要なディレクトリを作りつつ WAR をダウンロードしてインストール。
$ sudo mkdir /opt/libresonic $ curl -LO https://libresonic.org/release/libresonic-v6.2.war $ sudo install -o root -g root -m 644 libresonic-v6.2.war /opt/libresonic/libresonic.war $ sudo mkdir /var/libresonic/ $ sudo chown -R libresonic:libresonic /var/libresonic/
次に systemd の設定ファイルを作成。
$ vim /etc/default/libresonic JAVA_HOME=/usr/lib/jvm/jre $ vim /etc/systemd/system/libresonic.service [Unit] Description=Libresonic After=network.target [Service] Type=simple EnvironmentFile=-/etc/default/libresonic ExecStart=/usr/bin/java -jar /opt/libresonic/libresonic.war User=libresonic Group=libresonic PrivateTmp=true Restart=always [Install] WantedBy=multi-user.target
設定ファイルをロード。
$ sudo systemctl daemon-reload
ffmpeg のインストール
インストールした後、以下の手順を実行。
$ sudo mkdir /var/libresonic/transcode $ cd /var/libresonic/transcode $ ln -s /usr/bin/ffmpeg $ ls -alh lrwxrwxrwx 1 user user 15 mai 4 19:57 ffmpeg -> /usr/bin/ffmpeg
起動
いよいよ起動ですが、結構時間かかります。 HP ProLiant MicroServer (Gen8 ではない) で 74秒 ぐらい。
都度 sudo systemctl status -l libresonic
するのもだるいので、
sudo systemctl start libresonic
したら journalctl -ef -u libresonic
で起動するまでログを眺めておくといいでしょう。
$ sudo systemctl start libresonic $ journalctl -ef -u libresonic
初回は必要なファイル作成や DB の初期化などでだばーっとログが出ます。 起動したらこんなログが出ます。
2017-08-21 00:43:55.960 INFO --- o.l.player.boot.Application : Started Application in 72.08 seconds (JVM running for 74.073)
起動後 /var/libresonic
がこんな感じになってました。
$ ls -F /var/libresonic/ db/ libresonic.log libresonic.properties lucene2/ rollback.sql
Could not verify the provided CSRF token because your session was not found.
公式のインストール手順通りにインストールして java -jar libresonic.war と実行してみたのだが、Web UI でログイン後にこんなページに飛ばされてしまう。
ログファイル(/var/libresonic/libresonic.log
)を見ても特にエラーは出ていなかった。
Tomcat のインストールしたら直った?
$ sudo yum install tomcat $ sudo yum remove tomcat tomcat-lib
とかやってたら正常にログインできるようになってしまった。謎。
======================================================================================================================================================================================== Package アーキテクチャー バージョン リポジトリー 容量 ======================================================================================================================================================================================== インストール中: tomcat noarch 7.0.69-12.el7_3 updates 89 k 依存性関連でのインストールをします: apache-commons-collections noarch 3.2.1-22.el7_2 base 509 k apache-commons-daemon x86_64 1.0.13-6.el7 base 54 k apache-commons-dbcp noarch 1.4-17.el7 base 167 k apache-commons-logging noarch 1.1.2-7.el7 base 78 k apache-commons-pool noarch 1.6-9.el7 base 113 k avalon-framework noarch 4.3-10.el7 base 88 k avalon-logkit noarch 2.1-14.el7 base 87 k ecj x86_64 1:4.2.1-8.el7 base 1.4 M geronimo-jms noarch 1.1.1-19.el7 base 31 k geronimo-jta noarch 1.1.1-17.el7 base 20 k javamail noarch 1.4.6-8.el7 base 758 k log4j noarch 1.2.17-15.el7 base 443 k tomcat-el-2.2-api noarch 7.0.69-12.el7_3 updates 80 k tomcat-jsp-2.2-api noarch 7.0.69-12.el7_3 updates 93 k tomcat-lib noarch 7.0.69-12.el7_3 updates 3.8 M tomcat-servlet-3.0-api noarch 7.0.69-12.el7_3 updates 211 k xalan-j2 noarch 2.7.1-23.el7 base 1.9 M xerces-j2 noarch 2.11.0-17.el7_0 base 1.1 M xml-commons-apis noarch 1.4.01-16.el7 base 227 k xml-commons-resolver noarch 1.2-15.el7 base 108 k
このうちのどれかが必要なパッケージだったのか?*2 今となっては謎。雑。