Node-RED のインストール（Ubuntu）

# はじめに

こんにちは、京セラコミュニケーションシステム 福留（@kccs_kazuo_fukudome）です。

最近、IoT デバイスの制御で Node-RED を利用した処理フローを記述する事が多くなってきているようです。弊社の大山（@kccs_susumu-oyama）も Node-RED を利用した開発をしています。Node-RED を利用した開発記事もあるので、気になる人は見てください。

私も、つい先日から利用し始める事になりました。ですが、いざ Node-RED をインストールしようとした時に、良い感じにまとまった記事が見つからなかったです。そのため、今回は備忘録もかねて、Google Compute Engine （Ubuntu 20.04）に インストールした手順を紹介します。

:::note info
本記事は 2023 年 9 月ごろに作成しております。
Google Cloud の機能を利用した場合は、利用料が発生します。
:::

## VM インスタンスの作成

Google Compute Engine で Ubuntu 20.4 の VM インスタンスを作成します。

VM インスタンス作成でブートディスクの OS、バージョンを Ubuntu 20.4 へ変更します。後の設定は、デフォルト設定でインスタンスを作成します。

![image1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2852633/e3439e9f-e214-79d6-40a4-8d29caa16396.png)

## 基本モジュールのアップデート

インスタンスを作成し、起動したら、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](https://nodered.jp/docs/faq/node-versions)で 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 となっていれば問題ありません。

![image2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2852633/1ce4855a-532d-71fb-2673-39a970be74e3.png)

## 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 ファイアウォール ルールを使用する](https://cloud.google.com/vpc/docs/using-firewalls?hl=ja#console) 等の HP を参考に設定してください。

## Node-RED の起動

次のコマンドで、Node-RED を起動します。

```
node-red &
```

問題なければ、ブラウザから Node-RED にアクセスできると思います。
![image3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2852633/05fe7543-cd4c-d195-37e6-f1d5d8f0ef84.png)

## 【補足】Node-RED のサービスポート変更

ネットワークの環境によっては、Node-RED のサービスポート番号 1880 の通信が許可されていない場合があるかもしれません。その場合は、Node-RED の設定ファイルにサービスポート番号が記述されている箇所がありますので、そちらを変更してみてください。

``` ~/.node-red/settings.js
    /** 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 を利用した開発も増えるのでは？と感じています。