Universal Media Server (DLNAサーバー) をDockerコンテナで動かす

ITライフ

自宅にDLNA対応機器(PlayStation等)がある場合、サーバー内の動画ファイルをテレビで視聴する環境を構築できます。

Universal Media Server とは

Universal Media Server (UMS) は、パソコンやサーバーに格納している動画ファイルをDLNA配信して、対応機器で再生するためのソフトウェアです。旧 PS3 Media Server (PMS) の後継にあたります。

PMSの開発は終了していますが、mp4ファイルの視聴程度であれば十分使えていました。ただし自宅サーバーの老朽化に伴いソフトウェア構成を見直すことになったので、最新のUMSに移行することにしました。

なぜDockerコンテナ化するのか

UMSの起動手順自体はシンプルです。

  1. JVM およびメディア関連パッケージのインストール
  2. UMSのダウンロード・展開
  3. コンフィグ修正
  4. ./UMS.sh で起動

ただし、メディア系のソフトウェアはffmpegやコーデック等の依存関係が多く、多用途サーバーに混在させたくないこと、そして起動スクリプトの準備が面倒くさいという理由から、Dockerコンテナで動かすことにしました。

Dockerfile

作成したコンテナイメージはGitHubで公開しています。

dobassy/docker-ums

起動しているホストのNICが必ずしも eth0 ではないので、うまく動作しない場合は疑ってみてください。DLNA配信に利用するメディアファイルのパスは、環境変数 X_UMS_FOLDERS で指定できます。

Entrykitで環境変数によるコンフィギュレーション

UMSの設定は環境により差が生じやすいので、docker run 時の環境変数でチューニングできるようにしたいところです。よくあるテクニックとして、コンテナ起動時の初期化スクリプトで sed 置換をがんばる方法を見かけますが、これは面倒です。

Entrykit を使うと、設定ファイルを変数化して環境変数の有無に応じた上書き・デフォルト値の反映が柔軟に行えます。シンプルな用途であれば秘伝のタレスクリプトを作らなくてもよくなります。

参考: Entrykit のすすめ - Qiita

メンテナンスについて

この手のソフトウェアは一度動かして視聴環境が整うと新たなニーズが発生しづらいこと、そして自宅内サーバーで稼働するためセキュリティ懸念も小さいことから、積極的なメンテナンスは予定していません。不定期での更新になる見込みです。

Related Posts