*

Mirakurunのインストール手順(Ubuntu・Debian・CentOS)

  最終更新日:2019/02/10

Mirakurunインストール

スポンサーリンク

Node.jsのインストール

 Mirakurunを動かすにはNode.jsが必要になります。Node.jsのバージョンはMirakuruのバージョンアップによって変わってきます。現在要求されているNode.jsのバージョンはMirakurunのプラットフォームサポートの注意事項で確認してください

 Mirakurunの注意事項を見るとNode.jsの2019年2月10日現在の要求バージョンは下記のようになっています。

Node.js ^8.9.4 < 9 || ^10.11.0 < 11 needed.

 npmのバージョン表記は分かりにくいため、簡単にまとめておきます。

表記 意味
^1.2.3 1.2.3以上2.0.0未満
~1.2.3 1.2.3以上1.3.0未満
^6.5.x || ~8 6.5.0以上7.0.0未満または
8.0.0以上9.0.0未満
^8.9.4 < 9 8.9.4以上9.0.0未満

 つまり、現在要求されているNode.jsのバージョンは、8.9.4以上9.0.0未満または10.11.0以上11未満がと言うことが分かります。

 バージョン表記について詳しく知りたい人は”The semantic versioner for npm”をご参照下さい。

 Node.jsは、現状どのディストリビューションでも、要求バージョンより古いバージョンのパッケージしか提供されていないようです。そこで、別の手順で最新版をインストールします。

 以降の手順は、公式サイトの手順に則ったものです。

 以下の説明中の”setup_10.x”の箇所は、この節の冒頭で説明した要求されるNode.jsのバージョンに従います。バージョン12.0以上が要求されれば”setup_12.x”になります。

Ubuntuの場合

$ curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
$ sudo apt-get install nodejs
$ node -v
 表示例)
  v10.15.1

Debianの場合

$ su -
# curl -sL https://deb.nodesource.com/setup_10.x | bash -
# apt-get install nodejs
# node -v
 表示例)
  v10.15.1

CentOSの場合

$ su -
# curl -sL https://rpm.nodesource.com/setup_10.x | bash -
# yum update
# yum install nodejs
# node -v
 表示例)
  v10.15.1

Node.jsのバージョンアップ方法

 例えば、Node.jsのバージョン”v8.11.3”から最新の”v8.15.0”にマイナーバージョンアップデートしたい場合、通常のパッケージアップデートを行って下さい(`apt-get upgrade`または`yum update`)。

 次の例として”v8.15.0”から最新の”v10.15.1”にメジャーバージョンバージョンアップしたい場合、以下のように最初に紹介したインストール手順を実行後に通常のパッケージアップデートを行って下さい。

Ubuntuの場合)
$ curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
$ sudo apt-get upgrade

Debianの場合)
$ su -
# curl -sL https://deb.nodesource.com/setup_10.x | bash -
# apt-get upgrade

CentOSの場合) ※微妙に違うので注意
$ su -
# curl -sL https://rpm.nodesource.com/setup_10.x | bash -
# yum clean all
# yum update

Mirakurunのインストール

インストール

 Mirakurunと必要なパッケージをインストールします。必ずrootユーザーで実行して下さい。Ubuntu基準で記載しているため、sudoを使用しない環境では先頭の”sudo”を除いて実行します。

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

 この時点でMirakurunは既に動いています。以下のコマンドを実行して、Mirakurunのstatusが”online”なら正常起動しています。

$ sudo pm2 status

表示例) ※右端一部省略
│ App name          │ id │ mode │ pid   │ status │ 
├───────────────────┼────┼──────┼───────┼────────┼ 
│ mirakurun-server  │ 0  │ fork │ 4025  │ online │
└───────────────────┼────┼──────┼───────┼────────┼ 

設定

$ sudo mirakurun config 設定名

 Mirakurunの設定変更は上記の様なコマンドで行います。これは、”/usr/local/etc/mirakurun/”ディレクトリの下の設定ファイルをviエディタで開いているだけなので、直接編集することも可能です。設定ファイルの文字コードはUTF-8、改行コードはLFであれば問題ないようです。

$ sudo EDITOR=emacs mirakurun config 設定名

 なお、上記の様にEDITOR変数を指定すれば、vi以外のエディタも使用可能です。以降で個別の設定内容について説明します。

 設定に関して注意事項があります。本記事末尾のコメント欄をご覧頂ければ分かりますが、「動かないけど原因が分からない」とよく問合せを受けます。エディタで編集するため、全角スペースなどの余計な文字が混じって動作不良が起こることがあります。Linux上で確認することが大変な場合、Windows PC上の多機能なエディタなどで確認をお願いします。

