September 30, 2020

Ubuntu Server20.04にMirakurun+EPGStationで録画サーバを構築する

動作が重くなってきたこともあり、8年近く動いていた録画サーバを最近組み直しました。
録画サーバの用途だけなら、もっと低スペックのCPUで十分なのですが、録画サーバ兼自宅サーバ兼BOTサーバとして動かしたかったので Comet Lake世代でTDP35WのCorei3-10300Tで組んでいます。
ソフトはMirukurunEPGStationを使っています。

パーツ

  • マザーボード

ASRock H410M-ITX/ac

  • メモリ

DDR4-2666 16GB F4-2666C19D

  • 電源

SilverStone SFX 300W 80PLUS BRONZE SST-ST30SF V2

  • SSD(M.2)

Western Digital SSD 240GB WD Green M.2-2280 SATA WDS240G2G0B-EC

PT2

今まではPT2で録画サーバを構築していたのですが、PT2は今は亡きPCIスロットを使っています。 現代のマザーボードはほとんどがPCIeになっているのでライザーカードを使ってPCIeに変換します。

ライザーカードはPT2でよく使われているDIR-EB262-C13を買いました。

  • カードリーダー

BCAS読み込み用にカードリーダーも必要です。 これは新たに買ったものではなく、ずっと使っているものをそのまま流用しています。

環境構築

録画サーバは以前に何度も構築しているので、スクリプトが予め用意されているので最初はUbuntu20.04 Desktopで構築しました。 今まではepgrec UNAを使って録画環境を構築していたのですが、recpt1とカーネル5系の相性が悪く(多分)うまく動きませんでした。 そこで、以前と同じUbuntu18.04を入れて、カーネルバージョンも4.x系にダウングレードして使っていたのですが、録画の終了と同時にカーネルクラッシュを起こし 数回に1回ぐらいの確率でPCがフリーズしてしまったのでうまく動きませんでした。
そのため、結果的にメインPCに挿さっていたPT3を使っています。

最終的にはこのような構成になっています。

Ubuntu Server

Ubuntu Serverを使っているのはMirakurunが3系からDockerを正式対応してサポートOSがUbuntu Server 20.04以降となっているのでDesktopではなくServerを選択しています。 Ubuntu Serverをインストールすると初回のインストーラーでsshの設定ができます。 GitHubのアカウントから公開鍵をインポートしてくれるのですぐにsshできるのが楽で素晴らしいです。
ちなみにhttps://github.com/[user name].keys で見れます。

Mirakurun

Ubuntu Server 20.04は最初からPT3のドライバが用意されているので、特に何もしなくても読み込めます。

$ ls /dev/dvb/
adapter0  adapter1  adapter2  adapter3  adapter4

Mirakurunは3系からDockerを公式でサポートしました。 今までは自分ですべてインストールしなければならなかったのですが、なんとdvbのチューナー設定などもすべて自動でやってくれます。神 作者の方が書いた3.0のリリースノートがわかりやすいです。

https://medium.com/chinachu/mirakurun-3-0-0-night-whale-23aaf2c23c25

Docker

Mirakurun3系を使うにはDockerとDocker Composeが必要です。
上記のブログのやり方だと動かなかったので公式のやり方で入れました。

sudo apt-get update

sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common -y

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

sudo apt-key fingerprint 0EBFCD88

sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

sudo apt-get update

sudo apt-get install -y docker-ce docker-ce-cli containerd.io

Docker Compose

sudo curl -L "https://github.com/docker/compose/releases/download/1.27.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

# enable docker command from user
sudo usermod -aG docker $USER

Install Mirakurun

git clone git@github.com:Chinachu/Mirakurun.git

cd Mirakurun/docker
docker-compose pull
docker-compose run --rm -e SETUP=true mirakurun
docker-compose up -d

なんと、これだけでMirakurunが動き出します。神

http://localhost:40772/ にアクセスするとGUIもあります。

チャンネルスキャンはこのアドレスからできます。

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

TVTest

Mirakurunが動けば、TVTestにBonDriverを入れれば他のPCから見ることも可能です。 ここまでかなり簡単にできます。
ありがたい。

https://github.com/Chinachu/BonDriver_Mirakurun

EPGStation

EPGStationは番組表の表示と録画予約を担ってくれます。
EPGStationには

  • node
  • ffmpeg
  • python
  • gcc

が必要なためapt get等でインストールしておきましょう。
pythonに関してはpyenvの方がおすすめです。

準備ができたらcloneしてきて、npm installするだけです。

git clone https://github.com/l3tnun/EPGStation.git
cd EPGStation
npm install --no-save
npm run build

インストールできたら設定のサンプルをコピーして修正します。

cp config/config.sample.json config/config.json
cp config/operatorLogConfig.sample.json config/operatorLogConfig.json
cp config/serviceLogConfig.sample.json config/serviceLogConfig.json

mirakurunのpathを設定

{
    "serverPort": 8888,
    "mirakurunPath": "http://localhost:40772/",
}

PC起動時に自動起動させるためpmを使って設定します。

sudo npm install pm2 -g
sudo pm2 startup ubuntu -u [user name]
pm2 start dist/server/index.js --name "epgstation"
pm2 save

これでサーバを再起動しても自動で起動します。

http://localhost:8888 にアクセスすれば番組表などが見れると思います。

DB

データベースも接続しましょう。
今回はMariaDBを使いました。

sudo apt install mariadb-common mariadb-server mariadb-client

# change utf8
sudo sed -i -e 's/character-set-server  = utf8mb4/character-set-server=utf8/' /etc/mysql/mariadb.conf.d/50-server.cnf
sudo sed -i -e 's/collation-server      = utf8mb4_general_ci/#collation-server      = utf8mb4_general_ci/' /etc/mysql/mariadb.conf.d/50-server.cnf

# launch
sudo systemctl enable mariadb
sudo systemctl start mariadb
mysql_secure_installation

# create database
sudo mysql -e "CREATE DATABASE epgstation CHARACTER SET utf8;"
sudo mysql -e "GRANT ALL ON epgstation.* TO epgstation@localhost IDENTIFIED BY 'mirakurun';"
  • confingにDBの設定を登録します
{
  "dbType": "mysql",
  "mysql": {
       "host": "localhost",
       "port": 3306,
       "user": "epgstation",
       "password": "mirakurun",
       "database": "epgstation",
       "connectTimeout": 20000,
       "connectionLimit": 10
  },
}

これで録画キーワードの登録などもできるようになりました!

まとめ

MirakurunのDocker対応により、今までドライバを自分で入れてビルドしてみたいなことが一切なくなり、 本当に楽に録画環境が作れるようになりました! 今回はEpgStationは普通に入れましたが、Docker image自体は配布されているのでそちらを使ってもいいと思います。 自分はスクリプトを作っているので、次回もコマンド一発で入れられる予定です。

epgrec UNA時代はよくエラーが起きていたのですが、今の所一回も問題が起きていないので快適です。
既存の環境から移行するのはなかなかやる気が起きませんが、新しく組み直した場合はおすすめです。

© AAkira 2019