以前、シングルボードコンピュータ Orange Pi One で、ミュージックサーバを構築しました。
以来、運用し続けているのですが、今回ファイルサーバの音楽データも再生したくなり、シンボリックリンクを張ることにしたのですが、若干ハマったのでメモします。
結論
mpd で作成するファイルをシンボリックリンクで設定する際は、ファイルに実行権限を付与しましょう。
設定概要
mpd は Music Player Daemon(ミュージック・プレイヤ・デーモン)の略で、ミュージックサーバ本体になります。
mpd 本体のインストール方法は下記記事をご参照ください。
今までは mpd 標準のディレクトリ /var/lib/mpd/music
配下に音楽ファイル(flac とか mp3)を置いていましたが、ファイルが増えてくるとファイルサーバ経由で再生したい...と思うようになりました。
そこで、一部ファイルをファイルサーバ経由で再生するように設定します。
- ローカルの音楽ファイル
/var/lib/mpd/music - ファイルサーバの音楽ファイル
/var/lib/mpd/music/radio
設定
ローカルの音楽ファイルに加えて、シンボリックリンクでファイルサーバの音楽ファイルを再生できるように設定します。
シンボリックリンクを作成
mpd で再生するデータをシンボリックリンクで設定します。
*今回は標準のデータディレクトリ /var/lib/mpd/music/music
配下にシンボリックリンク(radio
)を作成しています。
# ln -s /media/DIRECTORY/Music/ /var/lib/mpd/music/music/radio
# ls -lh /var/lib/mpd/music/music/
lrwxrwxrwx 1 root root 23 Dec 18 05:03 radio -> /media/DIRECTORY/Music/
mpd 設定ファイル(mpd.conf
)を修正
mpd はデフォルトでシンボリックリンクが無効なので、シンボリックリンク設定を有効(yes
)にします。
*follow_outside_symlinks
はデータディレクトリ内であれば不要です。
(今回のようにデータディレクトリ配下にシンボリックリンクを張る際は不要です)。
下記、mpd.conf
の設定変更例。
# diff -u /root/mpd.conf_bk20221218 /etc/mpd.conf
--- /root/mpd.conf_bk20221218 2022-12-18 05:27:29.889005891 +0000
+++ /etc/mpd.conf 2022-12-18 06:01:29.538341944 +0000
@@ -136,12 +136,12 @@
# If this setting is set to "yes", MPD will discover audio files by following
# symbolic links outside of the configured music_directory.
#
-#follow_outside_symlinks "yes"
+follow_outside_symlinks "yes"
#
# If this setting is set to "yes", MPD will discover audio files by following
# symbolic links inside of the configured music_directory.
#
-#follow_inside_symlinks "yes"
+follow_inside_symlinks "yes"
#
###############################################################################
サービス再起動
mpd.conf
を変更した後はサービス再起動が必要です。
# sudo service mpd restart
mpd データベース更新
読み込む音楽ファイルが変更になった際はデータベースを更新する必要があります。
# mpc update
なお、mpc コマンドが無い場合は、下記コマンドで追加します。
# sudo apt install mpc -y
エラーになったら
最初、mpd で設定したシンボリックリンクを表示できず、悩みました。
mpd のステータスを見てみたら Permission denied
...。つまり権限不足でした。(read 権限だけだと NG)
# service mpd status
● mpd.service - Music Player Daemon
Loaded: loaded (/lib/systemd/system/mpd.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2022-12-18 09:20:05 UTC; 4min 43s ago
Docs: man:mpd(1)
man:mpd.conf(5)
file:///usr/share/doc/mpd/user-manual.html
Main PID: 814 (mpd)
Tasks: 3 (limit: 905)
Memory: 35.9M
CGroup: /system.slice/mpd.service
└─814 /usr/bin/mpd --no-daemon
Dec 18 09:20:00 orangepione systemd[1]: Starting Music Player Daemon...
Dec 18 09:20:05 orangepione mpd[814]: Dec 18 09:20 : exception: Failed to access /media/DIRECTORY/Music: Permission denied
Dec 18 09:20:05 orangepione systemd[1]: Started Music Player Daemon.
mpd で読み込むには実行権限が必要です。
下記、権限追加後のステータス。
# service mpd status
● mpd.service - Music Player Daemon
Loaded: loaded (/lib/systemd/system/mpd.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2022-12-18 09:30:13 UTC; 31s ago
Docs: man:mpd(1)
man:mpd.conf(5)
file:///usr/share/doc/mpd/user-manual.html
Main PID: 805 (mpd)
Tasks: 3 (limit: 905)
Memory: 35.9M
CGroup: /system.slice/mpd.service
└─805 /usr/bin/mpd --no-daemon
Dec 18 09:30:08 orangepione systemd[1]: Starting Music Player Daemon...
Dec 18 09:30:13 orangepione systemd[1]: Started Music Player Daemon.