サーバ機能設定

$ sudo mirakurun config server

 下記が設定内容です。デフォルトのままで良いと思いますが、一応紹介しておきます。

# logLevel: <number>
logLevel: 2

# path: <string>
path: /var/run/mirakurun.sock

# port: <number>
# You can change this if port conflicted.
# Don't expose this port on the internet, not even with NAPT.
# Use this in LAN or VPN.
# `~` to disable TCP port listening.
port: 40772

 必要であれば12行目のポート番号を変更します。

チューナー設定

$ sudo mirakurun config tuners

 デフォルト設定はPT3、TBS6922の2種類の内容が書かれています。長いのでPT3の設定例のみ紹介します。

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

- name: PT3-S2
  types:
    - BS
    - CS
  command: recpt1 --device /dev/pt3video1 --lnb 15 <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

 PLEX社のTVチューナーを使用している場合、以下のリンク先の記事をご参照下さい。使用しているドライバにより異なります。

 デフォルト設定は全てのチューナーが無効になっているので、使用するチューナーだけ有効にします。PT3を使用する場合は、7、15、22、29行目を”isDisabled: false”にすれば有効になります。PT3やPT2を2枚以上挿している場合、デフォルトの設定内容に合わせて設定を追加します。

 なお、recpt1コマンドオプションの”–lnb 15”はBS/CSチューナーの15V給電なので、今まで指定せずに問題なく動作している場合は削除して良いです。

 設定が全て完了したらMirakurunを再起動します。

$ sudo mirakurun restart

チャンネル設定

 Mirakurunのチャンネル設定は少々面倒なので、手前みそではありますが、チャンネル設定用のPerlスクリプトを当ブログで作りました。

 上記記事を参考に地デジ、BS、CSのチャンネル設定を行って下さい。ただし、地デジしか視聴しない場合、Mirakurunの機能を使ってチャンネル設定を行ったほうが良いです。

 Mirakurun ver2.1から地デジのみ、下記コマンドでチャンネルスキャンできるようになっています。なお、1回の実行に10分以上かかるので、気長に待つ必要があります。

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

 チャンネルスキャンに成功していれば、チャンネル設定を確認すると地デジの設定が反映されていることが分かります。

$ sudo mirakurun config channels

 地デジのチャンネル設定については以下のページの情報が参考になります。

動作確認

 ここで再びMirakurunを再起動します。

$ sudo mirakurun restart

 しばらく待てばMirakurunのチャンネル情報が更新されます。チャンネル設定した局の情報が受信できているかをrivarunコマンドで確認します(見づらいのでsedによる置換で改行してます)。

$ rivarun --list | sed 's/},/},\n/g'

