MiniDLNAのインストール
長年悩んでいた「miniDLNAのDB更新されない」がひとまずの結論に至ったので手順を上げたいと思います。
インストール前に…
定石通り以下のコマンドをまず流します。
# apt update # apt upgrade
miniDLNAのインストール
以下のコマンドを実行してminiDLANをインストールします。
# apt install minidlna
miniDLNAの基本設定
「/etc/minidlna.conf」が設定ファイルとなるので以下のコマンドを実行してファイルをエディタで開きます
# nano /etc/minidlna.conf
基本的な修正箇所は「media_dir」の1箇所だけです。例えば、動画ファイルを保存しているディレクトリが「/home/user/Videos」であった場合は以下のように修正します。
media_dir=V,/home/user/Videos
「=」直後の「V」はビデオファイルを置くディレクトリという意味です。
inotifyの設定について①
他のサイトにて「inotify=yes」「notify_interval=10」など設定するようにと指示しているところが多いです。しかし、反映されずに悩んでいる方も多くいらっしゃるかと思います。この原因は「inotify」の仕様にあります。
「inotify」は基本的にサブディレクトリに対応していません[1]。つまり、基本設定に記載したサンプル「Videos」ディレクトリに直接動画ファイルを置いている場合は、inotifyの設定が有効となりますが、サブディレクトリを作成して管理している場合は無効となります。 というわけで…もし、サブディレクトリを使用しないで管理している場合は「基本設定」に追加で以下を設定します。
inotify=yes
notify_interval=895
「notify_interval」も「10」とかに設定しているサイトをよく見かけますが…そんなに即時反映させる必要があるのか疑問です。デフォルトの895秒(約15分)で良いかと思います。 サブディレクトリで管理している場合は、サービスの再起動が手っ取り早いです。やり方は後述します。
この状態で起動すると、ワーニングが発生します。inotifyの監視ファイル数が少なく設定されているためです。以下のコマンドを実行して、inotifyの設定ファイルを開きます。
# nano /etc/sysctl.conf
そして以下の行を追記します。
#increase inotify max watchs per user for local minidlna
fs.inotify.max_user_watches=100000
「100000」という数字も適切に見直してください。1つのディレクトリにサブディレクトリを作らず、10万ファイルも動画を格納するのであればこれで良いですが…
サービスの起動
サービスの起動方法は、ほかのサービスと同様に以下のコマンドで行います。
# systemctl start minidlna
起動確認
他のPCやスマホから以下のURLにアクセスしてみてください。
http://[miniDLNAを起動しているマシンのIPアドレス]:8200
ポート番号を変更している場合は、それに合わせて8200の値を変更してください。 以下のような画面が表示されれば起動されています。
inotifyの設定について②
前述したように動画ファイルをサブディレクトリで管理している場合、inotifyの設定をyesにしてもDB更新をしてくれません。なので、サービスの再起動を自動ですることによって、1日1回DBの更新を行うようにします。
1日1回の更新はsystemdのtimerを使用して実現します。
serviceファイルの作成
まず、serviceファイルを作成します。内容はminiDLNAサービスの再起動です。以下のコマンドを実行してエディタを起動します。
# nano /etc/systemd/system/minidlna_restart.service
ファイルの内容を以下の通りです。
[Unit]
Description=miniDLNA restart
[Service]
Type=simple
ExecStart=systemctl restart minidlna
ひとまず以下のコマンドを実行して上記サービスが問題なく起動することを確認します。
# systemctl start minidlna-restart # systemctl status minidlna-restart
ログの部分に「minidlna_restart.service: Succeeded」と表示されていればOKです。
timerファイルの作成
次にTimerファイルを作成します。以下のコマンドを実行してエディタを起動します。
# nano /etc/systemd/system/minidlna_restart.timer
ファイルの内容は以下の通りです。
[Unit]
Description=miniDLNA restart timer
[Timer]
OnCalendar=*-*-* 04:30:00
[Install]
WantedBy=timers.target
上記サンプルは午前4:30に再起動をする設定にしています。必要に応じて「OnCalendar」を適切な設定に変更してください。
最後にtimerを起動します。
# systemctl start minidlna-restart.timer # systemctl status minidlna-restart.timer
「Active: active (waiting)」と表示されていればOKです。あとは、起動予定時間まで待ってみて以下のコマンドで指定した時刻に起動しているか確認してください。
# systemctl status minidlna-restart.timer
クライアントからの接続
ここまで来たらPS4なりタブレットなりスマホから、適切なアプリで設定してください。miniDLNAを起動しているマシンのIPアドレスを設定すればOKなはずです。
詳細については、各アプリの説明を参照してください。