Gerbera を用いてビデオサーバを動かす(Ubuntu 上)
Gerbera は、UPnP/DLNA メディアサーバである。ホームネットワーク上の対応機器(テレビ、ゲーム機、VLC などのプレイヤー)に、動画や音楽を配信する。
大きな動画ファイルであっても、すべてダウンロードせずに再生を開始できる。 トランスコード機能により、特定のビデオ形式のみ再生できる機器にも対応できる。
かつて同じ用途で使われていた MediaTomb は 2010 年代前半に開発が終了しており、Gerbera はそのソースコードから派生した後継ソフトウェアである。
前準備
Ubuntu のシステム更新
Ubuntu で OS のシステム更新を行うときは, 次のコマンドを実行する.
# パッケージリストの情報を更新
sudo apt update
# インストール済みのパッケージを包括的に更新 (依存関係も考慮)
sudo apt full-upgrade
# 変更をシステム全体に確実に反映させるために再起動
sudo shutdown -r now
Gerbera のインストール(Ubuntu 上)
apt リポジトリからのインストール
Ubuntu 26.04 LTS の apt リポジトリでは Gerbera 2.4.1 が提供される。インストールするには,次のコマンドを実行する.
# パッケージリストの情報を更新
sudo apt update
sudo apt -y install gerbera
gerbera --version
インストールにより、システムユーザー gerbera、設定ファイル /etc/gerbera/config.xml、systemd のサービス gerbera.service が作られる。
公式リポジトリからのインストール(新しいバージョンを使う場合)
Gerbera 開発チームが Ubuntu 用の apt リポジトリを提供している。新しいバージョンを使うときは,次のコマンドを実行する.
sudo apt -y install curl gnupg
curl -fsSL https://pkg.gerbera.io/public.asc | gpg --dearmor | sudo tee /usr/share/keyrings/gerbera-keyring.gpg > /dev/null
echo "deb [signed-by=/usr/share/keyrings/gerbera-keyring.gpg] https://pkg.gerbera.io/ubuntu `lsb_release -sc` main" | sudo tee /etc/apt/sources.list.d/gerbera.list
sudo apt update
sudo apt -y install gerbera
設定
- 設定ファイルの場所
systemd のサービスとして動かす場合、Gerbera は
/etc/gerbera/config.xmlを読む。 設定ファイルがない場合や、新しい版で追加された項目を確認したい場合は、次のコマンドで生成できる。sudo -u gerbera gerbera --create-config | sudo tee /etc/gerbera/config.xml sudo chown -R gerbera:gerbera /etc/gerbera - ネットワークインターフェースとポートの設定
/etc/gerbera/config.xmlの<server>セクションに記述する。 インターフェース名は環境で異なるため、ip addr showで確認する。 ポート番号は UPnP の仕様上、49152 以上を指定する。<server> <interface>enp0s3</interface> <port>49152</port> </server> - 管理画面(Web UI)の設定
Web UI にはファイルシステムを閲覧する機能があり、Gerbera の実行ユーザーが読めるファイルは誰でもダウンロードできる。アカウントによる認証を有効にする。
<ui enabled="yes" show-tooltips="yes"> <accounts enabled="yes" session-timeout="30"> <account user="<ユーザ名>" password="<パスワード>"/> </accounts> </ui> - DLNA 対応の設定
extend="yes"を指定すると、DLNA 用の protocolInfo を付加する。DLNA にのみ対応した機器(一部のテレビ、PlayStation など)で必要になる。<protocolInfo extend="yes"/> - 文字コードの設定
<import>セクションに記述する。filesystem-charsetはファイル名の文字コード、metadata-charsetは動画や音楽ファイル内のタグの文字コードである。日本語のファイル名は UTF-8 で扱う。タグが Shift_JIS で書かれた古いファイルを扱う場合は、metadata-charsetに CP932 を指定する。<import hidden-files="no"> <filesystem-charset>UTF-8</filesystem-charset> <metadata-charset>CP932</metadata-charset> <scripting script-charset="UTF-8"> - 拡張子と MIME タイプの対応付け
既定で対応付けられていない拡張子は、
<import>セクションの<extension-mimetype>に追加する。ISO イメージを配信する場合の例を示す。<map from="iso" to="video/dvd-iso"/> <map from="ISO" to="video/dvd-iso"/>拡張子の照合は大文字小文字を区別する。
- 配信するディレクトリの登録(自動スキャン)
<import>セクションに<autoscan>を書くと、指定したディレクトリを起動時に読み込む。mode="inotify"は、ファイルの追加や削除を検知して自動的に反映する設定である。<autoscan use-inotify="auto"> <directory location="/srv/video" mode="inotify" recursive="yes" hidden-files="no"/> </autoscan>gerberaユーザーがこのディレクトリを読めるように、パーミッションを設定する。 - トランスコードの設定
<transcoding>セクションで有効・無効を切り替える。有効にすると、再生できない形式のファイルを ffmpeg 等で変換しながら配信する。変換用のコマンドは、別途インストールする。<transcoding enabled="yes">
サーバの起動と確認
- サービスの起動
次のコマンドを実行する。
enableはシステム起動時の自動起動を設定するオプションである。sudo systemctl enable --now gerbera sudo systemctl status gerbera - ログの確認
エラーメッセージが出ていないこと、待ち受けているアドレスとポート番号を確認する。
sudo journalctl -u gerbera -n 50 - ファイアウォールの設定
ufw を使用している場合は、Web UI と配信に使う TCP ポートと、機器の自動検出(SSDP)に使う UDP ポート 1900 を開ける。
sudo ufw allow 49152/tcp sudo ufw allow 1900/udp - 管理画面を開く
Webブラウザで
http://<サーバのIPアドレス>:49152/を開く。IPアドレスとポート番号は環境で異なるため、ip addr showとログで確認する。管理画面の「Filesystem」からディレクトリを選び、「Add」ボタンでデータベースに登録する。設定ファイルの
<autoscan>で登録済みのディレクトリは、この操作は不要である。 - 再生の確認
同じネットワーク上の UPnP/DLNA 対応プレイヤー(VLC の「ローカルネットワーク」など)から、サーバ名が見えることを確認し、動画を再生する。
補足事項
Gerbera の Web UI は、認証を有効にしても家庭内 LAN での利用を前提とした強度である。インターネットに直接公開しない。
Gerbera 以外の選択肢として、設定が単純な MiniDLNA(パッケージ名 minidlna)、Webブラウザからの視聴やトランスコードに対応した Jellyfin がある。いずれも apt でインストールできる。