要するに?
- 音楽ストリーミングサービス「Navidrome」をDockerでUbuntuにインストールし、ローカルネットワーク内で音楽が再生できることを確認した。
- 導入方法はAIのgeminiに相談し、時短で導入完了した。
- 音楽やマイリストの同期に使うスマホのアプリは、Androd:Symfonium(有料) iPhone:Amperfy(無料)の二つを使ってみた。
- 音楽をジャンル検索できるので個人的に神!
導入
あなた専用のストリーミングサービス『Navidrome』、GNU GPL v3ライセンスの条件に基づいて無償配布されてるオープンソースソフトウェアを今回見つけました。
手元にあるCDや音源をネットワーク越しにweb上やアプリを経由してPCやスマホで聞けるようにできるので、まさに自分専用のストリーミングサービスが作れますね!
長くfoobar2000で音楽管理してましたが、曲やマイリストをスマホにするのもなかなか手間です。
かといって聞きたい曲の配信が少ない音楽サブスクに契約するのも勿体ないかなと感じてました。
YouTube Musicのマイリストはオフライン再生にも対応していて便利ですが、マイリストの自動ループ設定の方法がよく分からない。
またマイリストの曲を最後まで流すと勝手に違う曲を流し始めるので、なかなか使い勝手が微妙で、なかなか惜しいんですよね。
ということで、今回見つけた『Navidrome』をお試しで触ってみようと思います!
準備
NavidromeはWindows、Docker、Linuxなどで使えるということで、「せっかくだしLinuxの勉強がてら触ってみよう」と仮想PCにUbuntuをインストールして準備を完了。
いざNavidromeをインストールしようとした時に、「Dockerならどの環境でも一貫して動作する」というLinuxらしからぬ文言と、「他のアプリケーションに影響与えることなく管理できる」というのをどこかで見た気がするので、「なんかあったら簡単に削除して再度チャレンジできるだろう」と安易な気持ちでDockerでのインストールを試すことになりました。
ちなみに私がLinuxで使えるコマンド以下の通りです。
vi:テキストファイルを編集するエディタを開く。
Esc後、wq 上書き保存し、viを終了。
Esc後、:q!上書きせずviを終了。
※詳しくは「viの基本コマンドの一覧」をお勧めです。
pwd:現在自分がいるディレクトリの場所をフルパスで表示。
cd:ディレクトリを移動。
ls:現在の場所にあるファイルやフォルダの一覧の表示。
mkdir:新しいディレクトリの作成。
cp:ファイルやディレクトリをコピー。
rm:ファイルやディレクトリを削除。
あとは最近流行のAI geminiなどに質問して作業を進めていきました。
作業環境
Ubuntu 22.04.5 LTS
Docker version 29.3.1
Navidromeのディレクトリ内にdocker-compose.ymlを作成してDocker起動。
という感じで作業を進めていきます。
作業
geminiにとりあえず、指示を出しました。
「Ubuntu 22.04.5 LTSでdockerを使って、Navidromeをインストールしたい。docker-compose.ymlを使う方法で指示してください。」
すると、下のような感じで回答してくれるので、あとは指示通り作業していきましょう。
上手くいかない時や疑問に思ったことは、geminiに質問して色々教えてもらいましょう。
STEP 1:Dockerのインストール
まずは、システムを最新の状態にし、Dockerをインストールします。以下のコマンドを順番に実行してください
# パッケージリストの更新
sudo apt update
# Dockerインストールに必要なパッケージの導入
sudo apt install -y ca-certificates curl gnupg
# Docker公式のGPG鍵を追加
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
# リポジトリの設定
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# Docker Engineのインストール
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
STEP 2:プロジェクトディレクトリの作成
Navidromeの設定ファイルを管理するフォルダを作成し、そこへ移動します。
mkdir ~/navidrome
cd ~/navidrome
STEP 3:docker-compose.yml の作成
エディタ(viなど)を開き、以下の内容を貼り付けて保存してください。
services:
navidrome:
image: deluan/navidrome:latest
user: 1000:1000 # 必要に応じてご自身のユーザーID(idコマンドで確認)に変更してください
ports:
- "4533:4533"
restart: unless-stopped
environment:
# スキャン間隔などの詳細設定が必要な場合はここに追加します
ND_SCANSCHEDULE: 1h
ND_LOGLEVEL: info
ND_SESSIONTIMEOUT: 24h
ND_BASEURL: ""
volumes:
- "./data:/data"
- "/path/to/your/music:/music:ro" # 「/path/to/your/music」を実際の音楽フォルダに書き換えてください
STEP 4:Navidromeの起動
sudo docker compose up -d
ブラウザを立ち上げ、http://(UbuntuのIPアドレス):4533 にアクセスしてください。
ログイン画面や管理者アカウントの作成画面が表示されれば成功です!

Navidromeのページは表示されましたね!
あとはユーザ設定、音楽ファイルのスキャンなどを行い、音楽ファイルのスキャンが完了するとブラウザ上で音楽が再生できるようになりました。

foobar2000を使ってた時のように、アーティストネームやジャンルを登録しておけば、それぞれで検索もできて使い勝手がとてもいいです。
私はジャンルにアニメやゲームのタイトルを入力していたので、ジャンル検索できるのがとっても助かります。
せっかくなので、スマホやタブレットでも再生してみました。
iPhoneの再生めっちゃ音質がいい….、iPhoneてこんなに音質いいのか!?

スマホアプリの導入
ブラウザ上で問題なく再生ができたので、次はスマホのアプリでお気に入りの曲やマイリストを同期させたりしてみました。
Androdは「Symfonium(有料)」、 iPhoneは「Amperfy(無料)」を試しました。
Symfonium(Android)
Symfonium(有料)
インターフェースのカスタマイズが結構細かくできるようでお勧めです。
1030円の買い切りですが、お試し期間が2週間ほどあるので、その間に使い倒しましょう。
アンインストール後、再インストールすると+1日お試しができるので、時間を空けてからもう一回触ってみたいということはできました。
・設定→メディアプロバイダの管理→(Open)Subsonicを選択し、設定をポチポチしましょう。

オフライン再生のために同期設定は、「プレイリスト」から同期したいマイリストを選択し、三転リーダーから「自動オフラインキャッシュを構成」→「有効」を選択して「適用」を押しましょう。

Amperfy(iPhone)
Amperfy(無料)
起動するとurl(http://含む)とusername、passwordを入力する画面がでてくるので、入力してLoginしましょう。
※API:Auto-Detect

・Playlist→オフライン再生したいプレイリストを選択→右上の三転リーダー→「Download」

感想
以前なら「Linuxサーバで○○」と考えるだけで、ネット検索でやり方を何時間も調べないといけないことがありました。
その上で上手いかないことも多く、挫折してはまたチャレンジをするということが多かったです。(GPUパススルー….ぅ、頭が)
しかし、DockerとAI(Geminiなど)というツールを組み合わせることで、基本コマンドをいくつか知ってるだけで、自分専用のこだわった環境構築が短時間で手に入りました。
AIに気軽に質問してお試しできるようになって楽しい!
存在しないコマンドやオプションなどの偽情報を自信もって説明してくれる「ハルシネーション」には気を付けつつ、今まで興味があってもなかなか手が出なかったことにチャレンジするにはいい機会です。
是非、色々質問してチャレンジしてみてください。
