はじめに
こんにちは、京セラコミュニケーションシステム 福留(@kccs_kazuo_fukudome)です。
最近、IoT デバイスの制御で Node-RED を利用した処理フローを記述する事が多くなってきているようです。弊社の大山(@kccs_susumu-oyama)も Node-RED を利用した開発をしています。Node-RED を利用した開発記事もあるので、気になる人は見てください。
私も、つい先日から利用し始める事になりました。ですが、いざ Node-RED をインストールしようとした時に、良い感じにまとまった記事が見つからなかったです。そのため、今回は備忘録もかねて、Google Compute Engine (Ubuntu 20.04)に インストールした手順を紹介します。
本記事は 2023 年 9 月ごろに作成しております。
Google Cloud の機能を利用した場合は、利用料が発生します。
VM インスタンスの作成
Google Compute Engine で Ubuntu 20.4 の VM インスタンスを作成します。
VM インスタンス作成でブートディスクの OS、バージョンを Ubuntu 20.4 へ変更します。後の設定は、デフォルト設定でインスタンスを作成します。
基本モジュールのアップデート
インスタンスを作成し、起動したら、Ubuntu の基本モジュールのアップデートを行います。
sudo apt-get update
sudo apt-get upgrade -y
Node.js のインストール
続いて、Node-RED のベース言語となる Node.js をインストールします。
ただ、2023 年 9 月時点で Node.js をインストールすると、 Node.js v10.19.0
がインストールされます。
Node-RED の 公式 HPで Node-RED を動かすには、 Node.js v16.x が推奨となっているため、次の操作で、Node.js のインストールバージョンを v10 から v16 に変更する必要があります。
Nodesource GPG キーをダウンロードしてインポートします。
sudo apt-get install -y ca-certificates curl gnupg
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
続いて、deb リポジトリの作成します。今回は Node.js v16.X を導入するので、"NODE_MAJOR" を "16" としていますが、別のバージョンをインストールしたい場合は、ここの数値を変更してください。
NODE_MAJOR=16
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | sudo tee /etc/apt/sources.list.d/nodesource.list
以上の設定を行ったら、apt をアップデートし、続いて Node.js をインストールします。
sudo apt-get update
sudo apt-get install nodejs -y
インストールできたら、"node -v" と実行すると、Node.js のバージョンが確認できます。表示されるバージョンが、次のように、v16.X.X となっていれば問題ありません。
Node-RED のインストール
続いて、Node-RED をインストールします。
sudo npm install -g -unsafe-perm node-red node-red-admin
Ubuntu、Google Compute Engine のファイアーウォール設定
最後に、Ubuntu のファイアーウォールの設定で、Node-RED のサービスポート 1880 番の通信を許可します。
sudo ufw allow 1880
また、Google Compute Engine のファイアーフォールの設定も必要となります。Google Compute Engine のファイアーウォール設定については、VPC ファイアウォール ルールを使用する 等の HP を参考に設定してください。
Node-RED の起動
次のコマンドで、Node-RED を起動します。
node-red &
問題なければ、ブラウザから Node-RED にアクセスできると思います。
【補足】Node-RED のサービスポート変更
ネットワークの環境によっては、Node-RED のサービスポート番号 1880 の通信が許可されていない場合があるかもしれません。その場合は、Node-RED の設定ファイルにサービスポート番号が記述されている箇所がありますので、そちらを変更してみてください。
/** the tcp port that the Node-RED web server is listening on */
uiPort: process.env.PORT || 1880,
最後に
Node-RED を利用し始めて解ったのですが、プログラミングと違って簡単に処理が作成できると思いました。一方で、処理を早く動かすために、ノードの 1 つ 1 つが、非同期処理で実装されているようです。そのため、思わぬ動きをされたりして、現在も四苦八苦しています。そもそも、私自身、Node.js などの非同期のデザインパターンに慣れていない事も原因の 1 つかもしれませんが。。。
ただ、ノードを組み合わせる事によって、簡単に処理(プログラミング)ができるのは、大きなメリットだと思っています。冒頭にも書いたように、今後は Node-RED を利用した開発も増えるのでは?と感じています。