りつくろいす

英語が苦手です

RaspberryPi4+docker-mirakurun-epgstationで録画鯖を建てる

経緯

前期に大学の講義で必要だからとraspberrypi 4を買った

色々なことができるとは知っていたが特に作りたいものもなく、 その講義が終わっても部屋に放置していた

後期に入って友達の家に行ったときに録画鯖なるものがあることを知り(同人誌を見せてもらった) 自分の家にはそういえばテレビがないなあと思い建ててみたくなった

Mirakurunはラズパイでも十分動くということが調べているうちにわかったので、 諸々をそろえてやっと作成した(夏休みにPCを組んだこともあり、買う金がなかった)

Mirakurunはチューナーサーバー、EPGStationはMirakurun用の録画管理ソフトである

EPGStationが動いているサーバーにアクセスすることで、PCやスマホから動画を録画した動画を見ることが可能である

今回はこの2つがまとめて入っており、環境構築もされているdocker-mirakurun-epgstationを使って録画鯖を簡単に作っていく

また、EPGStationはdocker-mirakurun-epgstationで動作確認をしているらしいので、このコンテナを使うことでできるだけ開発環境に近い状態で運用できる

github.com

github.com

github.com

準備

以下のものを購入

あと、B-CASとLANケーブルと同軸ケーブルも必要

また、ラズパイ用のヒートシンクやケースについては全部そろっているものを購入した

www.amazon.co.jp www.amazon.co.jp www.amazon.co.jp

なお今回はHDDについては用意していない(余裕がなかった)

設定

docker-mirakurun-epgstationに書かれている前提条件に従う IPの固定化やsshの有効化等については述べないので、各自調べてください

OS

Raspberry Pi OSを使用する Raspberry Pi Imagerでインストールするなら、デフォルトで選択されているはず https://www.raspberrypi.org/software/ SDカードをフォーマットして焼く

ドライバのインストール

PX-S1UD用のドライバをダウンロードする dvb-toolsもインストールしておく

$ sudo apt install dvb-tools
$ wget http://plex-net.co.jp/plex/px-s1ud/PX-S1UD_driver_Ver.1.0.1.zip
$ unzip PX-S1UD_driver_Ver.1.0.1.zip
$ sudo cp PX-S1UD_driver_Ver.1.0.1/x64/amd64/isdbt_rio.inp /lib/firmware/

ドライバを使うために適当なところで再起動する

Dockerとdocker-composeのインストール🐋

Dockerをインストールする

$ curl -sSL https://get.docker.com/ | CHANNEL=stable sh
$ sudo usermod -aG docker $USER
$ docker -v

doker-composeをラズパイ(armv7l)でインストールする方法はいくつかあるが、今回はpipでインストールする 依存パッケージをインストールした後、pipコマンドで入れる

$ sudo apt install libffi-dev libssl-dev python3 python3-pip python3-dev
$ sudo pip3 install docker-compose
$ docker-compose -v

https://matsuand.github.io/docs.docker.jp.onthefly/compose/install/

docker-mirakurun-epgstationのインストール

$ git clone https://github.com/l3tnun/docker-mirakurun-epgstation.git
$ cd docker-mirakurun-epgstation
$ cp docker-compose-sample.yml docker-compose.yml
$ cp epgstation/config/config.sample.yml epgstation/config/config.yml
$ cp epgstation/config/operatorLogConfig.sample.yml epgstation/config/operatorLogConfig.yml
$ cp epgstation/config/epgUpdaterLogConfig.sample.yml epgstation/config/epgUpdaterLogConfig.yml
$ cp epgstation/config/serviceLogConfig.sample.yml epgstation/config/serviceLogConfig.yml
$ docker-compose run --rm -e SETUP=true mirakurun

できるだけ開発環境に近づけたいのでできればこのまま起動したいが、 この状態でdocker-compose up -dすると

ERROR: no matching manifest for linux/arm/v7 in the manifest list entries

となり怒られるので、docker-compose.ymlの27行目辺りmysqlimage:のところを次のように変更する

image: yobasystems/alpine-mariadb

また、command:のところも頭についているmysqldを消して

command: --character-set-server=utf8 --collation-server=utf8_unicode_ci --performance-schema=false --expire_logs_days=1

とする

チャンネル設定はmirakurun/conf/channels.ymlを自分の地域に合わせて適当に変える

その他必要な設定があればdocker-compose.ymlを変更する

起動

$ sudo docker-compose up -d

しばらく時間がかかるのでうまくいくように祈る🙏

無事うまくいったけどログを見ると

Error: stream has closed before get network

が出ていて、うまくチャンネルをスキャンできていない場合は、設定したチャンネルと取れるチャンネルが違う

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

を実行すると自動スキャンしてくれる

スキャンの際に

Error: stream has closed before get network

となる場合はヒットしていないだけだが、

Error: no available tuners

となる場合はチューナーの設定がうまくいっていないので、 mirakurun/conf/tuners.yml を変更したり、ドライバが入っているか確認したりする

確認

デフォルトだとEPGStationのポートは8888なので、アクセスしてEPGStationが立ち上がっているか確認する

v3.1.0からMirakurunにもUIがついたので、ポート40772にアクセスして確認してみる

すでに環境構築されている状態なので録画も問題ないはず

今後

ライブ視聴をするために下記ページにあるような設定をしてみたが、設定場所が悪いのかうまくいかない

これを何とかライブ視聴できるところまで持っていこうと思っている

https://medium.com/chinachu/c98v-raspberry-pi-4-49c9692f5c09

https://nyanonon.hatenablog.com/entry/20190608/1559979652

あとがき

元々テレビがなくても生きていた程度にはテレビを見ないが、無いならないで寂しいなと思っていたところだったのでしばらくテレビ帰りしようと思う

結構嵌まってしまい3日かかったが、今まで触らなかったところを触ったのでいい勉強になった

ラズパイ上でdocker-mirakurun-epgstationを使って構築する記事を見かけなかったので、参考になれば幸いである

参考にしたサイト

https://medium.com/chinachu/c98v-raspberry-pi-4-49c9692f5c09

https://medium.com/chinachu/c98v-raspberry-pi-4-49c9692f5c09

https://hiroto-k.hatenablog.com/entry/2020/12/31/190000

https://study.engineergirl.work/?p=184

https://blog.ishmz.com/post/rapsberry-pi-4-px-s1ud/

https://nyanonon.hatenablog.com/entry/20190608/1559979652