docker nextcloudとminidlnaでネットワークAV環境を作った話

ずっと欲しいと思っていたスピーカーを買ったので環境も作った

最近買った Marantz NR1200 (高い) https://twitter.com/astel4696/status/1397764701321273346

最近買った JBL STAGE A130 https://twitter.com/astel4696/status/1397766263049396226 https://twitter.com/astel4696/status/1397802606655803393

とりあえずTVに繋いでふんふんしてiphoneからairplayで飛ばしてふんふんした でも曲をメインで入れてるのはAK320っていうDAP これを毎回起動してってちょっと面倒だなってずっと思ってたのでサーバで曲を管理することにした

このMarantz NR1200にはDLNA機能があるのでNASやPCにある曲を流したりできる https://manuals.marantz.com/NR1200/JP/JA/GFNFSYtormgerw.php

家のサーバスペック ~docker使うのであんまり晒しても意味ないけど~ [shell gutter="false"] [astel@3700x ~]$ uname -a Linux 3700x 4.18.0-240.22.1.el8_3.x86_64 #1 SMP Thu Apr 8 19:01:30 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux [astel@3700x ~]$ cat /etc/redhat-release CentOS Linux release 8.3.2011 [astel@3700x ~]$ docker --version Docker version 20.10.6, build 370c289 [astel@3700x ~]$ docker-compose version docker-compose version 1.27.4, build 40524192 docker-py version: 4.3.1 CPython version: 3.7.7 OpenSSL version: OpenSSL 1.1.0l 10 Sep 2019 [astel@3700x ~]$ cat /proc/cpuinfo | grep "model name" | head -n1 model name : AMD Ryzen 7 3700X 8-Core Processor [astel@3700x ~]$ free -g total used free shared buff/cache available Mem: 31 16 0 0 14 14 Swap: 15 1 14 [astel@3700x ~]$ [/shell]

  1. minidlna 結構前に使ってちゃんと動いて運用できていたので今回もminidlnaを選択 ただ初めてdockerで使う

docker hubで適当に探して vladgh/minidlnaを採用

docker-compose.yml [shell gutter="false"] [astel@3700x minidlna]$ cat docker-compose.yml version: "3.8" services: minidlna: image: vladgh/minidlna volumes: - /hdd2/music-dlna:/hogehoge environment: TZ: 'Asia/Tokyo' MINIDLNA_MEDIA_DIR_1: "/hogehoge" network_mode: 'host' restart: "always" [/shell]

/hdd2/music-dlna の部分にホストサーバの共有したいディレクトリを選ぶ これで/hdd2/music-dlna/hogehoge.flacを入れて見えることが確認できれば成功 動作が確認できたら落としておく

  1. nextcloud dropboxみたいなやつ 過去owncloud使ってたけどその開発者たちが音楽性の違いで分裂してできた(違う)nextcloudを初めて使ってみる

公式がイメージだしてるのでそれを使う docker-composeのサンプルもあるので真似する docker#base-version---apache

さっきのminidlnaも入れる

[shell gutter="false"] [astel@3700x nextcloud]$ cat docker-compose.yml version: '3'

volumes: nextcloud: db:

services: db: image: mariadb restart: always command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW volumes: - db:/var/lib/mysql environment: MYSQL_ROOT_PASSWORD: 'Root123@' MYSQL_PASSWORD: "nextcloudpass" MYSQL_DATABASE: "nextcloud" MYSQL_USER: "nextcloud" TZ: 'Asia/Tokyo' restart: "always"

app: image: nextcloud restart: always ports: - 8080:80 links: - db volumes: - /hdd1/nextcloud:/var/www/html environment: MYSQL_PASSWORD: "nextcloudpass" MYSQL_DATABASE: "nextcloud" MYSQL_USER: "nextcloud" MYSQL_HOST: db TZ: 'Asia/Tokyo' restart: "always"

minidlna: image: vladgh/minidlna volumes: - /hdd1/nextcloud/data/astel/files:/astelfiles environment: TZ: 'Asia/Tokyo' MINIDLNA_MEDIA_DIR_1: "astelfiles" network_mode: 'host' restart: "always" [/shell]

ip:8080でアクセスしてnextcloudが表示できたらok

/hdd1/nextcloud/data/astel/files nextcloudのデータは data/user名/files に格納されるのでこうしている

nextcloudに音楽データを入れるとminidlnaで見えるようになるという仕組み

結構いい組み合わせだと思うけどどうだろ 一般的にはiphoneに曲いれてairplayで飛ばしたりUSBに曲入れてそれを聞けば良いんじゃね?が回答になりそうだけど

NR1200の操作は公式アプリのHEOSが便利なので入れましょう そこからDLNA選んで再生するのが良いです

ミュージックのプレイリストを作る話はまた今度