今まで録画サーバをフルタワー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に削減されたので、コスト的にもいい感じです。
まだサーバリソース的に余裕があるので、録画意外にもサービスを盛り込んでいきたいと思います!!
コメントを残す