ijsのガラクタ倉庫

ijs01140の作業メモ等

Linux上のDockerで録画鯖を建てる方法をざっくり書く

Linux上のDockerで録画鯖を建てる方法をざっくり書きます。1日でバタバタ書いたので多少の粗さはゆるしてね。

建て方

用意するもの

  • チューナー(いわゆるTS抜き)
    現在だとPLEX製のものが入手しやすい
  • チューナーを接続できるPC x64なデスクトップPC推奨
  • B-CASカード
  • ICカードリーダー(接触式)
    確定申告とかマイナポータルとかの用途向けに売られてるので、入手は容易
  • テレビ用の同軸ケーブル
    古いケーブルや細いケーブルだと、BS放送/CS放送に非対応な場合があるので注意
  • (混合されてる場合のみ)分波器

ドライバ導入(PX-W3PE5, PX-MLT5PE等)

PT3等、KernelにDVBドライバがある場合、この手順は不要。

ドライバのインストール

用意したチューナーに合うドライバを用意しましょう。DKMSを使用したインストール方法だと、Kernel更新のたびにやる必要のあるドライバの再ビルドを自動でやってくれるので、おすすめです。

PX-W3PE5, PX-MLT5PE等の場合、PLEXの公式ドライバではなく、GitHub - nns779/px4_drv: Unofficial Linux driver for PLEX PX4/PX5/PX-MLT series ISDB-T/S receivers (not V4L-DVB)を推奨しています。公式ドライバより安定しており、DKMSも使用可能なためです。

Mirakurun + EPGStation導入

今回の記事では docker-mirakurun-epgstation を使用した手順を説明します。 github.com

pcscdの削除

B-CASカードをDocker上で使うため、pcscdを削除する。

DockerとDocker Composeのインストール

Dockerの公式ドキュメントに、各ディストリビューション毎のインストール方法が記載されています。 ディストリビューションやDockerの更新によって手順が変わる可能性があるので、ここでは公式ドキュメントのURLを紹介するだけに留めておきます。
Dockerのインストール方法はこちら

docs.docker.com

Docker Composeのインストール方法はこちら

docs.docker.com

Dockerイメージのインストール

以下のコマンドを実行すると、MirakurunとEPGStationのDockerイメージをダウンロードし、サンプル設定ファイルを設定し、初回セットアップを実施します。

# MirakurunとEPGStationを導入
curl -sf https://raw.githubusercontent.com/l3tnun/docker-mirakurun-epgstation/v2/setup.sh | sh -s
# これから作業するディレクトリに移動
cd docker-mirakurun-epgstation

chardev版ドライバ特有の手順(PX-W3PE5, PX-MLT5PE等)

PX-W3PE5, PX-MLT5PE等、chardev版ドライバを使用するチューナーの場合、追加の手順が必要になります。

docker-compose.ymlの編集

docker-compose.ymlに以下のような箇所があるので、編集します。

version: '3.7'
services:
    mirakurun:
        image: chinachu/mirakurun
        cap_add:
            - SYS_ADMIN
            - SYS_NICE
        ports:
            - "40772:40772"
            - "9229:9229"
        volumes:
            - ./mirakurun/conf:/app-config
            - ./mirakurun/data:/app-data
        environment:
            TZ: "Asia/Tokyo"
        devices:
            - /dev/bus:/dev/bus
            - /dev/dvb:/dev/dvb
        restart: always
        logging:
            driver: json-file
            options:
                max-file: "1"
                max-size: 10m

まず、devicesの項目をチューナーに合わせて変更し、Mirakurunからチューナーが使えるようにします。
例として、チューナーがPX-W3PE5で、ドライバがpx4_drvの場合を掲載します。PX-W3PE5場合、チューナー数は地上波x2, BS/CSx2のため、デバイスファイルは/dev/px4video0から/dev/px4video4を列挙すればOKです。

        devices:
            - /dev/bus:/dev/bus
            - /dev/dvb:/dev/dvb
# 以下にチューナーを列挙
            - /dev/px4video0:/dev/px4video0
            - /dev/px4video1:/dev/px4video1
            - /dev/px4video2:/dev/px4video2
            - /dev/px4video3:/dev/px4video3

また、volumesの項目を次のように変更し、録画コマンドの導入を可能にします。

        volumes:
            - ./mirakurun/conf:/app-config
            - ./mirakurun/data:/app-data
# 以下を追記
            - ./mirakurun/opt:/opt

録画コマンドの導入

mirakurun/opt/bin/startupにカスタムスタートアップスクリプトを導入し、録画コマンドが導入されていない場合にインストールを行うよう設定します。

mkdir -p mirakurun/opt/bin
vim bin/startup

カスタムスタートアップスクリプトの中身の例は以下の通りです。

#!/bin/bash

if !(type "recpt1" > /dev/null 2>&1); then
  apt-get update
  apt-get install -y --no-install-recommends git autoconf automake

  cd /tmp
  git clone https://github.com/stz2012/recpt1.git
  cd recpt1/recpt1
  ./autogen.sh
  ./configure --prefix /opt
  make
  make install
fi

recpt1 -v

次に、このコマンドを実行し、Mirakurunに録画コマンドを導入します。

docker-compose down
docker-compose run --rm -e SETUP=true mirakurun

Mirakurunのチューナー設定を編集

チューナーのデバイスファイルを列挙します。例として、チューナーがPX-W3PE5で、ドライバがpx4_drvの場合を掲載します。これは使ってるチューナーに合わせて、必要に応じて変更してください。

- name: PX_S1
  types:
    - BS
    - CS
  command: recpt1 --device /dev/px4video0 <channel> - -
  decoder: arib-b25-stream-test
  isDisabled: false
- name: PX_S2
  types:
    - BS
    - CS
  command: recpt1 --device /dev/px4video1 <channel> - -
  decoder: arib-b25-stream-test
  isDisabled: false
- name: PX_T1
  types:
    - GR
  command: recpt1 --device /dev/px4video2 <channel> - -
  decoder: arib-b25-stream-test
  isDisabled: false
- name: PX_T2
  types:
    - GR
  command: recpt1 --device /dev/px4video3 <channel> - -
  decoder: arib-b25-stream-test
  isDisabled: false

起動

docker-compose.ymlのあるディレクトリで、sudo docker-compose up -dを実行すると起動できます。

起動後にやること

チャンネルスキャンの実施

テレビ放送を視聴・録画するためにはチャンネル設定が必要です。チャンネル設定を手動でやるのは面倒なため、私はチャンネルスキャンをおすすめしてます。
地上波の場合、以下を実行します

curl -X PUT "http://localhost:40772/api/config/channels/scan"

BSの場合

curl -X 'PUT'   'http://localhost:40772/api/config/channels/scan?dryRun=false&type=BS&useSubCh=true&refresh=true'

CSの場合

curl -X 'PUT'   'http://localhost:40772/api/config/channels/scan?dryRun=false&type=CS&useSubCh=true&refresh=true'

必要なチャンネルスキャンを終えたら、

sudo docker-compose down
sudo docker-compose up -d

で再起動し、チャンネル設定を反映します。

EPGStationを開く

EPGStationはhttp://(サーバーのIPアドレス):8888をブラウザで開くとアクセスできます。サーバーのIPアドレスは、ip addr等を実行すれば調べることができます。

以上で構築手順は終了です。お疲れ様でした。

締め(?)

この記事は、アスタルテ ゆるふわ Advent Calendar 2022 - Adventarの10日目でした。なんとか間に合った……
次の日は白い人さんです。