余っていたPCを使って録画サーバーを作ったときの備忘録です。
【環境】
- Ubuntu 20.04 LTS 日本語版
- mirakurun + EPGStation
【ハードウェア】
- チューナー :PX-Q1UD
- カードリーダー:SCR3310
- B-CASカード
下準備
Ubuntuのインストールと初期設定
Ubuntuのインストール
インターネット上に転がっている記事を参考にインストールします。
インストール後、PCが起動しなくなったときはSecureBootが邪魔している可能性があるので、
こちらの記事を参考に設定を解除します(手前味噌)。
SSHの設定(OpenSSHのインストール)
外部のマシンからコマンドで操作する場合は、SSHの準備をします。
SSHで操作しないよという方は、この手順はスキップです。
端末(コンソール)を立ち上げ、コマンドを入力
sudo apt-get install openssh-server
IPアドレスを調べる
ifconfig
もし、ifconfigコマンドがないよと言われたら、
sudo apt-get install net-tools
でコマンドをインストールする
別PCからSSH接続の確認
TeraTermとかそれっぽいソフトから、SSHで接続ができるか確認します。
録画用外付けHDDのマウント設定
今回、録画した番組は外付けHDDに保存するので、起動時にHDDをマウントする設定を行います。
HDDは事前にext4形式でフォーマットをかけておいてください。
フォーマット後はアンマウントしておくといいです。
マウントポイント用のディレクトリを作成します。
今回は/ExtStorage/REC_HDD01にマウントします。
sudo mkdir /ExtStorage
sudo mkdir /ExtStorage/REC_HDD01
Ubuntu起動時に自動的にマウントされるようfstabを書き換えます。
HDDを繋ぎ変えたりしても認識ができるよう、UUIDを使ってマウントします。
まずはUUIDを調べます
sudo blkid -o list
環境によって変わるものの、たいてい/dev/sdaXXとなっているものが外付けのドライブ
赤線部分がUUID 後で使います。
fstabを書き換えます。
sudo vi /etc/fstab
もともと書かれている部分は触らずに、1行追加します。
UUID=控えたUUID /ExtStorage/REC_HDD01 ext4 defaults,noatime 0 0
:wqで保存します。
コマンドを入力し、問題なくマウントができるか確認します。
sudo mount -a
エラーが表示されなければ成功、エラーが出たらUUIDかfstabの書き方が間違っています。
fstabが間違ったままUbuntuを再起動すると、起動しなくなることがあるので注意してください(レスキューモードで復旧させる羽目になります)。
念のため、再起動も正常に行えるか確認します。
sudo reboot
ここから本題
いよいよ録画サーバーを立てるのに必要なソフトウェア群をインストールしていきます。
チューナー、カードリーダーはすべて接続しておきます。
チューナーのドライバのインストール
以下のコマンドを順に入力し、ドライバをインストールします。
curl -O 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/
以下のコマンドを入力し、チューナーが認識されているか確認します。
ls /dev/dvb/adapter*
カードリーダー用のドライバとソフトウェアのインストール
以下のコマンドを順に入力します。
sudo apt install -y pcscd pcsc-tools libpcsclite-dev
sudo pcsc_scan
Japanese Chijou~と表示されているのが確認できたらCtrl + Cキーで抜けます。
録画用ソフトのインストール前の下準備
今回使用するMirakurun、EPGStationをインストールするにあたって必要なソフトウェアをインストールします。
nodejsは12.x系でないと動かないので注意です。
apt-getで最新版のnodejsを入れて、そのあとに12.x系をインストール、
apt-getでインストールした最新版のnodejsをリムーブするといいです。
curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
sudo apt-get install -y nodejs
sudo npm install pm2 -g
curlコマンドがないよと言われたら
sudo apt-get install curl
を叩いてやり直します。
Mirakurunのインストール
コマンドを順に入力します。
sudo npm install mirakurun -g --production
sudo mirakurun init
sudo apt install -y dvb-tools
チャンネル設定用ファイルもダウンロードします。
cd /usr/local
sudo mkdir conf
cd conf
sudo curl -O https://raw.githubusercontent.com/Chinachu/dvbconf-for-isdb/master/conf/dvbv5_channels_isdbt.conf
地デジデコーダー用ソフトもインストールします。
sudo npm install arib-b25-stream-test -g --unsafe
Mirakurunの設定
チューナーをMirakurunに認識させるために、チューナーの情報を設定ファイルに書き込みます。
sudo mirakurun config tuners
今回は4チューナー内蔵タイプのものを購入しているので、4つ情報を書きます。
------------------------------
- name: PX-S1UD_0
types:
- GR
command: /usr/bin/dvbv5-zap -a 0 -c /usr/local/conf/dvbv5_channels_isdbt.conf -r -P <channel>
dvbDevicePath: /dev/dvb/adapter0/dvr0
decoder: arib-b25-stream-test
isDisabled: false
- name: PX-S1UD_1
types:
- GR
command: /usr/bin/dvbv5-zap -a 1 -c /usr/local/conf/dvbv5_channels_isdbt.conf -r -P <channel>
dvbDevicePath: /dev/dvb/adapter1/dvr0
decoder: arib-b25-stream-test
isDisabled: false
- name: PX-S1UD_2
types:
- GR
command: /usr/bin/dvbv5-zap -a 2 -c /usr/local/conf/dvbv5_channels_isdbt.conf -r -P <channel>
dvbDevicePath: /dev/dvb/adapter2/dvr0
decoder: arib-b25-stream-test
isDisabled: false
- name: PX-S1UD_3
types:
- GR
command: /usr/bin/dvbv5-zap -a 3 -c /usr/local/conf/dvbv5_channels_isdbt.conf -r -P <channel>
dvbDevicePath: /dev/dvb/adapter3/dvr0
decoder: arib-b25-stream-test
isDisabled: false
------------------------------
Mirakurunを再起動します。
sudo mirakurun restart
念のためOSも再起動します。
sudo reboot
再起動後、以下のコマンドでチャンネルスキャンを実施します。
sudo curl -X PUT "http://localhost:40772/api/config/channels/scan"
チャンネルを認識しない場合、時間をおいて何度か繰り返します。
チャンネルスキャン完了後、Mirakurunを再起動し設定を反映させます。
sudo mirakurun restart
以下のコマンドを入力して、チャンネルが正しく設定されているか確認します。
curl http://localhost:40772/api/channels
MariaDBのインストール
EPGStationが利用するデータベースを構築します。
sudo apt install -y mariadb-server
MariaDBの初期設定を行います。
sudo mysql_secure_installation
パスワードは未設定でもOK
EPGStation用のデータベースを作成します。
sudo mysql -u root -p
CREATE DATABASE epgstation CHARACTER SET utf8;
GRANT ALL ON epgstation.* TO epgstation@localhost IDENTIFIED BY 'epgstation';
exit
EPGStationのインストール
外付けHDDの中にEPGStationをインストールします。
sudo apt install git
cd /ExtStorage/REC_HDD01
git clone https://github.com/l3tnun/EPGStation.git
cd EPGStation
npm install
npm audit fix
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
FFmpegのインストール
MP4へのエンコードなどでEPGStationが利用するFFmpegをインストールします。
sudo apt-get install ffmpeg
EPGStationの設定
コマンドを入力し、設定ファイルを開きます。
vi config/config.json
赤枠の部分を追加、変更します。
------------------------------
"dbType": "mysql",
"mysql": {
"host": "localhost",
"port": 3306,
"user": "epgstation",
"password": "epgstation",
"database": "epgstation",
"connectTimeout": 20000,
"connectionLimit": 10
},
"ffmpeg": "/usr/bin/ffmpeg",
"ffprobe": "/usr/bin/ffprobe",
------------------------------
EPGStationが自動起動するよう設定します。
sudo pm2 start dist/server/index.js --name "epgstation"
sudo pm2 save
動作確認
ブラウザで
http://localhost:8888
にアクセスしEPGStationが開けることを確認します。
番組表が空っぽだったり、GRボタンが表示されないときは、
番組表データが取得できていないので、20~30分ほど放置した後に再度アクセスします。