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のインストール方法はこちら
Docker Composeのインストール方法はこちら
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日目でした。なんとか間に合った……
次の日は白い人さんです。