MultiMedia >

目次

概要

  • MinimServerは、UPnP AV対応メディアサーバです。DLNAサーバと同義と見なしても差し支えありません*1
  • インテリジェントなブラウジング(目的のコンテンツにスムーズにアクセスできる)を強みとしているようです。
  • Hi-ResなDSDコンテンツの配信にも対応しています。

インストール

on Docker

  • Dockerを利用すると簡単にサーバをセットアップすることができます。
  • 動作確認バージョン
    • 0.8.5.2
    • 0.8.4
  1. あらかじめDockerDockerComposeをインストールしておきます。

最新イメージをビルドして利用する場合(x86_64およびarmhf)

  1. イメージビルドのためのソースを取得します。x86_64アーキテクチャの場合にはそのまま master ブランチを使用します。
    $ git clone https://github.com/wdstar/docker-minimserver.git
    $ cd docker-minimserver
  2. armhfアーキテクチャ(例: RaspberryPi3ModelB)の場合には armhf ブランチをチェックアウトします。
    $ git checkout -b armhf origin/armhf
  3. イメージをビルドします。
    $ docker-compose build
  4. ./docker-compose.yml: 設定ファイルを編集します。初回起動時にはデータディレクトリのマウントをコメントアウトしておきます。メディアディレクトリのパスは適切に設定します。note.pngMinimServerライセンス上、再配布不可のようですのでビルドしたイメージは私的なレジストリにプッシュして利用するとよいでしょう。
    1. ---
    2. version: '2'
    3. services:
    4.   dlna-server:
    5.     restart: 'no'
    6.     build:
    7.       context: ./
    8.       args:
    9.         url: ${url}
    10.     image: ${REGISTRY}/${NAME}:${MINIM_VER}
    11.     network_mode: "host"
    12.     volumes:
    13.     # 初回起動時はコメントアウトしておきます
    14.     #- "${PWD}/data:/opt/minimserver/data:rw"
    15.     - "/path/to/your/media/directory:/media:ro"
  5. 一度コンテナを起動させます。
    $ docker-compose up -d
  6. http://localhost:9790/ にアクセスし、利用許諾に同意します。
  7. 設定ファイル等を永続化できるように、data/ ディレクトリをローカルにコピーします。
    $ sudo docker cp docker-minimserver_dlna-server_1:/opt/minimserver/data ./
    $ sudo rm data/minimserver.config.lock
  8. コンテナを停止させます。
    $ docker-compose down
  9. ./docker-compose.yml: 今度は data/ ディレクトリをマウントするように変更します。
    1. ---
    2. version: '2'
    3. services:
    4.   dlna-server:
    5.     restart: 'no'
    6.     build:
    7.       context: ./
    8.       args:
    9.         url: ${url}
    10.     image: ${REGISTRY}/${NAME}:${MINIM_VER}
    11.     network_mode: "host"
    12.     volumes:
    13.     # コメントアウトを外す
    14.     - "${PWD}/data:/opt/minimserver/data:rw"
    15.     - "/path/to/your/media/directory:/media:ro"
  10. 再度コンテナを起動させます。これでサーバの設定やキャッシュが保存されるようになります。
    $ docker-compose up -d
  11. LAN内のクライアントに MinimWatch? をインストールし、サーバの設定をカスタマイズします。
    • lightbulb.pngもしクライアントが複数のネットワークインタフェイスを持っている場合には、Options > Properties(watch) から ohnet.subnet にLANの適切なネットワークアドレスを設定する必要があります。

既存イメージを利用する場合(x86_64のみ)

  • 以下の例のイメージは古い場合があります。
  1. 適当なディレクトリを用意します。
    $ sudo mkdir -p /opt/docker-compose/app/dlna
    $ cd /opt/docker-compose/app/dlna
  2. ./docker-compose.yml: 以下のような内容の設定ファイルを作成します。この例では、tromatik/docker-minimserverイメージを利用しています。note.pngMinimServerライセンス上、再配布不可のようですのでイメージは再ビルドし*2私的なレジストリにプッシュして利用するとよいでしょう。
    1. ---
    2. version: '2'
    3. services:
    4.   dlna-server:
    5.     restart: 'always'
    6.     image: tromatik/docker-minimserver:latest
    7.     # Recommended: use internal registry
    8.     #image: gitlab.io.example.com:5050/docker/images/docker-minimserver:latest
    9.     network_mode: "host"
    10.     volumes:
    11.     # 初回起動時はコメントアウトしておきます
    12.     #- "${PWD}/data:/opt/minimserver/data:rw"
    13.     - "/path/to/your/media/directory:/media:ro"
  3. 一度コンテナを起動させます。
    $ docker-compose up -d
  4. http://localhost:9790/ にアクセスし、利用許諾に同意します。
  5. 設定ファイル等を永続化できるように、data/ ディレクトリをローカルにコピーします。
    $ sudo docker cp dlna_dlna-server_1:/opt/minimserver/data ./
    $ sudo rm data/minimserver.config.lock
  6. コンテナを停止させます。
    $ docker-compose down
  7. ./docker-compose.yml: 今度は data/ ディレクトリをマウントするように変更します。
    1. ---
    2. version: '2'
    3. services:
    4.   dlna-server:
    5.     restart: 'always'
    6.     image: tromatik/docker-minimserver:latest
    7.     # Recommended: use internal registry
    8.     #image: gitlab.io.example.com:5050/docker/images/docker-minimserver:latest
    9.     network_mode: "host"
    10.     volumes:
    11.     # コメントアウトを外す
    12.     - "${PWD}/data:/opt/minimserver/data:rw"
    13.     - "/path/to/your/media/directory:/media:ro"
  8. 再度コンテナを起動させます。これでサーバの設定やキャッシュが保存されるようになります。
    $ docker-compose up -d
  9. LAN内のクライアントに MinimWatch? をインストールし、サーバの設定をカスタマイズします。
    • lightbulb.pngもしクライアントが複数のネットワークインタフェイスを持っている場合には、Options > Properties(watch) から ohnet.subnet にLANの適切なネットワークアドレスを設定する必要があります。

