Rocky Linux 9環境でNode.jsおよびNode-REDをインストールする手順

以下に、Rocky Linux 9.0 環境で Node.js および Node-RED をインストールする手順をまとめました。

---

### OSバージョンの確認
```
cat /etc/redhat-release
```
出力例: `Rocky Linux release 9.0 (Blue Onyx)`

### NVMのインストール
```
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash
source ~/.bashrc
```

### LTS版のNode.jsの安定版をインストール
```
nvm install --lts
```

### インストールしたNode.jsのバージョンを有効化
```
nvm use --lts
```

### Node.jsバージョンの確認
インストールしたバージョンの確認には、以下のコマンドを実行します。
```
nvm list
```
このコマンドの出力は、インストールされている Node.js のバージョンとそのステータスを示します。現在アクティブなバージョンは `->` 記号で表示されます（例：`-> v20.10.0`）。

### Node-REDのインストール
1. **Node.jsの確認**:
   ```
   node --version
   ```
   出力例: `v20.10.0`

2. **npmの確認**:
   ```
   npm --version
   ```

3. **Node-REDのグローバルインストール**:
   ```
   npm install -g --unsafe-perm node-red
   ```

4. **Node-REDの起動**:
   ```
   node-red
   ```

5. **ブラウザでアクセス**:
   http://127.0.0.1:1880/ にアクセスして Node-RED のエディタを表示します。

### Node-REDサービスファイルの作成
1. **サービスファイルの作成**:
   ```
   sudo nano /etc/systemd/system/node-red.service
   ```
   以下の内容をファイルに貼り付けます。
   ```
   [Unit]
   Description=Node-RED
   After=network.target

   [Service]
   ExecStart=/bin/bash -i -c '/home/user/.nvm/versions/node/v20.10.0/bin/node /home/user/.nvm/versions/node/v20.10.0/lib/node_modules/node-red/red.js'
   Restart=always
   User=user
   Group=user
   Environment="PATH=/home/user/.nvm/versions/node/v20.10.0/bin:/usr/bin:/bin"
   Environment="NODE_PATH=/home/user/.nvm/versions/node/v20.10.0/lib/node_modules"

   [Install]
   WantedBy=multi-user.target
   ```

2. **サービスの有効化と起動**:
   ```
   sudo systemctl enable node-red
   sudo systemctl start node-red
   ```

### ファイアウォール設定
1. **ポート開放**:
   ```
   sudo firewall-cmd --permanent --add-port=1880/tcp
   sudo firewall-cmd --reload
   ```

2. **ポートリストの確認**:
   ```
   sudo firewall-cmd --list-ports
   ```

これで Node.js と Node-RED が Rocky Linux でインストールされ、サービスが起動され、ファイアウォールの設定が適用されます。

--- 

注意: Node-RED や Node.js のバージョンは、この手順書を作成時点のものです。最新の情報に基づいて適宜更新してください。また、`ExecStart` のパスは Node-RED の実際のインストール場所に合わせて変更してください。



# 事後追記：

### 付録１：Node.js のバージョン管理とアンインストール

最新版の Node.js を使用し、他のバージョンをアンインストールしたい場合、以下の手順を実行してください。

**最新バージョンを使用する**:
1. 最新のバージョンを使用するには、次のコマンドを実行します：
   ```
   nvm use <最新バージョン>
   ```
   例：`nvm use v20.10.0`

**他のバージョンをアンインストール**:
1. `nvm list` コマンドの出力から、アンインストールしたいバージョンを確認します。
2. 以下のコマンドをそれぞれのバージョンに対して実行します。例えば、`v14.21.3` をアンインストールするには：
   ```
   nvm uninstall v14.21.3
   ```
   必要なすべてのバージョンに対してこの手順を繰り返します。

**デフォルトのバージョンを設定**:
1. 最新版をデフォルトとして設定するには、以下のコマンドを実行します：
   ```
   nvm alias default <最新バージョン>
   ```
   例：`nvm alias default v20.10.0`

これで、不要なバージョンがシステムから削除され、最新版の Node.js がデフォルトで使用されるようになります。

---

### 付録２：`nvm list` コマンドの解釈

`nvm list` コマンドの出力には、Node Version Manager (NVM) を使用して管理されている Node.js のバージョンに関する詳細な情報が表示されています。それぞれの部分の意味を以下に説明します：

- **`-> <バージョン>`**:
  - 現在アクティブな Node.js のバージョンを示します。例：`-> v20.10.0`

- **`system`**:
  - システム全体で利用可能な Node.js のバージョンを指します。システムに別途インストールされた Node.js のバージョンがある場合、ここで示されます。

- **`default -> <バージョン>`**:
  - 新しいシェルセッションを開始した際に自動的に使用される Node.js のバージョンを指します。例：`default -> v20.10.0`

- **`iojs`、`unstable`**:
  - `iojs` は Node.js からフォークしたプロジェクト、`unstable` は安定していない Node.js のバージョンを指します。これらは「N/A」（利用不可）と表示されています。

- **`node`, `stable`, `lts/*`**:
  - それぞれ最新の Node.js バージョン、最新の安定版、最新の LTS（長期サポート）バージョンを指します。例：全て `v20.10.0` が設定されています。

- **その他の LTS バージョン**:
  - 過去の LTS バージョン（`lts/argon`, `lts/boron`, `lts/carbon` など）は、それぞれ Node.js の古いバージョンに対応していますが、「N/A」と表示されています。

要約すると、`nvm list` コマンドはインストールされている Node.js のバージョンとそれぞれの状態を表示しています。