Linux Mint Xfce 22.3 + LyrionMusicServer + Squeezelite で音楽生活

メインサーバになりつつあるLinuxマシンに、チューナレステレビをHDMIでつなぎ、TVに光オーディオ出力でアンプに繋がっている。たいへんややこしい状況だが、どうせなら音楽はこのアンプでききたいものである。

ということで、音楽サーバ構築編。

目次

環境

とてもややこしいけれども以下のような感じだ。

graph TD subgraph PCA ["PC A (操作端末 / リモコン)"] Browser["Webブラウザ / App<br/>(Material Skin UI)"] end subgraph PCB ["PC B (Linux Mint / サーバー兼再生機)"] direction TB LMS["Lyrion Music Server<br/>(楽曲管理・配信)"] subgraph AudioOutput ["音声出力プロセス"] Squeezelite["Squeezelite<br/>(再生用クライアント)"] PipeWire["PipeWire / ALSA<br/>(OS音声制御)"] end Storage[("音楽ファイル群<br/>(HDD/SSD)")] end subgraph AudioPath ["中継・出力"] TV["Mi TV<br/>(音声ハブ)"] Speaker["外部スピーカー"] end %% 接続とデータの流れ Browser -- "① 選曲・操作命令 (Port 9000)" --> LMS LMS -- "② 音楽ストリーム送信 (Port 3483 / localhost)" --> Squeezelite Squeezelite -- "③ 音声データ引き渡し (default出力)" --> PipeWire Storage -. "スキャン (パーミッション確認済)" .-> LMS %% 物理接続 PipeWire == "④ HDMI出力 (DEV=3)" ==> TV TV == "⑤ 光デジタル出力" ==> Speaker %% スタイル設定 style PCB fill:#f5f6f8,stroke:#4f5b66,stroke-width:2px style LMS fill:#d1e7dd,stroke:#0f5132 style Squeezelite fill:#fff3cd,stroke:#856404 style Browser fill:#cfe2ff,stroke:#084298 style PipeWire fill:#e2d9f3,stroke:#4b2c7e style TV fill:#eeeeee,stroke:#666

HW/SWは以下。

  • ThinkPad L390
    • 32GB RAM
    • Linux Mint Xfce 22.3
    • squeezelite v1.9.9-1449
    • Lyrion Music Player v9.1.0

インストールと設定

Lyrion Music Server

Getting Started with LMS - Lyrion Music Serverより、ダウンロードリンクを取得。記事を書いた時のリンクだとこれ。

wget "https://downloads.lms-community.org/LyrionMusicServer_v9.1.0/lyrionmusicserver_9.1.0_amd64.deb"
sudo apt install ./lyrionmusicserver_9.1.0_amd64

ステータスを確認する。

sudo systemctl status lyrionmusicserver.service

enabledでactive(running)になっていることを確認する。

ポートを空ける。

sudo ufw allow 9000/tcp

そうしたら http://IPアドレス:9000にGo。右下のNextボタンで、音楽ファイルの場所と、プレイリストを保存する場所を指定することになる。

ここで、ディレクトリのパーミッションは755でないとLMSが読めない。基本的にホームサーバならディレクトリは755でよいはず。外付けディスクとかでパーミッションまとめて変える必要があるときはfindで一気にやってしまう。たとえば/mnt/hddのときは以下の感じ。

find /mnt/hdd -type d -exec chmod 755 {} +

ホームディレクトリは~/.sshとかあるんでまとめてやるとか雑なことはしない。

さらに音楽ファイルの権限も600とかだと読めない。音楽ファイルのあるディレクトリに移動して、パーミッションを変更する。

find . -type f -exec chmod 644 {} +

再スキャンするときは、Web画面で歯車よりServerから再スキャン可能。

とにかく音楽フォルダとプレイリストフォルダのパーミッションは整えてやる必要がある。ちなみにうちの場合は音楽ファイルは外付けのハードディスクドライブで、プレイリストフォルダは内蔵SSDのホームフォルダ内にしている。

Squeezelite

まずポート空けておく。

sudo ufw allow 3483

以下でインストール。

sudo apt install squeezelite

入れたら出力を確認する。

squeezelite -l

なんかいっぱい出てくる。ここでハードウェアを指定して /etc/default/squeezeliteを書き換えていく、ということになっているのだが…。

ただねぇ…僕はここから相当転がされた結果、一つの結果にたどり着いたが、これは一般的ではない、とあらかじめ申し添えておく。

まずapt installしたら勝手にsystemctlで動いているsqueezeliteを殺す。

sudo systemctl stop squeezelite.service

有効化はされてないのでdisableする必要はないが、もしenableしてしまったらdisableもしておく。

そのうえで、~/.config/autostartにスタートアップスクリプトを書いていく。ディレクトリがなかったら最初につくる。

mkdir -p ~/.config/autostart

そしたら設定ファイルを書く。

cat << 'EOF' > ~/.config/autostart/squeezelite-tv.desktop
[Desktop Entry]
Encoding=UTF-8
Version=0.9.4
Type=Application
Name=Squeezelite-TV
Comment=Hand-launched success command with delay
Exec=bash -c "sleep 5 && squeezelite -o default -n MiTV"
OnlyShowIn=XFCE;
StartupNotify=false
Terminal=false
Hidden=false
EOF

Execのところは適当に。-n MiTVは僕がMiTV使ってるからなので。適当にわかりやすい名前にする。

再起動して、LMSで見つかるかどうか試す。見つかればOK。

これは明らかに標準の方法ではないが、これが一番安定した。systemdはクソ。昔から思ってたけど、僕の頭が悪いんだと思っていた。今となっては自信を持って言える。僕の頭が悪かろうがなんだろうが関係なくsystemdはクソ。

systemdはクソ

疲れた。なんだかんだで半日消費した。あとは運用していきたい。

ちなみにフォルダ管理派はフォルダをブラウズするように設定できるが、そのへんの話はMacのときに書いたのでそちらを参照。

ってかPipeWireって何?とか、基本的なところ理解できてないなぁと思った。systemdはクソ。

この記事をいいなと思っていただけた方、よければ高評価・チャンネル登録……はないので、コメント・SNSでシェア・ブックマーク、RSSフィード登録を、よろしくお願い致します。

コメント

コメントする

目次