Play with DockerでNode-REDを動かしてみた。

# はじめに

DockerでNode-REDを実行する方法については公式ドキュメントに記載されています。

https://nodered.jp/docs/getting-started/docker

Play with Dockerはブラウザで使える無料のDocker実行環境で、PCにDockerをインストールする必要がありません。

Play with DockerでNode-REDを動かしてみました。

![スクリーンショット 2022-05-08 21.15.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/425f1779-9ed7-7fab-7661-0e16c885a412.png)

## メリット

### ブラウザだけで使える

### 制限時間は4時間

他のサービス(ソフトウェアエンジニア向けのインタラクティブな学習およびトレーニングプラットフォームを提供するKatacoda環境)では制限時間が1時間です。
タイマーが表示されて見やすいです。

![image_0.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/67b94462-59bc-aef1-1e4b-c93c397cd8d1.jpeg)

### ポートが使える

Node-REDは標準ではポート番号1880を使用します。
リンクからNode-REDフローを開くことができます。

![image_1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/f3b7089f-97ed-6b67-b4a8-9345b5d5e9d1.jpeg)

### sshが使える

Play with Docker環境へsshでログインすることができます。

例.

```bash
$ ssh ip172-18-0-81-c9rqius33d5g00b2othg@direct.labs.play-with-docker.com
```

scpでflows.jsonファイルなどをコピー(バックアップ)することができます。

例. 

```bash
$ scp ip172-18-0-81-c9rqius33d5g00b2othg@direct.labs.play-with-docker.com:.node-red/flows.json ./
```

![image_2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/692627fd-f59f-a111-4d35-23401a3cd583.jpeg)

### gitコマンドが使える

Githubから必要なファイルをcloneできます。

# 利用方法

## Docker Hubアカウントの作成

Docker HubでDocker ID(アカウント)を作成します。

https://hub.docker.com/

## ログイン

Play with Dockerのサイトへアクセスします。

https://labs.play-with-docker.com/

Loginボタンを押します。
Docker ID(アカウント)でログインします。

![Screenshot 2022-05-08 at 20-43-51 Play with Docker.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/19a23fdd-de3e-73f3-f4f6-06067bb0d8d5.png)

## Play with Dockerの開始

Startボタンを押します。

![Screenshot 2022-05-08 at 20-38-52 Play with Docker.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/729f550f-9659-6fc0-294e-3f7ee7dbcbed.png)

# Node-REDの起動方法

## .node-redディレクトリの作成と書き込み権限の変更

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

## Node-REDの起動

```bash
$ docker run -d -p 1880:1880 -v /root/.node-red:/data nodered/node-red:latest
```

# MQTTを動かす方法 (TIPS)

Node-REDでMQTTを動かす場合、docker起動時にポート番号1883を追加で設定します。

```bash
$ docker run -d -p 1880:1880 -p 1883:1883 -v /root/.node-red:/data nodered/node-red:latest
```

![スクリーンショット 2022-05-08 21.19.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/5f137a7c-51af-da45-970a-f738c829d1d0.png)

## Play with Docker内でMQTTを試す

mosquittoパッケージをインストールします。

```bash
$ apk update
$ apk upgrade
$ apk add mosquitto
$ apk add mosquitto-clients
```

mosquitto＿pubコマンド(publish)でメッセージを送ります。

```bash
$ mosquitto_pub -h localhost -p 1883 -t test/test -m hello
```

![スクリーンショット 2022-05-08 21.37.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/c3cefcd2-db45-d672-3504-9b30308f77b1.png)

## 外部からMQTTを試す

ブラウザ上のポート番号1883はHTTPアクセスになってしまうため、直接ポート番号1883へアクセスする方法が見つかりませんでした。
ngrokコマンドを使用して外部からMQTT接続できました。

```bash
$ wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-amd64.zip
$ unzip *.zip
$ ./ngrok authtoken [アクセストークン]
$ ./ngrok tcp 1883
```

![スクリーンショット 2022-05-08 21.45.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/41e01b55-7efb-71fa-aa03-c1c415e90bfd.png)

```bash
$ mosquitto_pub -h 6.tcp.ngrok.io -p 13119 -t test/test -m hello
```

# セッションの終了

使い終わったらセッションを終了させます。

![image_10.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/59060a67-f6df-e64e-0431-fa1e0e66f184.jpeg)

![image_11.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/5f346b10-afb8-866e-f973-f223f9ec3bef.jpeg)

# さいごに

良きNode-REDライフを！