RaspberryPi4+docker-mirakurun-epgstationで録画鯖を建てる
経緯
前期に大学の講義で必要だからとraspberrypi 4を買った
色々なことができるとは知っていたが特に作りたいものもなく、 その講義が終わっても部屋に放置していた
後期に入って友達の家に行ったときに録画鯖なるものがあることを知り(同人誌を見せてもらった) 自分の家にはそういえばテレビがないなあと思い建ててみたくなった
Mirakurunはラズパイでも十分動くということが調べているうちにわかったので、 諸々をそろえてやっと作成した(夏休みにPCを組んだこともあり、買う金がなかった)
Mirakurunはチューナーサーバー、EPGStationはMirakurun用の録画管理ソフトである
EPGStationが動いているサーバーにアクセスすることで、PCやスマホから動画を録画した動画を見ることが可能である
今回はこの2つがまとめて入っており、環境構築もされているdocker-mirakurun-epgstationを使って録画鯖を簡単に作っていく
また、EPGStationはdocker-mirakurun-epgstationで動作確認をしているらしいので、このコンテナを使うことでできるだけ開発環境に近い状態で運用できる
準備
以下のものを購入
- Raspberry Pi 4 2GB
- TVチューナー: PLEX PX-S1UD V2.0
- ICカードリーダー: SCR3310/v2.0
- SDカード: 32GB
また、ラズパイ用のヒートシンクやケースについては全部そろっているものを購入した
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行目辺りmysql
のimage:
のところを次のように変更する
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