さくらのクラウドのスタートアップスクリプトでNode-REDをインストールするメモ

さくらのクラウドの調べ物をしている際に、スタートアップスクリプトでNode-REDがインストールできるということでメモしておきます。

この記事は2017/08/25時点でのさくらのクラウドを元に記事を書いております、今後の最新環境では動作や操作が異なる可能性がございます。

スタートアップスクリプトとは

スタートアップスクリプトは新たにサーバを作成する際、任意の「スタートアップスクリプト」指定しておくと、起動時にそれらを自動実行する機能です。

スタートアップスクリプト | さくらのクラウドニュース

スタートアップスクリプトにNode-REDがあることを知り、これはやってみようと思い立った次第です。

スタートアップスクリプト「Node-RED」をリリースしました | さくらのクラウドニュース

パブリックスクリプトの方に用意されています。

パブリックスクリプト | さくらのクラウドニュース

やってみる

この記事ではさくらのクラウドにはすでにアカウントが作成済みで進めます。

image

さくらのクラウド(IaaS)をクリック。手順詳細は、以下のリンクを参考にしましょう。

サーバの作成・削除 – さくらのサポート情報

を元に「シンプルモードのチェックをはずした場合」の作業を進めます。

image

基本的には上記のサーバの作成・削除の流れを踏襲しますが、スタートアップスクリプトにNode-REDを指定するところが最初は慣れず迷ったのでメモします。

ディスクの修正のところでスタートアップスクリプトを指定します。

image

スタートアップスクリプトのチェックがあるのでshellをクリックします。

image

配置するスタートアップスクリプトを選択します。

image

[public] Node-REDをクリックして指定します。これで設定ができます。

image

他の設定を一通り行ったらサーバーを作成します。サーバー追加のステータスがわかりやすい!!

image

しばらく待つとサーバーが作られます。

image

出来たてだとスタートアップスクリプトが走りきってない場合があるので少し待ちます。

image

Node-REDのアドレスはサーバーの詳細でNICが見れるので、そのIPv4参考にします。

image

http://<NICに書いてあるIPv4 IPアドレス>:1880/でアクセスすると無事に表示されました。

スクリプトの詳細は以下に置いてあるようなので、参考にしてください。

cloud-startupscripts/node-red.sh at master · sakura-internet/cloud-startupscripts

認証をかける

このままだと、誰でも見れてしまうので認証をかけましょう。

サーバーにSSHで入って、

pm2 logs node-red

と打つとログが見れます。起動が直前であればNode-REDのログを確認できるのでsetting.jsの位置を確認します。

image

普段の起動とはちょっと違う場所に置かれるので気をつけましょう。

0|node-red | 24 Aug 22:33:21 - [info] Settings file  : /root/.sacloud-api/notes/root/settings.js
0|node-red | 24 Aug 22:33:21 - [info] User directory : /root/.sacloud-api/notes/root
0|node-red | 24 Aug 22:33:21 - [info] Flows file     : /root/.sacloud-api/notes/root/flows_Node-RED-server001.json

/root/.sacloud-api/notes/root/settings.js を修正します。Node-RED : Securityのあたりを参考に設定しましょう。平文のパスワードでなくハッシュ値に変換して対応するところが、ちょっとハマりましたが、後は大丈夫でした。

一度、設定したら、再起動を忘れないようにしましょう。

pm2 stop node-red

コマンドで停止した後に、

pm2 start node-red

コマンドを実行して再起動します。

image

MQTTブローカーの1883ポート開放

node-red-contrib-mqtt-brokerでMQTTブローカーを設定してみました。

image

ノードの追加もエディタからちゃんと行えます!

ですがどうもポートが閉じられているのか、最初つながりませんでした。

image

このように配置しても外部からMQTTがつながりません。

これは、CentOSのファイアウォールを開放すれば良いようです。

cloud-startupscripts/node-red.sh at master · sakura-internet/cloud-startupscriptsの最下部のファイアウォールのコードを参考にSSHでログインして以下を実行しました。

firewall-cmd --add-port=1883/tcp --permanent || exit 1
firewall-cmd --reload || exit 1

これを実行すると外部からつながるようになりました。

まとめ

実を言うと、以前さくらのVPSにCentOSをいれてNode-REDを入れたもののポートの開放か何かでうまく動かなくなってしまい挫折したことがあり、軽く怯えていたのですが、今回のさくらのクラウドのスタートアップスクリプトで、とても簡単にインストールすることが出来ました。

もともとよく使う場所でNode-REDを手軽に立ち上げられるところがまた一つ増えたのはとてもうれしいです。また色々と試すプロトタイプをつくるときに使ってみようと思います。

それでは、よき、さくらのクラウド & Node-RED Life を!