はじめに
非力なRaspberryPiZeroシリーズでなんとかメディアサーバを作ってみました。まず今回の要求事項ですが。
- WEBブラウザから写真の閲覧と音楽再生ができること
- DLNAを使用してVLCなどのクライアントから音楽をストリーミング再生できること
もちろんこれらの機能はフルスケールのメディアサーバ、例えばJellyfinなどでは楽勝に達成できる内容である。しかしながら非力なRaspberryPiZeroシリーズではこれらのメディアサーバは負荷が大きく動作が難しい。そこで今回は軽量動作が可能な次の2つのプロダクトを使用して機能を実現させた。
- MiniDLNA
- FileBrowser
なお、今回使用したハードウェアはRaspberryPiZero2Wである。
手順
-
ベースシステムの準備
- Raspberry Pi Imager で Raspberry Pi OS Lite をSDカードに書き込み
- ssh と Wi-Fi 設定を有効にして起動
- ホスト名・パスワードなど初期設定を実施
-
zramのインストール
bashsudo apt update sudo apt install -y zram-tools
設定内容の編集
bashsudo nano /etc/default/zramswap
ALGO=lz4 PERCENT=50 PRIORITY=100
zram再起動
bashsudo systemctl restart zramswap.service
なお、zramとはなんぞやは以前の記事なども参照してほしい。
-
MiniDLNA のインストールと設定
インストールと自動起動設定bashsudo apt install -y minidlna sudo systemctl enable minidlna
メディアフォルダの作成と設定
bashsudo mkdir -p /var/lib/minidlna/photo sudo mkdir -p /var/lib/minidlna/music sudo chown -R minidlna:minidlna /var/lib/minidlna
コンフィグファイルの修正(任意)
※今回私はデフォルトのままにしたbashsudo nano /etc/minidlna.conf
サービス再起動
bashsudo systemctl restart minidlna
-
FileBrowser のインストールと設定
ダウンロード&配置bashcurl -fsSL https://raw.githubusercontent.com/filebrowser/get/master/get.sh | bash sudo mv filebrowser /usr/local/bin/
初回起動とユーザー作成
bashfilebrowser -d /var/lib/filebrowser.db config init # 初回 config init 時、admin ユーザーが自動作成され、ログに表示されるランダムパスワードでログインできます。ユーザー追加で任意アカウントを作成可能です。 filebrowser -d /var/lib/filebrowser.db users add "あなたのユーザID(filebrowserのユーザ)" "あなたのパスワード(filebrowserのユーザ)" --perm.admin
キャッシュディレクトリとルート設定
bashsudo mkdir -p /var/lib/filebrowser/cache filebrowser -d /var/lib/filebrowser.db config set --cache-dir /var/lib/filebrowser/cache filebrowser -d /var/lib/filebrowser.db config set --scope /var/lib/minidlna
MiniDLNA のメディアパスと File Browser を連携
bashfilebrowser -d /var/lib/filebrowser.db config set --scope /var/lib/minidlna
systemd 登録
bashsudo nano /etc/systemd/system/filebrowser.service
[Unit] Description=File Browser After=network.target [Service] User=あなたのユーザ名(実行するOSのユーザ) ExecStart=/usr/local/bin/filebrowser -d /var/lib/filebrowser.db --cache-dir /var/lib/filebrowser/cache -a 0.0.0.0 Restart=always [Install] WantedBy=multi-user.target
有効化と起動
bashsudo systemctl daemon-reload sudo systemctl enable filebrowser
-
File Browser アップロード権限の修正
ユーザーを minidlna グループに追加bashsudo usermod -aG minidlna あなたのユーザ名(実行するOSのユーザ)
-
動作確認
- WEBブラウザで
http://<RaspberryPiのIP>:8080
にアクセス。ログインしテストファイルなどアップロードできるか確認 - MiniDLNA(DLNAクライアントで認識できるか確認)
- WEBブラウザで
注意点
- File Browserで初回接続時ファイルのサムネイルを作成するのに時間がかかり負荷が高い。1度サムネイルができてしまえばキャッシュされるので問題なし