枕
収入の入らない本業としてDJ(オファー募集中)をやっているのですが
30台頃に腰をやってからはレコードからCDJ→PCDJ→USBメモリとヘッドホンを持参してのスタイルとなっております。
さて、iTunesのみで楽曲管理となりますと
- PCのデータが飛んだ時、またはiTunesに不具合が起きた時の再インストール後にプレイリストデータも飛ぶ
- さりとてrekordboxでの管理やiPhoneへの曲の転送においてはiTunesを介しないとどうしようもない
など、データの保持に置いて不安点も様々でございますな。
そこで楽曲(mp3)やプレイリストの原本を自宅鯖で管理し、必要に応じて自分のPCにコピーする、という手段をとるようになったのでございます。
自宅鯖に楽曲管理システムを組む
ったって大したもんじゃござんせん。
要はApache Tomcat®立ててairsonic稼働させるだけなんスから。
基本的には自宅鯖にAlmaLinux OS - Forever-Free Enterprise-Grade Operating System (centosの後継)をインストール済みとして話を進めますが、
あたしゃUbuntu派だよなんて方は適宜コマンドを読み替えていただけますと。
nginx設定
まずはnginxをインストールしていただいて、
dnf install nginx
以下の設定を追加いたします。
/etc/nginx/conf.d/sites.conf
include /etc/nginx/sites-enabled/*.conf;
/etc/nginx/sites-available/server.conf
proxy_cache_path /var/cache/nginx/server levels=1:2 keys_zone=server:4m max_size=50m inactive=5m;
server {
# server_name server.example.com;
access_log /var/log/nginx/server.access.log main;
error_log /var/log/nginx/server.error.log warn;
resolver 8.8.8.8; #OCSPサーバへ通信するためネームサーバを指定する
ssl_stapling on; #OCSPを有効化
ssl_stapling_verify on; #OCSPの問い合わせ結果が正しいものであることを検証する
listen 80;
add_header Referrer-Policy no-referrer always;
location = /favicon.ico {
alias /var/www/html/favicon.ico;
access_log off;
log_not_found off;
}
location = /robots.txt {
alias /var/www/html/robots.txt;
access_log off;
log_not_found off;
}
location /airsonic/ {
proxy_pass http://localhost:8080/airsonic/;
## https://github.com/airsonic-advanced/airsonic-advanced/issues/145
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_http_version 1.1;
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 X-Forwarded-Host $http_host;
proxy_set_header X-Forwarded-Port $server_port;
proxy_set_header Host $http_host;
proxy_max_temp_file_size 0;
proxy_buffering off;
proxy_request_buffering off;
client_max_body_size 0;
}
}
しかる後に
mkdir -p /etc/nginx/sites-enabled
ln -s /etc/nginx/sites-available/server.conf /etc/nginx/sites-enabled/
tomcat 配下へのairsonic-advanced のインストール
ったって、tomcatなんざは適当に yumやdnfのパッケージマネージャでインストールいただければいいんです。
dnf install tomcat
airsonic-advanced/airsonic-advanced ってぇのは何かと申しますと、
Subsonicという楽曲管理ソフトをオープンソース移植したAirsonicのさらに私家改良版、
とでも覚えておいていただければ。
長ったらしいんで以下はairsonicと便宜的に略称いたしますんで。
といってもtomcat配下へのインストールについては以下のようにwarを配置するだけなんで。
$ cd /usr/local/tomcat/webapps
$ wget https://github.com/airsonic-advanced/airsonic-advanced/releases/download/v10.6.0/airsonic.war
諸々の起動
以下はlinux(自宅ではalimalinux9)の起動例でございます。
$ sudo su -
$ systemctl enable tomcat # 自宅鯖を再起動したときに自動起動させる設定
$ systemctl start tomcat
$ systemctl status tomcat # 正しく起動したかの確認
$ nginx -t # nginxの設定が正しくなされているかの確認
$ systemctl enable nginx # 自宅鯖を再起動したときに自動起動させる設定
$ systemctl start nginx
$ systemctl status nginx # 正しく起動したかの確認
airsonic の稼働確認
さて、PCからairsonicの稼働確認にあたっては、自宅鯖のIPを知る必要がございます。
昨今のlinuxでは
$ ip addr | grep "inet "
でIPが以下の例のように表示されますんで、
inet 127.0.0.1/8 scope host lo
inet 192.168.0.2/24 brd 192.168.0.255 scope global noprefixroute eno1
この例の 192.168.0.2 が自宅内でのIPってことになるわけですんで、
PCのブラウザから
にアクセスして諸々を設定していけばいいわけですが、apirsonicの設定自体は以下に譲るとしましょう。
First start guide - Airsonic
airsonicで作成・保存したプレイリストをPCのiTunesに反映する
じつはこのairsonic、プレイリストをm3u8形式で吐けるんですが
これをiTunesに食わせるには一工夫必要なんですな。
iTunesに食わせるためのちっょとした変換
そこであたしは以下のようなshellを用意しました。
tknr/copy_from_m3u8
自宅鯖へのインストールは以下
$ git clone https://github.com/tknr/copy_from_m3u8.git
$ cd copy_from_m3u8
$ bash -xe install.sh
$ source ~/.bash_profile
これで ~/.bin/copy_from_m3u8 にパスが通りました。
airsonicのプレイリスト画面からエクスポートしたm3u8形式プレイリストをこいつでPC用に変換、
およびPCへインポートしやすいように楽曲データもコピーするわけです。
$ cd ~/Playlist/ # 先ほどダウンロードしたm3u8形式プレイリストをここへ配置したとしましょう
$ copy_from_m3u8 . # このフォルダ内のすべてのm3u8形式プレイリストをよろしくやってくれます
$ ls -1
use_202404010000 # 実行した日付のフォルダが生成され、その中に、全てよろしく変換したm3u8形式プレイリストと、m3u8形式プレイリスト内に書かれたパスの楽曲ファイルがコピーされます
iTunesへのインポート
あとは use_202404010000 の中のm3u8形式プレイリストファイルと楽曲ファイルを
FileZilla やsamba経由でPCへ落としてきて、
落としてきたm3u8形式プレイリストをiTunesへドラッグ&ドロップするだけでございますよ。
その他 チューニング等
本稿では、まずは起動してみる を優先に、チューニング等については敢えて省略しました。
以下、余力のある方は試してみるといいです。
Nginxでgzip圧縮を有効にする #nginx - Qiita
Setting up an external database - Airsonic - デフォルトではHSQLDBが使用されるが、安定性や速度、バックアップを取るなどをしたい場合はmariadbを使ってみましょう。
出先でスマホのiSub Music Streamer for iOSから自宅鯖に接続して
ライブラリの曲を聴くためのcloudflared設定
Cloudflare の ngrok的なサービスがあるらしい ⇒ $ cloudflared tunnel --url localhost:8080 といった使い方 #cloudflare - Qiita
等については、またいずれ。