雑記帖

MinimServer導入メモ


OpenHomeサーバーとしてreadyMedia(旧MiniDLNA)を使ってネットワークオーディオ環境を構築していたのだけど

  • 不具合があっても修正されるのに時間が掛かる
  • 時々クライアントアプリが接続エラーを返す時がある
  • パッチを当てないと表示されるカバー画像が160x160と小さい
  • アルバムアーティスト情報しか送ってくれないのでコンピレーションアルバムとかだと
  • 複数枚CDの場合ディスク番号順→トラック番号順にソートしてくれない

等、不満が色々あったのでMinimServerに乗り換えてみたので手順をメモ

  1. MinimServerをコンテナ上で動かす

    自宅サーバーに入れているのがPodmanなのでPodmanを使っているが、Dockerでもほぼ同じ手順でできるはず

    1. イメージを落としてくる

      sudo podman pull docker.io/minimworld/minimserver:2.2
      
    2. コンテナを起動する

      —envオプションで「TZ=Asia/Tokyo」を付けないとサーバーのタイムゾーンがGMTになるらしいので付けておく

      sudo podman run -d --name minimserver --network host \
      --env TZ=Asia/Tokyo \
      --mount type=bind,src=曲ファイルが置いてあるディレクトリ,dst=/Music,readonly \
      minimworld/minimserver:2.2
      
  2. 自動起動設定

    サーバーを再起動した時、MinimServerも自動的に起動して欲しいのでsystemdにサービスとして登録する

    1. 起動/停止用スクリプトを作成する

      /usr/local/bin/minimserver

      #!/usr/bin/env bash
      if [ "$(id -u)" -ne 0 ]; then
          echo -e "non-root user"
          exit 1
      fi
      
      if [ "$1" = "stop" ]; then
          /usr/bin/podman stop -t 10 minimserver
          exit 0
      fi
      
      /usr/bin/podman ps -a --format "{{.Names}}" | grep -x minimserver > /dev/null
      if [ $? -eq 0 ]; then
          # コンテナが存在する場合はそれを使う
          /usr/bin/podman start -a minimserver
          exit 0
      fi
      
      # コンテナが無かったら新しく作る
      /usr/bin/podman run -d --name minimserver --network host \
      --env TZ=Asia/Tokyo \
      --mount type=bind,src=曲ファイルが置いてあるディレクトリ,dst=/Music,readonly \
      minimworld/minimserver:2.2
      
    2. 起動/停止用スクリプトに実行権限をつける

      sudo chmod +x /usr/local/bin/minimserver
      
    3. サービス設定を作成する

      /etc/systemd/system/minimserver.service

      [Unit]
      Description=MinimServer
      Wants=syslog.service
      After=network.target remote-fs.target nss-lookup.target
      [Service]
      Restart=always
      ExecStart=/usr/local/bin/minimserver start
      ExecStop=/usr/local/bin/minimserver stop
      [Install]
      WantedBy=multi-user.target
      
    4. サービスを有効化する

      sudo systemctl daemon-reload
      sudo systemctl enable minimserver
      
  3. ファイヤーウォール設定変更

    Firewalldが有効になっているとDLNAクライアントと通信できないので設定を変更する
    解放する必要があるのはTCP9790-9791ポートとUDP1900ポート

    1. サービス設定を作成する

      /etc/firewalld/services/minimserver.xml

      <?xml version="1.0" encoding="utf-8"?>
      <service>
      <short>MinimServer</short>
      <description>MinimServer is a UPnP music server with a number of innovative features that make it easier to organize and explore your music collection.</description>
      <include service="ssdp"/>
      <port protocol="tcp" port="9790"/>
      <port protocol="tcp" port="9791"/>
      </service>
      
    2. 作成したサービス設定を読み込ませる

      sudo firewall-cmd --reload
      
    3. サービス設定を有効にする

      自分の場合LAN内通信のファイヤーウォール設定をhomeゾーンで管理しているため「—zone=home」を指定している

      sudo firewall-cmd --permanent --zone=home --add-service=minimserver
      sudo firewall-cmd --reload