インターネットにつながらない環境にNode-REDを構築するメモ

# はじめに

インターネットにつながらない(インターネットから隔離された)環境にNode-REDを構築するメモです。

# 構成

インターネットにつながった(インターネットへ接続された)環境(Ubuntu)にNode-REDが動作する環境を構築します。
次にインターネットにつながらない(インターネットから隔離された)環境(CentOS 7.9)にファイル(Docker packageやimage)を持ち込んで構築します。

![スクリーンショット 2024-12-17 22.45.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/bade5263-8356-41e6-7910-0a0fa9cbaa67.png)

# 準備

## Ubuntu 環境

Docker Engineをインストールします。

https://docs.docker.com/engine/install/ubuntu/


```bash
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
```

```bash
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
```


Node-REDの設定ファイルを保存するディレクトリを作成します。

```bash
mkdir .node-red
chmod 777 .node-red
```

Node-REDをインストールします。
展開したNode-REDの設定ファイルを参照可能とするため、ホストのパス(/home/ユーザー名/.node-red)をコンテナのパス(/data)にマウントします。

```bash
sudo docker run -d -v /home/ユーザー名/.node-red:/data -p 1880:1880 --name node-red nodered/node-red:latest
```


### 持ち込むイメージファイルの作成

Node-REDの設定ファイルを保存するディレクトリをファイル保存します。

```bash
tar cvf node-red.tar .node-red
zip node-red.tar
```

Node-REDのdockerイメージをファイル保存します。

```bash
docker save -o node-red_docker_image.tar nodered/node-red:latest
zip node-red_docker_image.tar
```

### Docker Engine(Linux用)のパッケージファイル

以下のパッケージファイルをダウンロードします。

- containerd.io-1.6.33-3.1.el7.x86_64.rpm
- docker-buildx-plugin-0.14.1-1.el7.x86_64.rpm
- docker-ce-26.1.4-1.el7.x86_64.rpm
- docker-ce-cli-26.1.4-1.el7.x86_64.rpm
- docker-ce-rootless-extras-26.1.4-1.el7.x86_64.rpm
- docker-compose-plugin-2.27.1-1.el7.x86_64.rpm

https://download.docker.com/linux/centos/7/x86_64/stable/Packages/


## CentOS 7.9 環境

Ubuntu環境からCentOS環境へファイルをすべて転送します。

### Docker環境の構築

Docker Engineをインストールします。

```bash
sudo yum install ./containerd.io-1.6.33-3.1.el7.x86_64.rpm ./docker-buildx-plugin-0.14.1-1.el7.x86_64.rpm ./docker-ce-26.1.4-1.el7.x86_64.rpm ./docker-ce-cli-26.1.4-1.el7.x86_64.rpm ./docker-ce-rootless-extras-26.1.4-1.el7.x86_64.rpm ./docker-compose-plugin-2.27.1-1.el7.x86_64.rpm
```

dockerのイメージデータを保存するディレクトリを変更する場合など、/etc/docker/daemon.jsonファイルを作成します。

```json:daemon.json
{
  "data-root": "/mnt/docker-data",
  "log-drive": "json-file",
  "log-opts": {
    "max-size": "1g",
    "max-file": "5"
  }
}
```

dockerを起動します。

```bash
sudo systemctl start docker
```

### Node-RED

Node-REDの設定ファイルを展開します。

```bash
tar xvzf node-red.tar.gz
```

Node-REDのdockerイメージをロードします。

```bash
sudo docker load < node-red_docker_image.tar.gz
```

Node-REDを起動します。

```bash
sudo docker run -d -v /home/ユーザー名/.node-red:/data -p 1880:1880 --name node-red nodered/node-red:latest
```

# Node-REDの動作確認

ブラウザからNode-REDにアクセスしてフロー作成画面が表示されることを確認します。

![スクリーンショット 2024-12-17 23.26.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/9dff5245-5d9e-e77e-7ed1-851137df7056.png)