【2019年版】ゼロから始めるlinux録画鯖の書

Chinachu
スポンサーリンク

以前セットアップした録画鯖のHDDの調子がイマイチだったので、それを機にOS起動をHDDからSSDに変えて、OSをUbuntu 18.04.1にしました。

今回の記事は以前の記事をリライトしたものになります。

2020/07/02追記
Mirakurun 3.0からはDockerでの導入が推奨環境となりました。この記事の内容は2019年時点でのものであるため、新規インストールの場合、参考にならない点が多いです。特に、Step3〜Step7のチューナーからMirakurun導入に関しては、この記事の方法では公式の現バージョンと大きく違うため、正常に動きません。新規導入の際は、必ず公式マニュアルを参照して最新の動向をご確認ください。

https://github.com/Chinachu/Mirakurun/blob/master/doc/Platforms.md#docker-on-linux

2019/01/02時点では、正常に動作するルートになっているので、「今から録画サーバーを作るよ」という方に参考になればと思っています。

自分はLinuxのテキストエディタはnano派なので、この記事でテキストエディタのコマンドが出る場合は全てnanoで開くように書いています。
vimやviユーザーの方はお手数ですがnanoのところを打ち直してください。スイマセン

それぞれのツールが更新されて挙動が変わるかもしれませんがあしからず。

Ubuntu 18.04.1とPT3で作る録画サーバー

参考にしたサイト

Gamma Installation V2
Japanese DVR Software. Contribute to Chinachu/Chinachu development by creating an account on GitHub.
GitHub - Chinachu/Mirakurun: A Modern DVR Tuner Server for Japanese TV.
A Modern DVR Tuner Server for Japanese TV. Contribute to Chinachu/Mirakurun development by creating an account on GitHub.
Chinachu γ(ガンマ) インストール手順(Ubuntu・Debian編) | 自分に負けないラボラトリー
Ubuntu・DebianにChinachu γ(ガンマ)をインストールする手順を説明します。 はじめに
Chinachu γをインストールした
最近Chinachuが新しく更新されていっているらしく、導入してみた。 ほとんど前に書いた記事と同じような感じで大丈夫だが、Mirakurunのことなどもあるのでγ対応版としてまとめておく。 カードリーダー $ sudo apt install pcscd libpcsclite-dev libccid pcsc-to...

必要なもの

  • PT3などのlinuxドライバのあるチューナー(今はPT3が生産終了で値上がりしているので新しく買う人はヤフオク等で)
PT3 Rev.A
アースソフト
¥58,410(2024/03/18 19:54時点)
アースソフト PT2
アースソフト
¥14,480(2024/03/19 02:12時点)

※地上波だけなら別のチューナーだけど4,000円くらいで買えます。↓

最近では、さんぱくんっていうPCチューナー(これもなかなか手に入りませんが、在庫があれば7,000円)なら有志のドライバとツールでBS/地上波が使えます(別記事で紹介)。

  • カードリーダー(↓我が家はLinux系での稼働実績の高いこれです)
  • B-CASカード(レコーダー等から流用でOK)
  • そこそこ容量の大きいHDD(当方はOS用のHDDとは別に4TBのHDD使用)
    ※別のHDDを設定する方法は各自調べてください。
  • Corei3以上の性能のあるCPUをもったPC(以前core2duoでやってて結構順調でしたが、突然安定しなくなったりするのでこのぐらいのCPUは必要かと)
  • (任意)OS起動用のHDDやSSD 「うっかり保存用領域を超えてしまった」「OSが不安定になった」などの際にすぐに移行できるのでOS起動は別にすることをオススメします。

このSSDを買ってみました。前がHDDだったりので、改装後は再起動やChinachuとのレスポンスが早くなりました。

手順

Step1 OS導入

Ubuntu18.04.1のServerを公式サイトからダウンロードしてUSBかDVDに焼いてインストールするだけです。

他のサイト等でも紹介されているのでインストール方法は割愛します。

タイムゾーン変更
$ sudo dpkg-reconfigure tzdata

Asia → Tokyoにするだけです。

(任意)ここでSSHを入れておきましょう
$ sudo apt install ssh

これでインストールされます。

