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使うのであんまり晒しても意味ないけど~

[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 ~]$ 
  1. minidlna

結構前に使ってちゃんと動いて運用できていたので今回もminidlnaを選択

ただ初めてdockerで使う

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

docker-compose.yml

[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"

/hdd2/music-dlna の部分にホストサーバの共有したいディレクトリを選ぶ

これで/hdd2/music-dlna/hogehoge.flacを入れて見えることが確認できれば成功

動作が確認できたら落としておく

  1. nextcloud

dropboxみたいなやつ

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

公式がイメージだしてるのでそれを使う

docker-composeのサンプルもあるので真似する docker#base-version---apache

さっきのminidlnaも入れる

[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"

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

/hdd1/nextcloud/data/astel/files

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

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

結構いい組み合わせだと思うけどどうだろ

一般的にはiphoneに曲いれてairplayで飛ばしたりUSBに曲入れてそれを聞けば良いんじゃね?が回答になりそうだけど

NR1200の操作は公式アプリのHEOSが便利なので入れましょう

そこからDLNA選んで再生するのが良いです

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