LoginSignup
0
0

自宅鯖とiTunesによる楽曲管理の方法

Last updated at Posted at 2024-04-05

収入の入らない本業として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
等については、またいずれ。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0