目次
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にこんなアプリがあるので、こちらからアクセスしてみてもいい。