MicroServer(Gen8)にMirakurun + EPGStation で録画サーバを構築してみた

スポンサーリンク

今まで録画サーバをフルタワーPCで稼働させていたのですが、省電力化・省スペース化のためMicroServer(Gen8)にリプレースしました!

ここでは、構築時の手順をまとめてみました。

(手順は2021年2月時点のものです)

今回買ったもの

サーバ本体

こちらのHP MicroServer Gen8の中古をヤフオクにて購入。
価格は16,800円でした。安い!

CPUはXeon E3-1220L v2(2.3GHz)、メモリ8GB、HDDはなし。
小型ですが、フロントからHDDのアクセスができるナイスガイです!!

TVチューナー

PLEX社のPX-W3PE5をチョイス。
PCI Express接続のカードで4ch同時録画が可能です!!


Amazonにて購入しました!
購入時は17,005円。サーバより高いという・・・

 

サイズ的にサーバに取り付けれるか心配でしたが、問題なく取り付けられました(^^)v

SATA -USB3.0 変換ケーブル

SSDを取り付けるためにこちらを購入。
MicroServerには内部にUSBポートがあり、こちらに取り付けたディスクを起動ディスクにすることが可能です。

今回はこちらの商品をAmazonにて購入。

スポンサーリンク

構築手順

いろいろ取り付け

まずはサーバにTVチューナーとSSDを変換ケーブルで取り付けます。
ちなみにSSDは前サーバで使っていたもの(64GB)を流用しております。

こちらはチューナー取り付け後の図。なかなかいい感じです!

OSインストール

CentOSがサポート終了ということもあり、今回はRedHatを開発者サブスクリプションでインストールしました。

詳しい手順は別記事にて。

タイムゾーン変更

ここからの作業は基本rootで実行します。

録画をするにあたり、タイムゾーンは重要になります。

まずは「timedatectl」コマンドにて確認。
結果はこんな感じに。タイムゾーンがアメリカになってます。

timedatectl
               Local time: 土 2021-02-13 05:51:27 EST
           Universal time: 土 2021-02-13 10:51:27 UTC
                 RTC time: 土 2021-02-13 10:51:27
                Time zone: America/New_York (EST, -0500)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

タイムゾーンを「Asia/Tokyo」に変更します。

timedatectl set-timezone Asia/Tokyo

再度確認。

timedatectl
               Local time: 土 2021-02-13 19:56:30 JST
           Universal time: 土 2021-02-13 10:56:30 UTC
                 RTC time: 土 2021-02-13 10:56:30
                Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

ちゃんと変わってますね(^ ^)v

チューナードライバ導入

まず最初に、あとあと必要になるEPELリポジトリを有効化します。

yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm

次にカーネルの最新化&kernel-develを導入します。

yum -y update kernel
yum -y install kernel-devel

続いて必要なモジュールをyumで導入します。

yum -y install gcc make git dkms

いよいよドライバのビルド&インストール作業を行います。
私はworkというフォルダを作成して、その中で実施しました。

# 作業フォルダ作成
mkdir work
cd work

# git clone
git clone https://github.com/nns779/px4_drv.git

# make
cd px4_drv/fwtool/
make

# ファームウェア導入
wget http://plex-net.co.jp/plex/pxw3u4/pxw3u4_BDA_ver1x64.zip -O pxw3u4_BDA_ver1x64.zip
unzip -oj pxw3u4_BDA_ver1x64.zip pxw3u4_BDA_ver1x64/PXW3U4.sys
./fwtool PXW3U4.sys it930x-firmware.bin
mkdir -p /lib/firmware
cp it930x-firmware.bin /lib/firmware/

# ドライバインストール
cd ../
cp -a ./ /usr/src/px4_drv-0.2.1
dkms add px4_drv/0.2.1
dkms install px4_drv/0.2.1
modprobe px4_drv

以上の作業が終わったらインストールできているかを確認します。
以下のように出ていたらOKです!

[root@localhost]# ls /dev/px4video*
/dev/px4video0 /dev/px4video1 /dev/px4video2 /dev/px4video3

関連モジュールインストール

