外出先から自分の音楽関連のファイルをいつでも聴けるようにします。自分で購入したmp3ファイルやCDにある音楽データを聴けるようになります。koelというオープンソースなツールをセットアップして実現します。koelはクライアント側がVueで、サーバー側がLaravelで記述された、Webベースのパーソナルオーディオ ストリーミングサービスです。
公式の説明書を参考にしてDockerを使用してインストールします。説明書の中にあるGithubのリンクをクリックすると詳しく説明されています。公式のDockerイメージも用意されています。
https://hub.docker.com/r/phanan/koel
それでは作業をしていきましょう。設置する環境はOSがUbuntu22.04になっております。まずはイメージを取得します。
docker pull phanan/koel
次に説明書を参考にkoelのコンテナを立ち上げます。koelはデータベースを必要としますが、このDockerコマンドにはデータベースは含まれていません。
docker run -d --name koel \
-p 8888:80 \
-v music:/music \
-v covers:/var/www/html/public/img/covers \
-v search_index:/var/www/html/storage/search-indexes \
phanan/koel
ファイヤーウォールが有効になっていたので開放します。
ufw allow 8888/tcp
ufw status
データベースは同じネットワーク内の別サーバーにあります。MySQL Community Serverが設置してあり、空のデータベースを作成しておきます。さらにそのユーザーが、外部接続して操作できる許可をしておきます。
データベースの準備ができたらkoelのコンテナに入って初期設定ができるコマンドを入力します。指定されたユーザーでコンテナに入ります。
docker exec --user www-data -it koel bash
php artisan koel:init --no-assets

データベース名やユーザー名、ポート番号などを設定したらブラウザでアクセスします。
http://ipアドレス:8888
次のメールアドレスとパスワードでログインします。
email: admin@koel.dev
password: KoelIsCool
セキュリティ向上のため、これらを変更する場合はコマンドを入力します。
docker exec -it <container_name_for_koel> php artisan koel:admin:change-password
なお、コマンド入力ではなくブラウザでログインして変更も可能でした。
せっかくなのでmp3ファイルをアップロードして動作確認します。

アップロードしたファイルは、ホスト側では次のディレクトリ配下に領域が確保されます。もちろんコンテナ内でも確認することができます。
/var/lib/docker/volumes/
cd /var/lib/docker/volumes/
koelのコンテナは一般的なwebポートしかサポートしていないので、SSLに対応したページを作成するにはリバースプロキシの導入を検討します。