LoginSignup
3
4

More than 1 year has passed since last update.

Raspberry Pi4 地デジサーバ Chinachu+mirakurun の Node.jsをアップデートしてみた

Last updated at Posted at 2020-08-02

Raspberry Pi4で地デジサーバを Chinachu +mirakurun で稼働していますが、以下のようにmirakurunをv3.2.0にアップデートした後、chinachuもアップデートしたところ、動かなくなりました。

$ sudo npm install mirakurun -g --unsafe-perm --production  //mirakurunのアップデート

$ cd chinachu
$ ./chinachu updater  //chinachuのアップデート

アップデート後、ステータス($ sudo pm2 status)を確認したところ、erroredと表示されました。

なぜ動かなくなったか

原因は、Node.js をアップデートする前に、mirakurun をアップデートしたためでした。
それで、Node.jsをv8.9.4からv10.16.3にアップデートしました。

正しいアップデートの方法

1.Chinachuのユーザー追加

まず、Chunachu は Raspberry Pi のデフォルトユーザーでは動かない(録画が乱れる)ようなのでユーザーを追加します。(Chinachuを使うためにユーザーをvideoグループに追加する。録画先のディレクトリ権限も変更。)

$ sudo adduser <追加ユーザ>
$ sudo gpasswd -a <追加ユーザ> sudo
$ sudo adduser <追加ユーザ> video
$ sudo chown <追加ユーザ>:video /mnt/hdd1

Sambaの設定も修正します。

$ sudo nano /etc/samba/smb.conf

[recorded]
   comment = Chinachu Recorded Folder
   path = /mnt/hdd1/recorded
   browsable = yes
   read only = no
   guest ok = yes
   force user = <追加ユーザ>

# sambaを再起動
$ sudo service smbd restart

# ディレクトリのオーナーを変更
$ sudo chown <追加ユーザ>:video /mnt/hdd1

2.Node.jsとMirakurunのアップデート

Node.jsをv10.16.3にアップデートします。
また、Mirakurunも更新をします。

$ sudo apt-get install npm
$ sudo npm install -g n
$ sudo n 10.16.3
$ sudo npm install -g npm

$ sudo npm install pm2 -g
$ sudo npm install mirakurun -g --unsafe --production

3.Chinachuのアップデート

その前に・・・Chinachu録画設定ファイルに追加ユーザなどを設定します。

$ cd chinachu
$ vi config.json
  "uid": "<追加ユーザ>"
  "recordedDir" : "/mnt/hdd1/recorded/",
  "temporaryDir" : "/mnt/hdd1/recordtmp/",

そして、Chinachuのアップデートをします。

~/chinachu $ ./chinachu updater

$ sudo pm2 status //全部onlineになっているか確認!
$ sudo reboot

奮闘記(参考までに・・・)

1.Node.jsの調整

$ sudo apt remove nodejs
$ sudo apt autoremove
$ wget https://nodejs.org/dist/v10.22.0/node-v10.22.0-linux-armv7l.tar.xz
$ tar -xvf node-v10.22.0-linux-armv7l.tar.xz
$ cd node-v10.22.0-linux-armv7l
$ sudo rm /usr/local/bin/node  
$ sudo cp -R * /usr/local/
$ cd

今回は、Node.jsはv10.22.0にしましたが、v12やv14でも可能なようです。

ここで、以下の実行でエラーとなりました。

$ sudo apt-get install npm

パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
インストールすることができないパッケージがありました。おそらく、あり得
ない状況を要求したか、(不安定版ディストリビューションを使用しているの
であれば) 必要なパッケージがまだ作成されていなかったり Incoming から移
動されていないことが考えられます。
以下の情報がこの問題を解決するために役立つかもしれません:

以下のパッケージには満たせない依存関係があります:
 ・・・

依存関係が壊れているようなので aptitude をインストールし、以下のコマンド実行することにしました。

$ sudo apt-get install aptitude
・・・
$ sudo aptitude install npm
・・・
以下のアクションでこれらの依存関係の問題は解決されます:

     以下のパッケージを現在のバージョンに一時固定する:
1)     libnode-dev [インストールされていません]       
2)     libnode64 [インストールされていません]         
3)     libssl-dev [インストールされていません]        
4)     node-gyp [インストールされていません]          
5)     npm [インストールされていません]               

この解決方法を受け入れますか? [Y/n/q/?]

Y を選択して先に進めます。
そして、次のコマンドを実行しましたがエラーになってしまいました。

$ sudo apt-get update

それで一旦最初からやり直すことにしました。

$ sudo apt remove --purge nodejs npm
$ sudo apt clean
$ sudo apt autoclean
$ sudo apt install -f
$ sudo apt autoremove
$ sudo apt install curl
$ cd ~
$ curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
$ sudo apt-get install -y nodejs

$ curl -L https://www.npmjs.com/install.sh | sh

結局、以下の方法が良かったようです。

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

そして、ステータスの確認をします。

$ sudo pm2 status
┌────┬────────────────────┬──────────┬──────┬───────────┬──────────┬──────────┐
│ id │ name               │ mode     │ ↺    │ status    │ cpu      │ memory   │
├────┼────────────────────┼──────────┼──────┼───────────┼──────────┼──────────┤
│ 2  │ chinachu-operator  │ fork     │ 3    │ stopped   │ 0%       │ 0b       │
│ 1  │ chinachu-wui       │ fork     │ 1    │ stopped   │ 0%       │ 0b       │
│ 0  │ mirakurun-server   │ fork     │ 0    │ online    │ 0.3%     │ 76.9mb   │
└────┴────────────────────┴──────────┴──────┴───────────┴──────────┴──────────┘

pm2 に登録して保存します。

$ sudo pm2 start processes.json
$ sudo pm2 save

また、gitの修正を元に戻しておきます。

$ git fetch origin
($ git reset --hard origin/masterでエラー)

試しで録画をし、確認してみたところ、ひどく映像が乱れているのでチューニングを行いました。

2.Mirakurunのチューニング

バッファを増やします。

$ sudo mirakurun config server
#highWaterMark: 25165824 # integer (bytes)
#highWaterMark: 67108864 # 64MB
#highWaterMark: 134217728 # 128MB
highWaterMark: 268435456 # 256MB

次にヒープサイズを増やします。

$ sudo pm2 start mirakurun-server --node-args --max_old_space_size=1024

mirakurun config server で下記設定を追加。

disableIPv6: true

rocesses.jsonを修正してプロセスサイズの最大値も引き上げておく。

$ sudo vi /usr/lib/node_modules/mirakurun/processes.json
    :
      "node_args" : "--max_old_space_size=2048",

再度、mirakurunインストールをします。

$ sudo npm install mirakurun -g --unsafe --production

そして、以下を実行します。

$ export PATH=/home/pi/chinachu/.nave:$PATH 
$ cd /usr/lib/node_modules/npm
$ sudo npm install

ここまで試して、chinachuとmirakurunのステータスは online であるものの、録画が乱れたままでした。結局、前述の「1.Chinachuのユーザー追加」で解決しました。

主な参考サイト

DIGITAL CASSIS SODA内の記事ー https://mimimopu.com/chinachu-errored/
東京工業大学デジタル創作同好会の記事ー https://trap.jp/post/1089/

最後に

うれしいことに、Raspberry Pi4の発売により、地デジサーバを入れる人の人口が増えています。
今後、アップデートをする人も増えると思います。
少しでも、この記事が参考になれば幸いです。

また、Chinachuのこれからの改善や発展を期待しています!

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4