実行例)
--------------------------------------------------
status: 200
headers: {"server":"Mirakurun/1.3.2","content-type":"application/json; charset=utf-8","date":"Wed, 25 May 2016 21:24:27 GMT","connection":"close","content-length":"12818"}
[{"type":"GR","channel":"27","name":"NHK総合・東京","services":[{"id":3273601024,"serviceId":1024,"networkId":32736,"name":"NHK総合1・東京"},
{"id":3273601025,"serviceId":1025,"networkId":32736,"name":"NHK総合2・東京"},
{"id":3273601408,"serviceId":1408,"networkId":32736,"name":"NHK携帯G・東京"}]},
{"type":"GR","channel":"26","name":"NHK Eテレ東京","services":[{"id":3273701032,"serviceId":1032,"networkId":32737,"name":"NHKEテレ1東京"},
{"id":3273701033,"serviceId":1033,"networkId":32737,"name":"NHKEテレ2東京"},
{"id":3273701034,"serviceId":1034,"networkId":32737,"name":"NHKEテレ3東京"},
{"id":3273701416,"serviceId":1416,"networkId":32737,"name":"NHK携帯2"}]},

(以降略)

 受信が出来ていない場合、このrivarunコマンドの応答が返って来ません。更にチャンネル情報の更新が完了しているか確認します。

$ rivarun --list | sed 's/},/},\n/g'  | grep -v serviceId

 以下の様にservicesが空欄([]の中身が空っぽ)の行が表示されると
 更新できていない放送局があります。

   {"type":"BS","channel":"BS07_2","name":"BSアニマックス","services":[]},
   {"type":"BS","channel":"BS07_3","name":"ディズニー・チャンネル","services":[]},

 更新が完了していれば、下記のような内容だけ表示されます。

  headers: {"server":"Mirakurun/2.5.5","content-type":"application/json; 以下略}

 チャンネル情報の更新完了を確認したら、続いて録画確認を行います。

$ rivarun --b25 --sid 1024 --ch GR/27 15 test.ts

 上記は関東でNHK総合1を15秒間録画するコマンドです。成功すれば”status: 200”と表示され録画が開始されます。400や404が表示されると設定か引数に問題があります。なお、この番号はChinachu REST APIのエラーコードと同じものと思われます。

 コマンドオプションについて説明します。”–sid”はサービスIDです。これは、先程実行した”rivarun –list”コマンドの実行結果から分かります。「”serviceId”:1024」の箇所です。

 ”–ch”はチャンネル番号です。これは、”sudo mirakurun config channels”で設定したチャンネル番号です。同じく”rivarun –list”コマンドでも確認できます。

 コマンドオプションの詳細については”rivarun –help”を実行して確認して下さい。

 録画ファイルの”test.ts”はVLC media playerなどで再生確認して下さい。

 先ほどの確認はMirakuruにUnixソケットで接続した時の確認になります。同様にTCP接続した時の確認を行います。

$ rivarun --b25 --mirakurun localhost:40772 --sid 1024 --ch GR/27 15 test2.ts

 ”40772”の箇所はサーバ機能設定で指定したポート番号です(デフォルトは40772)。これが成功すれば、外部からrivarunコマンドで録画することが出来ます。

 最後にBSとCSの録画例についても紹介します。

# NHK BS1
  $ rivarun --b25 --sid 101 --ch BS/BS15_0 15 test3.ts

# ショップチャンネル
  $ rivarun --b25 --sid 55 --ch CS/CS8 15 test4.ts

ログローテーション設定

 Mirakurunはログ出力が多いので、ログファイルが巨大になります。”pm2-logrotate”をインストールして世代管理するようにします。

# sudo pm2 install pm2-logrotate

続いて設定ファイルを作成

# sudo vi /etc/logrotate.d/mirakurun

 設定ファイルの中身は以下をコピペして下さい(ダブルクリックで選択状態にしてCtrl+Cでコピー可)。毎日ログを圧縮して1週間分保存する設定です。

/usr/local/var/log/mirakurun.stdout.log
/usr/local/var/log/mirakurun.stderr.log
/{
  daily
  compress
  rotate 7
  missingok
  notifempty
}

アップデート

 Mirakurunをアップデートする場合、次のコマンドを実行して下さい。スクリプトにしておくと便利です。

$ sudo mirakurun stop
$ sudo npm update rivarun -g
$ sudo npm install mirakurun@latest -g --unsafe --production
$ sudo mirakurun start

Chinachu γ(ガンマ)でMirakurunを使う

 Chinachu γではMirakurunを使用することが前提になっています。以下の記事でChinachu γのインストール手順を説明していますので、続きはそちらをご参照下さい。

Mirakurunが正常に動かない場合

 ここまでの説明通りに実行したのにMirakurunが正常に動かない場合、以下のことを確認して下さい。

・記事の手順を省略して実行していませんか?

$ history

 ヒストリーコマンドで今までの実行内容を表示します。
 インストール漏れなど無いか今一度確認して下さい。

・Mirakurunの状態の確認

$ sudo mirakurun status

 正常なら’status’の箇所が’online’になっているはずです。

・Unixソケットファイルが存在するかの確認

$ ls -l /var/run/mirakurun.sock

 正常なら以下の様に誰でもアクセス可能な状態で存在しています。
 srwxrwxrwx 1 root root 0 6月 19 09:01 /var/run/mirakurun.sock=

・ログ確認

$ sudo mirakurun log server

 上記コマンドだと限定的な範囲しか見れないので、
 より詳細を見たい場合、
 /usr/local/var/log/ にあるログファイルを直接参照して下さい。

$ ls -lrt /usr/local/var/log/

 上記コマンドで古いファイル順に一覧表示されます。
 一番下の新しいログファイルから確認しましょう。

・設定ファイルの確認
 サーバ機能設定は、行数が少ないので問題が起こる可能性は低いです。

 チューナー設定は、コマンド名やデバイス名の書き間違いなどを確認しましょう。

 チャンネル設定は、余計な文字が混じっている可能性があります。
 ファイル内のチャンネル数を減らし、映らない原因を探りましょう。
 例えば、BSが映らないなら、NHK BS1のみ設定してみるなどです。

・それ以外の問題
 - 録画チューナーの設定に問題がある(ドライバ、BCAS等)
 - recpt1コマンドで録画できない
 - アンテナレベルが低い

Mirakurunのアンインストール手順

 Mirakurunをアンインストールするには、以下を実行します。

sudo npm uninstall mirakurun -g --unsafe --priduction
sudo npm uninstall rivarun -g
sudo npm uninstall arib-b25-stream-test -g --unsafe