目次

FreeBSDでChinachu γ(gamma)を動かす

2017/05/22
FreeBSD 11.0 RELEASEで無事導入までできたのでその際のメモ書き。

Chinachu γ(gamma)って何?

Most Lovely DVR Software in Japan. https://chinachu.moe
https://github.com/Chinachu/Chinachu

Chinachu γは実験的な録画サーバシステム。Mirakurunの利用が前提となっている。

MirakurunのAPIを利用するシステムで、ブラウザでのストリーミング視聴、番組表からの録画・録画予約、ルールベースでの録画、録画中の番組もストリーミング視聴可、といった基本的な事は可能。 お手軽に使うならこちらが楽かもしれない。Mirakurunつなががりで導入を試してみる事にした。

前提

ここの説明ではMirakurunが稼働していることが前提。

また、サムネイルの生成やストリーミングで使用するので、必要なオプション付きの ffmpeg をPortsから導入しておく。
以下はうちの環境での設定。

インストール

Mirakurun導入時にだいたい前提になる環境はそろっていると思う。

Chinachu γのインストールの説明は https://github.com/Chinachu/Chinachu/wiki/Gamma-Installation-V2 にある。

以降はFreeBSD上で導入する際の色々。

実行ユーザの定義

Chinachuはrootで実行できないので、ユーザ Chinachu を定義する。

# adduser
Username: Chinachu
Full name: Chinachu
Uid (Leave empty for default):
Login group [Chinachu]:
Login group is Chinachu. Invite Chinachu into other groups? []:
Login class [default]:
Shell (sh csh tcsh ksh git-shell bash rbash nologin) [sh]:
Home directory [/home/Chinachu]:
Home directory permissions (Leave empty for default):
Use password-based authentication? [yes]:
Use an empty password? (yes/no) [no]:
Use a random password? (yes/no) [no]: yes
Lock out the account after creation? [no]:
Username   : Chinachu
Password   : <random>
Full Name  : Chinachu
Uid        : 1008
Class      :
Groups     : Chinachu
Home       : /home/Chinachu
Home Mode  :
Shell      : /bin/sh
Locked     : no
OK? (yes/no): yes
adduser: INFO: Successfully added (Chinachu) to the user database.
adduser: INFO: Password for (Chinachu) is: IAUn2AAjnWjha
Add another user? (yes/no): no
Goodbye!
#

Mirakurun のリポジトリのパーミッション変更

Mirakurunのリポジトリのパーミッションにユーザ chinachu が読み書きできるようにしておく。

# chmod -R guo+rw /home/mirakurun/Mirakurun

Chinachu γ の取得

今回はユーザ Chinachu を作ってホームディレクトリ下にgitでリポジトリをクローンしている。

# su -l chinachu
$ git clone git://github.com/kanreisa/Chinachu.git
$ cd Chinachu

FreeBSD対応

npm をChinachuローカルにインストール

Chinachuのローカルで使うnpmを先にインストールする。 これをやっておかないと、Chinachuのインストール時にnpmが何故かサポートされていないOS云々でインストールができない。

$ npm install npm

Mirakurun をChinachuローカルにインストール

Chinachuの依存モジュールににMirakurunが登録されているので、ネットワーク越しではなく、FreeBSD対応済みのリポジトリからインストールする。

$ npm install /home/mirakurun/Mirakurun

Chinachu γ のインストールスクリプト実行

メニューの Auto を選択する。あとはスクリプトから必要なものが取得・インストールされていく。 時間がかかるのでお茶でも飲んで待て。

$ ./chinachu installer
grep: /proc/cpuinfo: No such file or directory
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

Chinachu γ のffmpenをシンボリックリンクに置き換える

ディレクトリ /home/chinachu/Chinachu/usr/bin には、インストールスクリプトによりビルドされたffmpegが配置されているが、これはLinux用バイナリなので、FreeBSDでは動作しない。 Portsでインストールしたffmpegへのシンボリックリンクで置き換えする。

$ cd usr/bin
$ mv ffmpeg ffmpeg.org
$ mv ffprobe ffprobe.org
$ mv ffserver ffserver.org
$ ln -s /usr/local/bin/ffmpeg ffmpeg
$ ln -s /usr/local/bin/ffprobe ffprobe
$ ln -s /usr/local/bin/ffserver ffserver

Chinachu γ の設定

config.sample.json をコピーし、このコピーを変更する。

$ cd /home/chinachu/Chinachu
$ cp config.sample.json config.json

うちの設定は以下の通り。

config.json
{
  "uid": "chinachu",
  "gid": "chinachu",
  "mirakurunPath": "http+unix://%2Fvar%2Frun%2Fmirakurun.sock/",
 
  "recordedDir" : "/home/chinachu/recorded/",
 
  "vaapiEnabled": false,
  "vaapiDevice": "/dev/dri/renderD128",
 
  "excludeServices": [
    3273701416,
    3232728088,
    3273901183,
    3274201456,
    3239123992,
    3239123993,
    3273601408
  ],
 
  "serviceOrder": [
    3273601024,
    3273601025,
    3273701032,
    3273701033,
    3273701034
  ],
 
  "wuiUsers": [
    "chinachu:IAUn2AAjnWjha"
  ],
  "wuiAllowCountries": ["JP"],
 
  "wuiPort": null,
  "wuiHost": "10.0.0.100",
  "wuiTlsKeyPath": null,
  "wuiTlsCertPath": null,
  "wuiTlsRequestCert": false,
  "wuiTlsRejectUnauthorized": true,
  "wuiTlsCaPath": null,
  "wuiOpenServer": true,
  "wuiOpenPort": 20772,
  "wuiXFF": false,
  "wuiDLNAServerEnabled": false,
  "wuiMdnsAdvertisement": true,
 
  "recordedFormat": "[<date:yymmdd-HHMM>][<type><channel>][<channel-name>]<title>.m2ts",
  "storageLowSpaceThresholdMB": 3000,
  "storageLowSpaceAction": "remove",
  "storageLowSpaceNotifyTo": null,
  "storageLowSpaceCommand": ""
}

10.0.0.100:20772 でChinachuをアクセスする。 “recordedDir”で録画ファイルの格納先、“wuiUsers”でAndriodのアプリからアクセスした際の認証を行わせる。

次に録画のルール定義。初期化(なにもない)状態を作成。

$ echo [] > rules.json

rule.sample.jsonがあるので、これをコピーしても構わない…のかな?

rule.sample.json
[
    {
      "types": ["GR"],
      "categories": ["anime"],
      "ignore_channels": ["26", "27"],
      "hour": {
        "start": 23,
        "end": 4
      },
      "duration": {
        "min": 600,
        "max": 10801
      },
      "ignore_titles": [
        "非公認戦隊アキバレンジャー", "戦国コレクション", "AKB0048"
      ],
      "ignore_flags": [
        "再"
      ]
    },
    {
      "reserve_titles": ["笑点"]
    },
    {
      "types": ["CS"],
      "channels": ["CS16"],
      "categories": ["anime"],
      "sid": "333",
      "duration": {
        "min": 600,
        "max": 10801
      }
    }
]

Chinachu起動

$ pm2 start processes.json
$ pm2 save

Chinachu アクセス

http://10.0.0.100:2007 をブラウザでアクセスすればダッシュボードが表示される。

Androidにこんなアプリがあるので、こちらからアクセスしてみてもいい。