*

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

  最終更新日:2017/06/06

Pocket

Mirakurunインストール

スポンサーリンク

Node.jsのインストール

 MirakurunはNode.jsのバージョン6.5以上の偶数バージョン(2017年6月5日時点)が必要になります(現在の対応バージョンはMirakurunのReadmeで確認)。

 念のため補足しておくとReadmeのNode.jsの要求バージョンは下記のように書いてあります。

Requirements / Supported Platforms
・Node.js ^6.5.x || ~8

 これは、”ver6.5.x以上でありver6の最新版以下”または”ver8.0.0以上”の意味になります(参考:The semantic versioner for npm)。分かりやすく言い換えると「バージョン6.5以上の偶数バージョン」です。率直に言ってもう少し分かりやすい表記にして欲しいところです。これは、npmのプログラミング的表記なので……。

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

 なお、バージョン8で試したところ動作が不安定だったので、当面はバージョン6で良いと思います。Chinachu公式でもまだバージョン6のインストール手順になっているため、本記事でもそれに習います。

Ubuntuの場合

$ sudo apt-get install -y nodejs npm
$ sudo npm cache clean
$ sudo npm install n -g
$ sudo n 6.10.3
$ sudo apt-get purge -y nodejs npm
$ sudo apt-get -y autoremove
$ node -v
  v6.10.3が表示されればOK

 こちらの手順は、seibe様の「Ubuntuに最新のNode.jsを難なくインストールする」の記事を参考にさせて頂きました。

Debianの場合

$ su -
# apt-get install -y nodejs npm
# npm cache clean
# npm install n -g
# n 6.10.3
# apt-get purge -y nodejs npm
# apt-get -y autoremove

一旦ログアウトし、ログインし直す

$ node -v
  v6.10.3が表示されればOK

CentOSの場合

$ su -
# curl -sL https://rpm.nodesource.com/setup_6.x | bash -
# yum update
# yum -y install nodejs
# node -v
  v6.10.3 の様に表示されればOK

 おそらく、UbuntuやDebianと同様にnpmのnパッケージをインストール後、yumのnodejsパッケージをアップデート除外する方法でも可能かと思います。しかし、確証がないため、CentOSのみ公式サイトの手順を紹介しました。

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、PT2、TSB-6922の3種類の内容が書かれています。長いので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

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

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

チャンネル設定

$ sudo mirakurun config channels

 デフォルトのチャンネル設定では特にCSの設定がほとんど書かれていないので、サンプルを用意しました。こちらからダウンロードして下さい。東京スカイツリーを使用する関東の地デジ、BS/CSの全局を網羅しています。

- name: WOWOWプライム
  type: BS
  channel: BS03_0
  serviceId: 191
  isDisabled: true <-- ここをfalseにすれば有効になる

 サンプルでは有料チャンネルを無効にしています(上記例の5行目”isDisabled: true”がそれ)。ここを局ごとに”false”にすれば有効になります。

 地デジ設定は現在住んでいる地域に合わせて変更して下さい(参考:マスプロの地上デジタル放送 チャンネル一覧表

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

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

動作確認

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

$ sudo mirakurun restart

 しばらく待てばMirakurunのEPG情報が更新されます(10分以内)。チャンネル設定で設定した局の情報が受信できているかを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コマンドの応答が返って来ません。更にEPG更新が完了しているか確認します。

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

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

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

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

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

 EPG更新完了を確認したら、続いて録画確認を行います。

$ 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コマンドで録画できない
 - アンテナレベルが低い