AzureのVirtual MachinesでNode-REDを動かすメモ

AzureのVirtual MachinesでNode-REDを動かすメモです。

Virtual MachinesでUbuntu Serverをつくる

Microsoft Azureで実行する : Node-RED日本ユーザ会

こちらの記事で実現できますが、今回自分が作業した内容をメモします。

リソースグループの作成

image

今回用のリソースグループを作ります。

  • リソースグループ名
    • 好きな名前で
  • リージョン
    • 好きなリージョンで、私は東日本にしました。

image

リソースの作成をクリックします。

Virtual MachinesでUbuntu Serverを選択

image

新規リソースを作るページで Ubuntu で検索して、Ubuntu Server 18.04 LTS を選択します。

image

  • リソースグループ
    • 先ほど作成したもの
  • インスタンスの詳細
    • 仮想マシン名
      • 好きな名前でよいですが、私はリソースグループ名に -machine をつけたものにしました。
    • 地域
      • 好きな地域で。私はリソースグループのリージョンを東日本にしていたので合わせました。
    • 可用性オプション
      • 冗長なし。そのまま。
    • イメージ
      • Ubuntu Server 18.04 LTS
      • 先ほど、イメージを選択してくれば、入力されてるはず

image

サイズが大きめのものになっているので、変更します。

こちらのページでは

「サイズ」の手順で、仮想マシンのサイズを選択します。 単純な Node-RED のインスタンスをたてる場合、 node.js はシングルスレッドで動作するので、マルチコアのサイズを選択しても恩恵を得られないことにご留意ください。 初めての場合は、「すべて表示」をクリックし、A1 Basicを選択すると良いでしょう。

となっていますが、もうちょい強めのにしたかったので

image

吟味しまして、

image

Standard B1s にしました。感覚的には、もう一段下がった B1ls vCPUv 1つ、RAM 0.5 GB も行ける気がします。

image

管理者アカウントはパスワードのほうで。受信ポートの規則は、HTTP・HTTPSをあけときます。

確認と作成で、作る内容を確認したあと、作成します。

image

シリアルコンソールでログイン

あえて、SSHポート開けずにブラウザ上からシリアルコンソールで設定します。

シリアルコンソールの詳細については、 Linux 用 Azure シリアル コンソール | Microsoft Docs をご覧ください。

image

image

シリアルコンソールをクリックします。

image

しばらく待ちます。

image

ログインするユーザー名は、さきほど管理者アカウントで設定したユーザー名。

image

パスワードを聞かれたら、丁寧に右クリックメニューでペースト(貼り付け)しましょう。

Node-RED のセットアップ

こちらの「Node-RED のセットアップ」を進めます。

curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
sudo apt-get install -y nodejs build-essential

まずこの2つのコマンドを実行してNode.jsインストール。

sudo npm install -g --unsafe-perm node-red

こちらのコマンドでNode-REDをインストールします。

余談「sudo npm install -g node-red」

これでもインストールできるようなんですが、

image

こんなエラーが出て気持ち悪いので、上記のコマンドにしました。「sudo npm install -g –unsafe-perm node-red」だと素直に入る。

Node-REDが自動的に起動させる

引き続きコマンド実行です。

sudo npm install -g pm2

pm2を入れて。

pm2 start `which node-red` -- -v
pm2 save
pm2 startup

自動起動するように設定を作ります。

image

pm2 startup後に、上記のようにさらにコマンドを実行するように促されるので、従って実行して下さい。

sudo reboot

で再起動します。

ネットワークで1880ポートを開ける

image

再起動している間に、ネットワークに移動して、こちらに、書かれているネットワークで1880ポートを開ける作業をします。

「設定」の手順で、「ネットワーク セキュリティ グループ」を新規作成し、以下の内容で、新しい「受信規則」を追加します。 (訳注: このほか、適宜「Virtual Network」や「サブネット」を作成してください。)
名前: node-red-editor
優先度: 1010
プロトコル: TCP
ポート範囲: 1880

に従って、

image

こんな形で設定します。

  • 名前: Node-RED_Port_1880
  • 優先度: 1010
  • プロトコル: TCP
  • 宛先ポート範囲: 1880

追加を押します。

アクセスしてみる

概要に書かれているパブリックIPアドレスへ1880ポートをつけてブラウザからアクセスします。

http://<パブリック IP アドレス>:1880/

このようなアドレスです。

image

無事起動しました。

パスワードを設定する

このままだと、だれでもログインできてしまうのでNode-REDにもパスワードを設定します。

さくらのクラウドのNode-REDスタートアップスクリプトでパスワード設定も出来るようにしたメモ

この時の記事をベースに進めます。

npm init -y

npm 初期設定をして、

image

こういうメッセージが出るが気にしなくて大丈夫。

npm i bcryptjs

パスワード生成するために、bcryptjsをインストール。

今回使うパスワード用のハッシュ値を作成

node -e "console.log(require('bcryptjs').hashSync(process.argv[1], 8));" UI_NODERED_PASSWORD

こちらのコマンドを、 UI_NODERED_PASSWORD の部分を、今回使うパスワードにして実行します。たとえば、ABCDEFGとしたい場合は、

node -e “console.log(require(‘bcryptjs’).hashSync(process.argv[1], 8));” ABCDEFG

となります。

実行して出てきたハッシュ値をメモしておきます。

Node-RED の setting.js で認証設定

セキュリティ : Node-RED日本ユーザ会を参考に、ユーザ名/パスワードによる認証を設定します。

sudo nano ~/.node-red/settings.js

nanoで編集します。

エディタおよび管理APIでのユーザ認証を有効化するためには、 設定ファイルのadminAuthプロパティのコメントアウトを解除します。

とあるように、

image

このように編集して保存します。

再起動

設定を反映させるために pm2 コマンドでNode-REDを再起動します。

pm2 restart node-red

これで、アクセスできれば完了です。

image

しばらく使っていますが、ノードの追加やHTTPレスポンスなど問題なく使えているので、いろいろ試していこうと思います!