on Docker (by minim-server クックブック)

  • cake.pngminim-serverクックブックの minim-server::docker-compose レシピを利用すると、上記の docker-compose.yml をはじめとした設定ファイル一式を生成させることができます。lightbulb.pngなお、このレシピは環境に応じて x86_64 または armhf 用の設定ファイルを自動で生成します。
  1. roles/minim-server-on-docker.rb: ロールの例です。run_list 中にある docker ロール等については、こちらをご参照ください。すでに、DockerとDockerComposeをインストール済の場合には削除してしまって構いません。
    1. name 'minim-server-on-docker'
    2. description 'Minim-server on Docker'
    3.  
    4. run_list(
    5.   #'role[docker]',
    6.  #'recipe[docker-grid::engine]',
    7.   #'recipe[docker-grid::compose]',
    8.   'recipe[minim-server::docker-compose]',
    9. )
    10.  
    11. #env_run_lists
    12.  
    13. #default_attributes
    14.  
    15. override_attributes(
    16.   'minim-server' => {
    17.     'docker-compose' => {
    18.       'config' => {
    19.         'services' => {
    20.           'minim-server' => {
    21.             'volumes' => [
    22.               # コンテンツのあるディレクトリを /media 以下にマウントします。
    23.               '/path/local/media:/media:ro',
    24.             ],
    25.           },
    26.         },
    27.       },
    28.     },
    29.   },
    30. )
  2. アプリケーションディレクトリに移動し、起動させます。初回起動時にイメージがビルドされます。
    $ cd /opt/docker-compose/app/minim-server
    $ docker-compose up -d

Tips

頭文字アルファベットによるグルーピング

  • alphaGroup プロパティを設定すると、そのカテゴリが頭文字のアルファベットでグルーピングされるようになります。アイテムが非常に多い場合にアクセスが用意になります。
    • 例えば、albums=20, Artist=20 のように設定すると、一つのフォルダに20アイテム以上のアルバムやアーティストがある場合、間に一階層、頭文字のアルファベットでグルーピングされたフォルダが作成され整理されます。20アイテムより少ない場合には、そのままアルバムやアーティストフォルダがリストされます。

音質でグルーピング

  • indexTags プロパティに特殊タグ #AudioQuality? を使用して設定を追加すると音声フォーマットの品質に応じてグループ分けされます。
    • 例えば、#AudioQuality?:Quality を追加すると、トップに Quality フォルダが作成され、その中にさらに HD、CD、LC 等のフォルダが作成されコンテンツが整理されます。

タイトルにディスク番号を含める

  • マルチディスクアルバムでは各ディスクのトラックが一つのアルバムとしてマージされ(トラック番号が通し番号となり)ますので、ディスク番号が確認しづらくなります。このような場合、タイトルにディスク番号を含めて対応することができます。
  • tagFormat プロパティに以下のような設定を追加します。"[ディスク番号] タイトル" がタイトル文字列となります。ディスク番号タグが未設定のトラックの場合には元のタイトルのみとなります。
    Title.displayFormat={$DISCNUMBER^[^] $title^}
    • フォーマットの書式は、"$tag-list^prefix^suffix^separator" です。デフォルトの設定を明示的に書くと、"$tag-list^^^, " となります(つまり、接頭辞と接尾辞は空文字列で、セパレータは ", ")。
    • "$DISCNUMBER^[^] " 部分: ディスク番号を対象にし、接頭辞として "[" を挿入、接尾辞として "] " を挿入します。"^" は引数区切りのようなものです。
    • "$title^" 部分: フォーマット引数がないので、そのままタイトルが続けられる。なお、最後のタグフォーマットの "^" は省略可能です。途中のタグについて "^" を省略すると、タグリスト("$tagA$tagB")として解釈されてしまいますのでご注意ください。

プレイリストの読み込み

  • プレイリストファイル(*.m3u、*.m3u8)も認識しますので、整理しておくとよいでしょう。lightbulb.png日本語やヨーロッパ諸語がファイル名に含まれる場合には、UTF-8でエンコードされたことを示す *.m3u8 の拡張子を使用するのが無難です。

リソース


*1 DLNAはUPnP AVプロトコルをベースにした機器間の相互接続を担保するためのガイドライン
*2 ダウンロードURLは変更されている場合がありますのでご注意ください。

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2019-02-23 (土) 12:41:24 (236d)