minidlna on Podman

  CentOS8

メディアサーバ用にminidlnaを立ち上げるのだが、
メディア系は依存パッケージをソースコンパイルするなど
色々とシステムを汚してしまうのでPodmanを利用して構築する。

dockerhub上のminidlnaを使用する。
https://hub.docker.com/r/vladgh/minidlna/

Contents

audioとvideo用の公開ディレクトリ準備

Windows上からそのままアップしたいのでsambaディレクトリ配下を指定。

podman起動

上記ディレクトリを指定してpodman起動

が、起動失敗。ログを見る。
$ podman logs dlna

問題は2つ。
1つはディレクトリへのPermission deined。
もう一つはmax_user_watchesの設定。

max_user_watcherの設定編集

minidlnaで必要なファイル同期数が上限を超えているとのことで、
以下のように直接/etc/sysctl.confを編集して対応する。
設定値はシステム上限値である524288。

Permission deniedの対応

これはSELinuxの問題。
無効にしてやれば解決するが、SELinuxだけは無効にしないという
セキュリティポリシーでサーバ運用しているため解決する。
(ただ、ガバガバにするだけなのでセキュリティ的にはあまり意味ない)

SELinuxの問題とわかっているので、一旦無効にしてログを確認

上記実行後、最初のpodman runコマンドを実行してAVC Reportを確認

container_tラベルのminidlnadでは、samba_share_tラベルのディレクトリにアクセスできない。
まぁ、当たり前なので、このAVC Reportを許可するようにモジュール登録してしまう。

ただ、これでもPermission deinedは解決できなかったので、
SELinuxのポリシー分析のためにsetools-consoleをインストール。

container_tとsamba_share_tの関係を確認

readのみしか許容してないことが問題だった模様。
よく考えたら、AVC Reportの時点で分かった問題だった。

my-dlna.teを直接編集して権限を追加。
# vim my-dlna.te

.teファイルのmakeのためにselinux-policy-develをインストール。

my-dlna.teファイルがあるディレクトリで以下を実行。

再生成されたmy-dlna.ppを適用。(の前に以前適用したmy-dlnaを外す)

これでSELinuxを再度有効化
# setenforce 1
して、最初のpodmanコマンドを実行することでminidlnaが正常起動する。

ファイアウォール設定

httpアクセスのために8200、メディアサーバ用に1900/udp, 5000/tcpを開ける。

MiniDLNAアクセス確認

正常に起動していたら、ブラウザ上で[IP Address]:8200が以下のように見える。

 

システム再起動時の立ち上げ

起動時スクリプトを作成するのでもいいけど、
どうもpodmanは自動起動はうまく動かないとの報告あり。

システム再起動後は、まずはpodman ps -aでコンテナの確認。
以下は既に立ち上げ後の状態なのでSTATUSがUpになってるけど、
システム再起動後はExitedになってる。

存在していれば、podman start dlnaで立ち上げが可能。

LEAVE A COMMENT