一番初めにRaspberry PiでNode-REDを使うときにやっておくこと

Node-RED
先週はRaspberry Pi用の赤外線学習リモコンADRSIRが来た勢いだけでNode-REDを動かしました。
今回は落ち着いて、Node-REDを使い始めるための最初の設定をしてみます。


先週はRaspberry Pi用の赤外線学習リモコンADRSIRで遊んでいました。
関連記事:Google HomeとRaspberry PiのNode-REDで赤外線リモコンのコントロールをする

勢いで動かしたため行き当たりばったりでライブラリなどを追加しました。忘れて再現できなくなると困るので、改めて初期設定の手順を確認しています。

Raspberry PiのDebian stretchベースのOSである RASPBIAN STRETCH WITH DESKTOP Version:November 2017 には最初からNode-REDが組み込まれています。

Node.jsのライブラリ群をお手軽に試す事ができるノードがたくさん公開されているのですが、それをインストールするにはnpmというプログラムを使います。ところが、どういう訳かnpmが最初は入っていないんです。

そもそもNode-REDやそのベースであるNode.jsのバージョンはどうなっているのか?アップデートはどうするんだ?とか、多くのライブラリと依存関係にあるプログラムなので個別にインストールやアップデートをして良いのかわかりません。
と、Linuxならごく当たり前の問題で悩んでいましたが、このような場合に対処するスクリプトが用意されているがLinuxの良いところです。

Node-REDをアップデートし環境を整えるスクリプト

初めてNode-REDを動かす前にアップデートスクリプトを動かすと良いでしょう。Version:November 2017には入っていなかったnpmもインストールされます。

update-nodejs-and-nodered

Raspberry Piでターミナルを開き次のコマンドを入れます。
pi@raspberrypi:~ $ update-nodejs-and-nodered
その後
This script will remove any pre-installed versions of node.js and Node-RED
and replace them with node.js 6.x LTS (boron) and the latest Node-RED from Npm.
To do this it runs commands as root - please satisfy yourself that this will
not damage your Pi, or otherwise compromise your configuration.

Doing this may also be 'a bad thing' if you have installed lots of extra nodes.
Especially if they have any native binary component. Some nodes in your
~/.node-red directory will probably need to be re-installed afterwards, some
may need you to run npm update, and some may require you to run npm rebuild.

Are you really sure you want to do this ? (y/N) ?
と聞かれるので"y"を押します。
Node-REDとNode.jsを入れ直すのでOS環境が壊れる可能性があります。そこまでひどくなくともノードによっては動かなくなるものがあるかもしれません。壊れて困りそうならやめておきましょう。
"y"と入れればアップデート開始です。

Pi 1で20~30分かかると表示されます。
Running for user pi at /home/pi

This can take 20-30 minutes on a Pi 1 - please wait.

  Stop Node-RED                       ✔
  Remove old version of Node-RED      ✔
  Remove old version of node.js       ✔
  Install node.js LTS                 ✔   Node v6.12.3   Npm 3.10.10
  Clean npm cache                     ✔
  Install Node-RED core               ✔   0.17.5
  Install extra nodes                 ✔
  Install serialport node             ✔
  Npm rebuild existing nodes          ✔
  Add menu shortcut                   ✔
  Update systemd script               ✔
  Update update script                ✔

Any errors will be logged to   /var/log/nodered-install.log

All done.
  You can now start Node-RED with the command  node-red-start
  or using the icon under   Menu / Programming / Node-RED
  Then point your browser to localhost:1880 or http://{your_pi_ip-address}:1880

Started  2018年  1月 27日 土曜日 16:34:29 JST  -  Finished  2018年  1月 27日 土曜日 16:39:49 JST
我が家のネット環境とRaspberry Pi 3で約5分ほどかかりました。

このスクリプトはRaspbianでなくても入手できるようです。debianベースのOSでつかるようです。記事最後にリンクを置いておきます。

Node-REDのAdminツール

前回はパスワードのハッシュを生成することができませんでした。Node-REDのAdminツールをインストールすれば簡単にパスワードのハッシュを作れます。

アップデートが終わったら一度Node-REDを実行します。
$ node-red-start
最初の実行で設定ファイルがホームディレクトリの.node-redフォルダにできます。
"^c"で終了します。裏ではNode-REDが動いていますので止めます。
$node-red-stop

node-red-admin

ターミナル画面でホームディレクトリ下の".node-red"ディレクトリへ移動します。
$ cd ~/.node-red
このディレクトリにNode-REDの設定ファイルがあります。

node-red-adminツールをインストールします。
$ sudo npm install -g node-red-admin
1分ほどで終わりました。

Node-REDのパスワードを設定する

Node-REDはネットワークにつないでこそ本領を発揮します。そのためフローの編集画面にパスワードを設定しておきましょう。これをやらないと誰でもプログラムをいじれる状態になってしまいます。

Node-REDのパスワード設定は"~/.node-red/settings.js"ファイルにあります。テキストエディタで開いてください。
$ leafpad ~/.node-red/settings.js

パスワード設定の行を探します。次のように書かれている部分を探します。
//adminAuth: {
    //    type: "credentials",
    //    users: [{
    //        username: "admin",
    //        password: "$2a$08$zZWtXTja0fB1pzD4sHCMyOCMYz2Z6dNbM6tl8sJogENOMcxWV9DN.",
    //        permissions: "*"
    //    }]
    //},
この記事を公開した時のバージョンでは112行目から書かれていました。
行頭の"//"を削除します。
usernameを設定してください。adminのままはやめましょう。
そして、passwordにはハッシュ化したパスワードを設定します。

パスワードのハッシュ化

パスワードのハッシュ化にはnode-red-adminツールを使います。
別のターミナル画面を開き次のコマンドを入れます。
$ node-red-admin hash-pw
Password: 
$xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
パスワードを入れるとハッシュ化された文字列が表示されます。この文字列を先ほどのpassword行に書きます。

settings.jsファイルは次のようになります。
adminAuth: {
        type: "credentials",
        users: [{
            username: "YourID",
            password: "$xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
            permissions: "*"
        }]
    },
編集が終わったら保存して終了します。

Node-REDを動かす

Node-REDを動かします。
$ node-red-start

Node-REDはブラウザ上で動きます。ブラウザで次のURLを開きます。
Raspberry Pi上のブラウザで開く場合は、
http://localhost:1880/
LAN内の他のコンピュータで開く場合は、
http://Raspberry PiのIPアドレス:1880/

ブラウザでこんな画面が出れば成功です。
Node-RED

参考

以上の手順は次のビデオで知りました。

update-nodejs-and-noderedスクリプトは改めて検索するとちゃんと書いてありますね。
Running on Raspberry Pi | Node-RED User Group Japan
jessieの記述ですがstretchでも同じようです。
このリンクにはDebianベースの他のOSでスクリプトをインストールする方法も書かれています。

コメント

最近のコメント

Threaded Recent Comments will be here.