(任意)日本語環境にする

必要パッケージのインストール

$ sudo apt install language-pack-ja-base language-pack-ja

システム文字セットの変更

$ sudo localectl set-locale LANG=ja_JP.UTF-8 LANGUAGE="ja_JP:ja"

再起動かログインし直しで反映されます。

SSHではこれだけでいいのですが、サーバー内のコンソールでは日本語部分が豆腐になってしまうようです。

サーバーのコンソールを変えるとかで対処できるらしいですが、特別困っていないのでここでは省略。

(任意)レポジトリを国内サーバーにする

自分は北陸先端科学技術大学院大学のミラーサーバーがよく使われるので、ここのサーバーにしました。

/etc/apt/sources.listの中の「archive.ubuntu.com/ubuntu」を「ftp.jaist.ac.jp/pub/Linux/ubuntu」に変更するだけです。

sed使ってもいいのですが、どのくらい書き換えるのかを見たかったので、nanoで一つずつ変えました。

変更が終わったら

$ sudo apt update

をしましょう。

Step2 必要パッケージのインストール

Chinachu+Mirakurun+他関連ツールならこのくらいで足りると思います。
もしエラーが出たら、それに対応してaptでインストールって感じで対応してください。

$ sudo apt -y install autoconf build-essential cmake curl git-core libssl-dev libtool libboost-all-dev pkg-config yasm
2020/07/02追記
Mirakurun 3.0からはDockerでの導入が推奨環境となりました。この記事の内容は2019年時点でのものであるため、新規インストールの場合、参考にならない点が多いです。特に、Step3〜Step7のチューナーからMirakurun導入に関しては、この記事の方法では公式の現バージョンと大きく違うため、正常に動きません。新規導入の際は、必ず公式マニュアルを参照して最新の動向をご確認ください。

https://github.com/Chinachu/Mirakurun/blob/master/doc/Platforms.md#docker-on-linux

Step3 カードリーダー用ドライバをインストール(Mirakurun 3.0からは導入しては✕)

$ sudo apt -y install pcscd pcsc-tools libpcsclite-dev
$ pcsc_scan

ここでJapanese Chijou Digital B-CAS Card (pay TV)と出ればOKです。
このコマンドは自動で終了しないのでCtrl+C で抜けます。

Step4 PT3ドライバ(チューナードライバ)をインストール(Mirakurun 3.0からは導入しては✕)

一応カーネル標準ドライバも試したのですが、何故かBSプレミアムが受信できないってのがあったので、PT3に関しては別途インストールした方が信頼性が高いと思います。

$ mkdir chinachu
$ cd chinachu
$ git clone https://github.com/m-tsudo/pt3.git
$ cd pt3
$ make
$ sudo make install
$ sudo apt install dkms
$ sudo bash ./dkms.install

カーネル標準ドライバと競合するので標準ドライバをブラックリストにする

$ sudo nano /etc/modprobe.d/blacklist.conf

一番下の行にblacklist earth-pt3と追記
最後に録画サーバを再起動して終了。

$ sudo reboot

再起動後、ドライバモジュールがロードされているかを確認。

$ lsmod | grep pt3

pt3_drvのような表示があればOK

Step5 暗号化解除用arib25ライブラリのインストール

cmakeの時の「.」はタイポではなく、そういうコマンドです。

$ cd chinachu
$ git clone https://github.com/stz2012/libarib25.git
$ cd libarib25
$ cmake .
$ make
$ sudo make install

Step6 録画コマンドソフトrecpt1のインストール

今まではSTZ版のオリジナル版を使ってきましたが、epgdatacapbonさんのフォークがしたものが色々と改良されているようなので、今回はそちらを利用します。

$ git clone https://github.com/epgdatacapbon/recpt1.git
$ cd recpt1/recpt1
$ ./autogen.sh
$ ./configure --enable-b25
$ make
$ sudo make install

Step7 Mirakurunのインストール

Node.jsの奇数バージョンは不安定らしいので、最新が奇数バージョンの時は一つ前のバージョンを入れたほうがいいようです。ChinachuのWikiによると、通常環境における偶数バージョンの利用は Node.js 公式でも推奨されているようです。

$ curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
$ sudo apt install -y nodejs
$ sudo npm install pm2 -g
$ sudo pm2 startup
$ sudo npm install mirakurun -g --unsafe --production
$ sudo npm install arib-b25-stream-test -g --unsafe
設定
$ sudo EDITOR=nano mirakurun config {server|tuners|channels}

server設定はデフォルトでいいと思いますが、tuners、channelsはチューナー、地域に合わせて変更する必要があります。
PT3の時は下記のような感じです。具体的にはPT3の設定は最初から書いてあるのでisDisabled: trueisDisabled: falseとすれば使うことができます。
※最初に紹介したさんぱくんの設定は別記事で紹介します。

$ sudo EDITOR=nano mirakurun config tuners
- name: PT3-S1
types:
- BS
- CS
command: recpt1 --device /dev/pt3video0 <channel> - -
decoder: arib-b25-stream-test
isDisabled: false

- name: PT3-S2
types:
- BS
- CS
command: recpt1 --device /dev/pt3video1 <channel> - -
decoder: arib-b25-stream-test
isDisabled: false

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

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

チューナーの設定が終わったら

$ sudo mirakurun restart

でmirakurunを再起動します。

続いてチャンネル設定ですが、Mirakurunでは地上波のみ自動チャンネル設定に対応しているので、こちらを利用します。

下記コマンドを入力すればチャンネル設定のファイルに自動で書き込まれます。
※夜中の時間帯で実行すると一部チャンネルが放送休止している場合があり、正しく設定できない可能性があります。

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

BS・CSのチャンネル設定は手動ですが設定は全国どこでも同じなので、自負ラボさんのサンプルデータを利用して設定すると楽だと思います。

チャンネル設定は

$ sudo EDITOR=nano mirakurun config channels

で設定できます。

設定が終わったら

$ sudo mirakurun restart

でmirakurunを再起動します。

 (任意)ログローテーション設定

自負ラボさんの方で、紹介されていたことなのですがMirakurunは24時間動いていることもあり、ログが大量に履かれます。

”pm2-logrotate”でログの世代管理が可能とのことなので、導入しておきます。

$ sudo pm2 install pm2-logrotate

設定は下記の通り設定すれば1日ごとに圧縮して、一週間保存されるようです。

$ sudo nano /etc/logrotate.d/mirakurun
/usr/local/var/log/mirakurun.stdout.log
/usr/local/var/log/mirakurun.stderr.log
/{
daily
compress
rotate 7
missingok
notifempty
}

Step8 録画予約管理のChinachuの導入

ようやくメインとなるChinachuのインストールです。chinachuはインストーラーが非常によく出来ているのでインストールも対話的にできるので、かなり楽です。

$ sudo apt install build-essential curl git-core vainfo
$ cd ../
$ git clone git://github.com/Chinachu/Chinachu.git
$ cd Chinachu/
$ ./chinachu installer
Chinachu Installer Menu:
[!] These are installed under all /home/chinachu/chinachu/...
[!] Recommend the Auto installation.
1) Auto (full) 3) Node.js Environment 5) ffmpeg
2) submodule 4) Node.js Modules
what do you install? > 1

初回は1“Auto (full)”を選択します。

コンフィグファイルやルールファイルの作成
$ cp config.sample.json config.json

空のルール設定ファイルを作成

$ echo [] > rules.json
動作確認
$ ./chinachu service wui execute

ここで、SSHや、プロンプトを開いたままブラウザでhttp://[サーバーIP]:20772でアクセス可能なことを確認してください。
問題なく起動できたらCtrl+\で終了
続いてEPG取得テスト

$ ./chinachu update

ここでうまくいかない場合は恐らく Mirakurun に接続できていないようです。
うまくいかない場合はmirakurunのログシステムsudo mirakurun log server等でエラーを確認してください。

サービス開始・スタートアップ登録

せっかくやり変えたので、以前のサービス追加方式をやめて、pm2での管理にすることにします。
pm2とサービスでの多重設定をするとChinachuが不具合を起こすので、気をつけてください。

$ sudo pm2 start processes.json
$ sudo pm2 save

各種ツールの再起動やアップデート方法

ChinachuやMirakurunなど再起動やアップデート方法をまとめてみました。