カードリーダー

B-CASを読み込むカードリーダーを使うために、関連モジュールを導入します。

yum -y install ccid pcsc-tools pcsc-lite pcsc-lite-libs pcsc-perl

カードリーダーとB-CASカードを繋いだら、以下コマンドで認識されているかを確認します。

pcsc_scan

arib25ライブラリ

以下コマンドをサクっと実行します。(workフォルダ配下でやっています)

yum -y install cmake gcc-c++
git clone https://github.com/stz2012/libarib25.git
cd libarib25/
make
make install
echo /usr/local/lib > /etc/ld.so.conf.d/usr-local-lib.conf
ldconfig

recpt1

recpt1は録画等に利用するコマンドです。

yum -y install autoconf automake
git clone https://github.com/stz2012/recpt1.git
cd recpt1/recpt1
.autogen.sh
./configure --enable-b25
make
make install

導入が完了したら動作確認をします。

recpt1 --b25 --strip 27 10 ~/test.ts

ここでエラーが発生。なんでやねん。

recpt1: error while loading shared libraries: libarib25.so.0: cannot open shared object file: No such file or directory

どうやら「libarib25.so.0」が見つからないと言っている模様。

recpt1エラー解消

lddで確認してみます。

# ldd /usr/local/bin/recpt1

    linux-vdso.so.1 (0x00007ffedff8b000)
    libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f9edcdcc000)
    libm.so.6 => /lib64/libm.so.6 (0x00007f9edca4a000)
    libarib25.so.0 => not found
    libc.so.6 => /lib64/libc.so.6 (0x00007f9edc687000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f9edcfec000)

確かにnot foundになってますね・・・
以下コマンドで設定してやります。

echo "/usr/local/lib64" | tee -a /etc/ld.so.conf
ldconfig

再度確認。not foundがなくなりました!

# ldd /usr/local/bin/recpt1
    linux-vdso.so.1 (0x00007ffc4a315000)
    libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f58f3c18000)
    libm.so.6 => /lib64/libm.so.6 (0x00007f58f3896000)
    libarib25.so.0 => /usr/local/lib64/libarib25.so.0 (0x00007f58f368c000)
    libc.so.6 => /lib64/libc.so.6 (0x00007f58f32c9000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f58f3e38000)
    libpcsclite.so => /lib64/libpcsclite.so (0x00007f58f30c4000)
    libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007f58f2d2f000)
   libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f58f2b17000)

改めて動作確認。作成したtest.tsが見れればOKです。

recpt1 --b25 --strip 27 10 ~/test.ts

Mirakurun導入

続いてMirakurunの導入です。
Dockerに対応しているみたいですが、あえて普通に入れます。

インストール

まずはnode.jsを入れます。

curl -sL https://rpm.nodesource.com/setup_10.x | bash -
yum -y install nodejs

続いてnpmでMirakurunおよび関連モジュールを導入します。

npm install pm2 -g
npm install mirakurun -g --unsafe --production
npm install rivarun -g
npm install arib-b25-stream-test -g --unsafe

上記が終わったらインストール確認をします。

pm2 status

チューナー設定

Mirakurunのチューナー設定をやります。

mirakurun config tuners

内容を以下のようにして保存します。
(viで上がっているので、「:wq」で保存できます。)

- name: PX4-S1
  types:
    - BS
    - CS
  command: recpt1 --device /dev/px4video0 --lnb 15 <channel> - -
  decoder: arib-b25-stream-test
  isDisabled: false

- name: PX4-S2
  types:
    - BS
    - CS
  command: recpt1 --device /dev/px4video1 --lnb 15 <channel> - -
  decoder: arib-b25-stream-test
  isDisabled: false

- name: PX4-T1
  types:
    - GR
  command: recpt1 --device /dev/px4video2 <channel> - -
  decoder: arib-b25-stream-test
  isDisabled: false

- name: PX4-T2
  types:
    - GR
  command: recpt1 --device /dev/px4video3 <channel> - -
  decoder: arib-b25-stream-test
  isDisabled: false

完了したらmirakurun を再起動します。

