Gerbera を用いてビデオサーバを動かす(Ubuntu 上)

【概要】
Gerbera は、UPnP/DLNA メディアサーバである。ホームネットワーク上の対応機器(テレビ、ゲーム機、VLC などのプレイヤー)に、動画や音楽を配信する。

大きな動画ファイルであっても、すべてダウンロードせずに再生を開始できる。 トランスコード機能により、特定のビデオ形式のみ再生できる機器にも対応できる。

かつて同じ用途で使われていた MediaTomb は 2010 年代前半に開発が終了しており、Gerbera はそのソースコードから派生した後継ソフトウェアである。

前準備

Ubuntu のシステム更新

Ubuntu で OS のシステム更新を行うときは, 次のコマンドを実行する.

Ubuntu のインストールは別ページ »で説明している.

# パッケージリストの情報を更新
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

設定

  1. 設定ファイルの場所

    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
    
  2. ネットワークインターフェースとポートの設定

    /etc/gerbera/config.xml<server> セクションに記述する。 インターフェース名は環境で異なるため、ip addr show で確認する。 ポート番号は UPnP の仕様上、49152 以上を指定する。

    <server>
      <interface>enp0s3</interface>
      <port>49152</port>
    </server>
    
  3. 管理画面(Web UI)の設定

    Web UI にはファイルシステムを閲覧する機能があり、Gerbera の実行ユーザーが読めるファイルは誰でもダウンロードできる。アカウントによる認証を有効にする。

    <ui enabled="yes" show-tooltips="yes">
      <accounts enabled="yes" session-timeout="30">
        <account user="<ユーザ名>" password="<パスワード>"/>
      </accounts>
    </ui>
    
  4. DLNA 対応の設定

    extend="yes" を指定すると、DLNA 用の protocolInfo を付加する。DLNA にのみ対応した機器(一部のテレビ、PlayStation など)で必要になる。

      <protocolInfo extend="yes"/>
    
  5. 文字コードの設定

    <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">
    
  6. 拡張子と MIME タイプの対応付け

    既定で対応付けられていない拡張子は、<import> セクションの <extension-mimetype> に追加する。ISO イメージを配信する場合の例を示す。

            <map from="iso" to="video/dvd-iso"/>
            <map from="ISO" to="video/dvd-iso"/>
    

    拡張子の照合は大文字小文字を区別する。

  7. 配信するディレクトリの登録(自動スキャン)

    <import> セクションに <autoscan> を書くと、指定したディレクトリを起動時に読み込む。mode="inotify" は、ファイルの追加や削除を検知して自動的に反映する設定である。

      <autoscan use-inotify="auto">
        <directory location="/srv/video" mode="inotify" recursive="yes" hidden-files="no"/>
      </autoscan>
    

    gerbera ユーザーがこのディレクトリを読めるように、パーミッションを設定する。

  8. トランスコードの設定

    <transcoding> セクションで有効・無効を切り替える。有効にすると、再生できない形式のファイルを ffmpeg 等で変換しながら配信する。変換用のコマンドは、別途インストールする。

    <transcoding enabled="yes">
    

サーバの起動と確認

  1. サービスの起動

    次のコマンドを実行する。enable はシステム起動時の自動起動を設定するオプションである。

    sudo systemctl enable --now gerbera
    sudo systemctl status gerbera
    
  2. ログの確認

    エラーメッセージが出ていないこと、待ち受けているアドレスとポート番号を確認する。

    sudo journalctl -u gerbera -n 50
    
  3. ファイアウォールの設定

    ufw を使用している場合は、Web UI と配信に使う TCP ポートと、機器の自動検出(SSDP)に使う UDP ポート 1900 を開ける。

    sudo ufw allow 49152/tcp
    sudo ufw allow 1900/udp
    
  4. 管理画面を開く

    Webブラウザで http://<サーバのIPアドレス>:49152/ を開く。IPアドレスとポート番号は環境で異なるため、ip addr show とログで確認する。

    管理画面の「Filesystem」からディレクトリを選び、「Add」ボタンでデータベースに登録する。設定ファイルの <autoscan> で登録済みのディレクトリは、この操作は不要である。

  5. 再生の確認

    同じネットワーク上の UPnP/DLNA 対応プレイヤー(VLC の「ローカルネットワーク」など)から、サーバ名が見えることを確認し、動画を再生する。

補足事項

Gerbera の Web UI は、認証を有効にしても家庭内 LAN での利用を前提とした強度である。インターネットに直接公開しない。

Gerbera 以外の選択肢として、設定が単純な MiniDLNA(パッケージ名 minidlna)、Webブラウザからの視聴やトランスコードに対応した Jellyfin がある。いずれも apt でインストールできる。