Node-RED 2系をAzure Web Appsで利用する #noderedjp #azure


## Node-RED 2系をAzure Web Appsで使いたい

最初に、AzureでNode-RED動かしたいなと色々と調べてて動作したのが[こちら](https://github.com/jmservera/node-red-azure-webapp)のやりかたでした。

> https://github.com/jmservera/node-red-azure-webapp

ただ、こちらはv1.0.6で固定されてたので2系にしようとしたらうまくデプロイできず。（まだ検証ちゃんとしてないけど）


Node-REDは最近2系にアップデートされて結構中身が変わってるので2系をなんとか使いたいところ。。。ということで調べてましたが@horihiroさんのリポジトリからうまくいけました。

> [ほりひログ 2018-12-09 （勝手に）続・Azure Web AppでNode-REDを動かす手順](https://uncaughtexception.hatenablog.com/entry/2018/12/09/071216)


## 終わってみると簡単にいけた2系のデプロイ

[horihiro/node-red-webapp](https://github.com/horihiro/node-red-webapp)のリポジトリからAzureにデプロイしていきます。

2系というか最新が入る模様ですね。

For Windowsの方のボタンで進めていきます。Linuxはまだ試してません。

> ![スクリーンショット 2021-09-05 15.52.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35387/1628a389-09ea-8641-b569-1ce2b456edca.png "スクリーンショット 2021-09-05 15.52.06.png")

リポジトリのURLとブランチを確認

> ![スクリーンショット 2021-09-05 15.52.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35387/9282ea54-2295-58e5-db67-d50b6a018700.png "スクリーンショット 2021-09-05 15.52.46.png")

* https://github.com/horihiro/node-red-webapp.git
* premerged

が今のところ良いっぽいです。

あとはそのままデプロイします。

### 動いた

`アプリ名.azurewebsites.net`にアクセスすると、最初は`not started`とか出る場合ありますが、サーバーが寝てたりすると発生します。
リロードするとサーバーが起きてるので管理画面が表示されます。

> ![スクリーンショット 2021-09-05 15.44.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35387/172755b9-3364-b7ac-ce88-c443f1d127ef.png "スクリーンショット 2021-09-05 15.44.16.png")

無事に2系！

## パスワードをかけるなど

App Service Editorの画面から`app.js`の設定を編集できます。


> ![スクリーンショット 2021-09-05 15.56.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35387/37b4dd51-23c2-d0a2-96b0-75ff5d8d7a92.png "スクリーンショット 2021-09-05 15.56.15.png")

app.jsのsettingsの部分がNode-REDの設定になります。

> ![スクリーンショット 2021-09-05 15.57.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35387/23eb12c1-c16b-d62d-650d-f85fc61a0494.png "スクリーンショット 2021-09-05 15.57.53.png")

* 管理画面のパス変更

デフォだと`httpAdminRoot`が`/`になってますが、`/kanrigamen`などにすると`アプリ名.azurewebsites.net/kanrigamen`にアクセスした際に管理画面が見れるようになります。

* パスワード設定

adminAuthを設定するとログインユーザーやパスワードを設定できます。

これはNode-RED公式を参考にした方が良いかもしれません。

> https://nodered.jp/docs/user-guide/runtime/securing-node-red

```app.js
//省略

// Create the settings object - see default settings.js file for other options
var settings = {
    httpAdminRoot:"/kanrigamen", //管理画面のパスを変更
    httpNodeRoot: "/",
    userDir:".",
    flowFile: "flows_" + (process.env.WEBSITE_SITE_NAME || process.env.APPSETTINGS_WEBSITE_SITE_NAME ? process.env.WEBSITE_SITE_NAME || process.env.APPSETTINGS_WEBSITE_SITE_NAME : require('os').hostname()) + ".json",
    functionGlobalContext: { },    // enables global context
    // Securing Node-RED
    // -----------------
    // To password protect the Node-RED editor and admin API, the following
    // property can be used. See http://nodered.org/docs/security.html for details.
    adminAuth: {
       type: "credentials",
       users: [{
           username: "admin",
           password: "$2a$08$zZWtXTja0fB1pzD4sHCMyOCMYz2Z6dNbM6tl8sJogENOMcxWV9DN.",
           permissions: "*"
       }]
    },
};

//省略
```

app.jsを編集したら挙動が怪しくなる時があるので再起動推奨です。

> ![スクリーンショット 2021-09-05 16.01.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35387/21351fb8-a280-51b3-0793-36d16a209db0.png "スクリーンショット 2021-09-05 16.01.22.png")

## おわりに

@horihiroさんにDMで質問しながらうまく動かす事ができました、ありがとうございます！！