Windows10 の Hyper-V の中に Chinachu をセットアップしてみました。
基本的には CentOS 7 (1708) へ Chinachu のインストール手順と変わらないです。以前に構築した Mirakurun の環境と接続するため、実行環境が別、 OS も別、という条件下になります。
同一の OS に Mirakurun, Chinachu をインストールして使う場合には今回のような手順にはならない点には注意してください
仮想マシンの準備
Hyper-V の第2世代の仮想マシンとして作成しました。以下のような構成にしています。ポイントになるのはネットワークアクセスが必要なので、仮想スイッチを作成、外に出られるようにしておくことです。
仮想スイッチマネージャでインターネットへアクセスできるように仮想スイッチを作成します。
種類は “外部ネットワーク” を選択して、実際に搭載しているネットワークアダプタをコンボボックスで選べばよいと思います。複数のネットワークアダプタを搭載している場合には、ここでインターネットに出られるアダプタを選択する必要があります。ここで作成した仮想スイッチを使うように仮想マシンを設定します。
続いて CentOS は 最小インストールで構築したためいくつかのパッケージが不足している状態です。
そのため以下のパッケージをインストールしておきます。
# yum install -y wget git python gcc gcc-c++ patch # yum update
定番の作業ではありますが、 SELinux も無効にしておきます。
/etc/sysconfig/selinux ファイルを編集して、 SELINUX=disabled としておきます。その後再起動を行います。
時刻合わせのために chrony のセットアップをしておきます。
yum install -y chrony
/etc/chrony.conf を開いて、 server の項目を変更しておきます。
server ntp1.jst.mfeed.ad.jp iburst
この部分は、各自の NTP サーバーとして近いところを記述しておくのが理想的です。
Chinachu の準備
適当なディレクトリで Chinachu を取得、インストールを実行します。
# useradd chinachu # su - chinachu $ git clone -b gamma https://github.com/kanreisa/Chinachu.git ~/chinachu $ $ cd ~/chinachu $ ./chinachu installer
ここでは “1” を選択して、 Auto モードでインストールします。
エラーがなく処理が完了していれば問題ないです。途中でエラーがあっても Done で終了しているケースがあるのでログは軽く目を通すのがオススメです。特に、 node-gpy rebuild あたりでエラーになっていても進行してしまい、動作チェックの時に発覚とかありますので・・・。
設定ファイルの準備
録画予約用の空ファイルを以下のようにして作成します。
$ echo "[]" > rules.json
設定ファイルをコピーして編集します。
$ cp config.sample.json config.json $ vi config.json
設定ファイルは以下のように編集します。
mirakurun が別の環境で動いているため、 mirakurunPath の指定がポイントです。
各設定項目の説明は、本家のページを確認するのが確実です。1度目を通しておくことをオススメします。
動作確認
$ ./chinachu service operator execute
以下のように動いていれば問題ないので、 CTRL+C にて実行を止めます。
$ ./chinachu update
以下のようになっていれば問題ありません。
サービス起動設定
Chinachu は ubuntu を対象に作成されているため、 CentOS 用の systemd 対応がありません。幸い対応パッチを作成して公開してくれている方がいるので、そちらを使用させてもらいます。
$ wget https://www.jifu-labo.net/files/systemd.patch.gz $ zcat systemd.patch.gz | patch
ここで以下のように表示されていれば正常にパッチが適用されています。
続いて以下のようにして、 systemd へ登録作業をしていきます。
$ ./chinachu service operator unitfile > /tmp/chinachu-operator.service $ ./chinachu service wui unitfile > /tmp/chinachu-wui.service (Ctrl+D で抜けて root 環境で以下を作業します) # chown root:root /tmp/chinachu-*.service # mv /tmp/chinachu-*.service /etc/systemd/system/ # systemctl enable chinachu-operator # systemctl enable chinachu-wui # systemctl start chinachu-operator # systemctl start chinachu-wui
動作確認
ブラウザから今まで設定してきた Chinachu にアクセスして、動作を確認してみます。アドレスは ”http://録画サーバのIPアドレス:接続ポート番号” です。アクセスできない場合、 正常にサービスが起動できていないか、 CentOS のファイアウォール設定が問題である可能性もあります。
ファイアウォールについては以下の設定を実行します。
# firewall-cmd --add-port 20772/tcp --permanent
サービスが起動できていて、指定されたポートで待ち受けているかを確認するには、 “ss -tln” コマンドを実行して 20772 ポートがあるかを確認するのがよさそうです。
アクセスしてみて、以下のような画面が出てくれば動いていると思います。番組表はタイミングによっては表示が歯抜けの状態かもしれません。
環境情報
今回の自分の環境は以下の通りです。 ここに Windows10 をインストールして、以前の Mirakurun の環境も構築しています。
そのため、外部から見ると同一の PC で完結したものとなっています。この時点で、まさに「安定稼働に至らなかった」事例とほぼ同一です。差異は Docker の有無くらいでしょうか。
コンパクトに構築したかったので、機材には XH110G を使用しました。これは小型かつ PCIe スロットを搭載しているのでとても都合のいいものでした。
公式にも Geforce 1050Ti 辺りは載せられるという情報もあるようですし、録画で無くとも省スペース PC かつグラフィックスもそれなりに欲しい人には有力なものとなりそうです。
[amazonjs asin=”B0743GN4GT” locale=”JP” title=”Shuttle 小型ベアボーンPC 200x78x250mm ブラック XH110G”]
CPU には Intel i5 7600T を選択しました。重要視した項目はそれほど無く、i3 よりは上であればよいであろう、という程度でした。仮想マシンを動かすことを検討していたためメモリを 16GB ほどにしました。録画環境としては割と多めのマシン環境です。
[amazonjs asin=”B01N10KQWM” locale=”JP” title=”Intel CPU Core i5-7600T 2.8GHz 6Mキャッシュ 4コア/4スレッド LGA1151 BX80677I57600T 【BOX】”]
ハードディスクには Western Digital の WD Red のものを使用しました。現時点で 2.5 inch 9.5mm のものだと 1TB がほぼ最大値のようなので、こうなりました。もし WD RED でより容量が多いものがあったらそちらを使用したかったと思います。
[amazonjs asin=”B00F0EIJGI” locale=”JP” title=”WD HDD 内蔵ハードディスク 2.5インチ 1TB WD Red WD10JFCX SATA3.0 5400rpm 16MB 9.5mm 3年保証”]
録画ファイルの置き場の見直し
今までの設定では、録画ファイルは /home/chinachu/chinachu/recorded に記録されます。
通常の Linux 環境ではこれで問題ないのですが、 Hyper-V の環境で動かしていることもあり、仮想ハードディスクの容量が肥大化していくのはあまりいいものではありません。これをなんとかするために、 Hyper-V ホストのフォルダをファイル共有で共有して、ここに書き込むようにしたいと思います。
# yum install -y cifs-utils
Windows 側で共有用のユーザーを作成して、パスワードを設定しておきます。このユーザーで読み書きのアクセスが出来るように共有フォルダを準備しておきます。ここでは、 sharefiles という名前でフォルダを作成、共有を設定したものとします。
この情報を元に Linux 側で以下の内容のファイルを作成します (ファイル名は share_credentials としておきます)。
username=Windowsでのユーザー名 password=パスワード
CIFS でマウントするときに、 chinachu ユーザーで読み書きアクセスするために UID,GID を確認しておきます。この値をマウント時の設定に追加することで、 root でマウント処理を行いつつもアクセスはユーザーに開放するということができます。
# id chinachu uid=1010(chinachu) gid=1010(chinachu) # mkdir -p /mnt/share # mount -t cifs -o credentials=share_credentials,uid=1010,gid=1010 //(IPアドレス)/sharefiles /home/chinachu/mnt/share
念のため、このディレクトリに Linux 側から chinachu ユーザーで読み書きが出来るか確認しておきます。
# su - chinachu $ cd /mnt/share $ touch fromlinux (ここでエラーが出ずにファイルが出来ていれば OK)
出来たファイルについて Windows 側から開いてアクセスできればうまく共有できていると思います。
続いて Chinachu の設定を書き換えておきます。先の録画パスを指定している部分を以下のように変更します。
"recordedDir" : "/home/chinachu/mnt/share/",
システムの起動直後から録画ファイル用のマウントを行っておくために、 /etc/fstab に以下のような行を追記しておきます。
//(IPアドレス)/sharefiles /home/chinachu/mnt/share cifs credentials=/home/chinachu/share_credentials,uid=1010,gid=1010 0 0
※ share_credentials ファイルが置いてある場所をフルパスで指定しておきます。各自適切な場所にファイルを配置してください
chinachu 関連のサービスを再起動して、ストレージ使用量を確認してみてください。
以下のように、容量が増えていたら成功しています。(今回の仮想HDD は 32GB だったので、それ以上の空きが見えていることで無事にマウント先の空き容量を取れているようです)
今回のような共有フォルダに書き込む場合には、マウントする場所にも注意が必要でした。 /home/chinachu/ 以下にマウントするようにして成功しました。定番の /mnt/media 等にマウントして、ここをフルパスで録画先指定にすると、録画時にのみエラーが発生するという症状になりました。
こういう挙動になるようなので、指定先には注意が必要です。
まとめ
Hyper-V の中に CentOS にて Chinachu をセットアップしてみました。
Docker for Windows のほうでも Hyper-V を使用しており、そちらの場合では安定動作に至らなかったという話があるようなので、ここまでセットアップしたものも実は安定稼働にたどり着かないかもしれません。
しばらく稼働状況は様子見したいと思います。
参考
Chinachu の CentOS インストールについては以下のサイトを参考にさせてもらいました。特に Systemd 周りは助かりました。
仮想マシンも併用しつつ録画環境を構築する例として、こちらのほうも参考にしました。
Docker や vagrant, Hyper-V などを活用・有効化しつつ環境を作っている事例として貴重です。