Chinachu

Chinachuはwui(Web UI)とoperaterが2つで一つみたいな感じです。
operaterだけでも録画はできますが、wuiないと管理できないですしね。

  • 再起動、起動、停止
    起動
    $ sudo pm2 start chinachu-wui
    $ sudo pm2 start chinachu-operator
    
    # 停止
    $ sudo pm2 stop chinachu-wui
    $ sudo pm2 stop chinachu-operator
    
    # 再起動
    $ sudo pm2 restart chinachu-wui
    $ sudo pm2 restart chinachu-operator
  • アップデート
    $ cd chinachu/Chinachu
    $ ./chinachu updater
    1(auto)を選ぶ
    

Mirakurun

  • 再起動、起動、停止
    起動
    $ sudo mirakurun start
    
    # 停止
    $ sudo mirakurun stop
    
    # 再起動
    $ sudo mirakurun restart
  • アップデート
    $ sudo npm i mirakurun -g --unsafe --production
    

おまけ(設定ファイル)

起動が完了したらブラウザからChinachuトップの右上にある設定で設定をしましょう。JSONフォーマットのケツカンマは何度も悩みました。

このサイトで文法チェックをしてくれるようなので、文法チェックしながら設定しましょう。

JSON Online Validator and Formatter - JSON Lint
JSONLint is the free online validator, json formatter, and json beautifier tool for JSON, a lightweight data-interchange format. You can format json, validate j...

ちなみに自分の設定は下記の通りです。

[wpex more=”クリックで展開” less=”▼ クリックで閉じる”]
 {
"uid": "[Ubuntuのユーザー名]",
"gid": "video",
"mirakurunPath": "http+unix://%2Fvar%2Frun%2Fmirakurun.sock/",
"recordedDir" : "./recorded/",
"vaapiEnabled": false,
"vaapiDevice": "/dev/dri/renderD128",

"wuiUsers": [
"chinachu:yoshikawa"
],
"wuiAllowCountries": ["JP"],
"wuiPort": null,
"wuiHost": "0.0.0.0",
"wuiTlsKeyPath": null,
"wuiTlsCertPath": null,
"wuiTlsRequestCert": false,
"wuiTlsRejectUnauthorized": true,
"wuiTlsCaPath": null,
"wuiOpenServer": true,
"wuiOpenPort": 20772,
"wuiXFF": false,
"wuiDLNAServerEnabled": false,
"wuiMdnsAdvertisement": true, "recordedFormat": "<date:yymmddHHMM>_<title>_<channel-name>.ts",
"storageLowSpaceThresholdMB": 3000,
"storageLowSpaceAction": "remove",
"storageLowSpaceNotifyTo": null,
"storageLowSpaceCommand": ""
}
[/wpex]

あとがき

Chinachuの最近の更新から結構日が経ち、Chinachuプロジェクトはあまり活発的ではなくなっています。最近だと後釜のEPGStaionの方が活発的ですね。
Mirakurunの方はバグや致命的な問題は対応してくれているので、ありがたく使わせて頂いています。

いつか当初予定されていたChinachu Airが配信されないかなーとか思ってたりしています。

<<2019/01/03追記>>

Chinachuプロジェクトが息を巻き返すかも…?

Chinachuプロジェクトのリーダーとも言える”れいさ”さんが年明けそうそうに”録画のやつ”に関する意味深なツイートをしていました。

そして…

長らく更新の止まっていたChinachu γにアップデートが来ました!

目立った新機能があるわけではありませんが、バグ修正が入ったこともありより使いやすくなりました。

個人的にはChinachuはアメリカのAmazonで先日発売されたFire TV Reacastが”れいささん”の思い描くChinachu Airの目指している姿なのかなとか思いました。

日本ではアメリカのように全てが有料放送ではない関係で利権問題だとか、大変だとは思いますが「物理的なChinachu Airもいつかは実現したらいいな」とか思ってます。(クラウドファンディングとかあれば普通にお金落としたい)

今後とも当サイト並びにTill0196はChinachuプロジェクトを応援しています。

Amazon検索
Chinachu
Till0196をフォローする
Till0196のぼーびろく

コメント