mirakurun restart

チャンネル設定

地上波

以下を実行して待ちます。

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

mirakurunの設定ファイル(channel.yml)を編集します。

vi /usr/local/etc/mirakurun/channels.yml

内容は以下を参考にしました。
https://gist.github.com/Connie-Wild/877b48382139fc03282eb448827c6d4b#file-channels-yml

終わったら再起動です。

mirakurun restart

EPGStation導入

ffmpegインストール

EPGStationに必要となるffmpegを事前に入れておきます。

以下を参考に、dnfで導入しました。
※下記の手順ではepelのインストール手順を最初にやっていますが、本手順では「チューナードライバの導入」でやっているので不要です。
https://computingforgeeks.com/how-to-install-ffmpeg-on-centos-rhel-8/

dnf -y localinstall --nogpgcheck https://download1.rpmfusion.org/free/el/rpmfusion-free-release-8.noarch.rpm
dnf -y install http://rpmfind.net/linux/epel/7/x86_64/Packages/s/SDL2-2.0.10-1.el7.x86_64.rpm
dnf -y install ffmpeg

EPGStation インストール

以下を実行してgit cloneからビルドします。
今回は/opt配下にインストールしました。

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

MariaDBインストール

EPGStationで使用するMariaDBをインストールします。

yum -y install mariadb mariadb-server

設定ファイルを編集します。

vi /etc/my.cnf.d/mariadb-server.cnf

以下の設定を追記して保存します。

[mariadb]
character-set-server=utf8
expire_logs_days = 1

DB起動および自動起動を設定します。

systemctl enable mariadb
systemctl start mariadb

rootのパスワードを設定します。

mysql_secure_installation

DB作成

MariaDB上にEPGStation用のDBを作成します。

mysql -u root -p

create database epgstation;
grant all on epgstation.* to epgstation@localhost identified by 'password';
exit;

※passwordのところは任意のパスワードを設定します。

EPGStation設定

設定ファイルをサンプルからコピーします。

cd /opt/EPGStation
cp config/config.sample.yml config/config.yml
cp config/operatorLogConfig.sample.yml config/operatorLogConfig.yml
cp config/epgUpdaterLogConfig.sample.yml config/epgUpdaterLogConfig.yml
cp config/serviceLogConfig.sample.yml config/serviceLogConfig.yml

config.ymlを編集します。

vi config/config.yml
dbtype: mysql
mysql:
    host: localhost
    port: 3306
    user: epgstation
    password: password  # DB作成時に設定したパスワードを記述
    database: epgstation

[...]

recorded:
    - name: recorded
      path: '/data/ts/'           # ファイルを保存するフォルダを指定
thumbnail: '/data/ts/thumbnail/'  # サムネイルを保存するフォルダを指定

[...]

ffmpeg: /usr/local/bin/ffmpeg
ffprobe: /usr/local/bin/ffprobe

(補足)任意のユーザ/グループでファイル保存したい場合

もし任意のuid、gidでファイルを保存したい場合は以下の設定をconfig.ymlに入れます。

uid: epguser 
gid: epggroup

ファイアウォール設定

そのままでは外からアクセスできないため、ファイアウォールにEPGStationのポート(8888)を許可します。

firewall-cmd --add-port=8888/tcp --permanent
firewall-cmd --reload

起動&自動起動設定

EPGStationを起動してみます。

pm2 start dist/index.js --name "epgstation"

ブラウザから
http://サーバのIPアドレス:8888/
にアクセスしてEPGStationsが表示されることを確認します。

問題ないようであれば自動起動設定をしておきます。

pm2 save

以上で設定は完了です。

スポンサーリンク

まとめ

設定はなかなか敷居が高かったのですが、苦労した分、満足のいくサーバができました!!
録画はもちろん、スマホでリアルタイム視聴もできたりと、理想の環境が手に入りましたよ~
(^ ^)v

コンパクトになったし、消費電力も常時80W越えから30~50Wに削減されたので、コスト的にもいい感じです。

まだサーバリソース的に余裕があるので、録画意外にもサービスを盛り込んでいきたいと思います!!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です