RPI4 と PX-Q1UD を使った docker-mirakurun-epgstation v2 TV構築

参考: [MirakurunをDockerに移行した](https://hiroto-k.hatenablog.com/entry/2020/12/31/190000)
参考: [Docker on Linux](https://github.com/Chinachu/Mirakurun/blob/master/doc/Platforms.md)

備忘録なのでVim設定などは適宜変更してください.

# 用意するもの

RPI4
PX-Q1UD
BCASリーダ


## 初期設定

- アップデート
- HDDマウント関係インストール
- vim設定

```bash:
sudo raspi-config nonint do_change_timezone Asia/Tokyo && \
sudo raspi-config nonint do_change_locale ja_JP.UTF-8 && \
sudo raspi-config nonint do_wifi_country JP && \
sudo sed -i "s/deb.debian.org\/debian /ftp.jp.debian.org\/debian /g" /etc/apt/sources.list && \
sudo apt update && sudo apt upgrade -y && sudo apt autoremove -y && \
sudo apt install -y exfat-fuse exfat-utils ntfs-3g cifs-utils && \
dpkg -l | grep vim && \
sudo apt --purge remove -y vim-common vim-tiny && \
sudo apt install vim-gtk -y && sudo cp /etc/vim/vimrc /etc/vim/vimrc.bak && \
wget -O .vimrc https://gist.github.com/Yuu-stack/afc3644c76d10dc39bd4c0ad48a0bc86/raw/6ca7b465dae295db9789a4bdd6806a1629610d11/.vimrc && \
sudo cp ~/.vimrc /etc/vim/vimrc && \
sudo reboot
```

## 下準備-1(Docker関係)

Dockerで環境構築するために

- Docker
- Docker-compose

これらをインストールする.
初めてのセットアップからワンストップでDockerインストールまで行うとコケるので、再起動後に実行することをおすすめします。コマンド詳細は前記事を参考に[どうぞ](https://qiita.com/NNNGriziMan/items/cf30eaed5ff1b6cf0a14)

```bash:
# docker
curl -sSL https://get.docker.com | sh 
sudo usermod -a -G docker $USER 

# docker-compose
sudo apt install -y libffi-dev libssl-dev python3 python3-pip python3-dev && \
sudo pip3 install docker-compose 

# 確認
echo '+++++++++++++++' 
docker -v 
docker-compose -v 
```

## 下準備-2(ドライバ関係)

細かなインストールはDocker内で行うため最低限必要なチューナのドライバをインストール

```bash:
cd ~ && echo 'PX-Q1UDドライバのインストール' && \
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/ && 
sleep 0.5 && \
sudo shutdown -h now
```

## 接続の確認

RPI4をシャットダウンさせたら

- PX-Q1UD
- BCAS

を接続し電源ON.接続を確認します.

```bash:
ls -l /dev/dvb/ && dmesg | grep PX-S1UD && usb-devices | grep PX-S1UD 
```

BCASカードの接続確認は本来
`pcsc_scan | grep B-CAS`
このように`pcsc`コマンドを用いて行いますが、
Dockerを用いたMirakurunを構築する場合これをアンインストールする必要があるので今回はインストールしません.確認でインストールした人はアンインストールをしてからDocker Mirakurunの構築に移ってください.

```bash:確認のためinstallする場合
sudo apt install -y pcscd libpcsclite-dev libccid pcsc-tools && \
pcsc_scan | grep B-CAS
```

```bash:uninstall
sudo apt remove --purge -y pcscd libpcsclite-dev libccid pcsc-tools && \
sudo reboot
```

## l3tnun/docker-mirakurun-epgstation

[docker-mirakurun-epgstation](https://github.com/l3tnun/docker-mirakurun-epgstation)

```bash:
# gitを使用するのでインストール
sudo apt install -y git && \
curl -sf https://raw.githubusercontent.com/l3tnun/docker-mirakurun-epgstation/v2/setup.sh | sh -s && \
cd docker-mirakurun-epgstation
```

ビルドに時間(10-15min)がかかるので気長に待ちましょう

```bash:docker-mirakurun-epgstationディレクトリ内で実行
# 起動
sudo docker-compose up -d
#停止したい場合
sudo docker-compose down
```

### 起動確認
起動の確認までできれば、再起動させてもEPGStationとMirakurunは自動で起動するみたいです。
本当に便利すぎる

EPGStationの確認
`http://DockerHostIP:8888 `
Mirakurunの確認
`http://DockerHostIP:40772 `

チャンネルスキャンしたい場合
`curl -X PUT "http://localhost:40772/api/config/channels/scan"`

## もし Docekr Mirakurun だけインストールしたい場合

[Official-Doc「Install / Uninstall / Update」](https://github.com/Chinachu/Mirakurun/blob/master/doc/Platforms.md#install--uninstall--update)

```bash:
# Install 
mkdir ~/mirakurun/ && \
cd ~/mirakurun/ && \
wget https://raw.githubusercontent.com/Chinachu/Mirakurun/master/docker/docker-compose.yml && \
docker-compose pull
docker-compose run --rm -e SETUP=true mirakurun
docker-compose up -d
```

どうやら勝手にチューナ設定を行ってくれるようです.すごい、、、

[Official-Doc「config」](https://github.com/Chinachu/Mirakurun/blob/master/doc/Platforms.md#config)
チューナ設定などはここから見れるようです

```bash:
vim /usr/local/mirakurun/config/server.yml
vim /usr/local/mirakurun/config/tuners.yml
vim /usr/local/mirakurun/config/channels.yml
```

## チャンネルスキャンの実施
コピペでここまで構築してくれるとは、恐るべしDocker Mirakurun
チューナ設定とかも不要なんですね..すごい


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

![スクリーンショット 2021-09-22 21.54.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/363815/22130d04-119d-0fa4-6514-0641ff7dd125.png)

# Dockerコマンド-メモ

[参考: Dockerイメージとコンテナの削除方法](https://qiita.com/tifa2chan/items/e9aa408244687a63a0ae)

<details><summary>Dockerイメージ確認の詳細</summary><div>

```bash:
# 全てのイメージ情報を表示
docker images -a
# 全てのイメージIDのみ抽出
docker images -a -q
```
</div></details>

<details><summary>Dockerイメージ削除の詳細</summary><div>

```bash:
# イメージIDで削除
docker rmi [イメージID]
# 全てのイメージIDのみを抽出し、全てのイメージを削除
docker rmi `docker images -a -q`
# 強制削除する際は`-f`オプションを使用する
docker rmi -f [コンテナID]
```
</div></details>


<details><summary>Dockerコンテナ確認の詳細</summary><div>

```bash:
# 全てのコンテナ情報を表示
docker ps -a
# 全てのコンテナIDのみを抽出
docker ps -a -q
```
</div></details>

<details><summary>Dockerコンテナ削除の詳細</summary><div>

```bash:
# コンテナIDで削除
docker rm [コンテナID]
# 全てのコンテナIDのみを抽出し、全てのコンテナを削除
docker rm `docker ps -a -q`
# 強制削除する際は`-f`オプションを使用する
docker rm -f [コンテナID]
```
</div></details>


# 終わりに

Dockerを使うことでこんなにも簡単に環境構築出来るとは知りませんでした。
つぎはnasへの録画保存設定や好きなデコーダ?の設定、詳細設定のカスタム,別のチューナを使用した場合など掘り下げていければと思います。