さくらのクラウドの調べ物をしている際に、スタートアップスクリプトでNode-REDがインストールできるということでメモしておきます。
この記事は2017/08/25時点でのさくらのクラウドを元に記事を書いております、今後の最新環境では動作や操作が異なる可能性がございます。
スタートアップスクリプトとは
スタートアップスクリプトは新たにサーバを作成する際、任意の「スタートアップスクリプト」指定しておくと、起動時にそれらを自動実行する機能です。
スタートアップスクリプトにNode-REDがあることを知り、これはやってみようと思い立った次第です。
スタートアップスクリプト「Node-RED」をリリースしました | さくらのクラウドニュース
パブリックスクリプトの方に用意されています。
やってみる
この記事ではさくらのクラウドにはすでにアカウントが作成済みで進めます。
さくらのクラウド(IaaS)をクリック。手順詳細は、以下のリンクを参考にしましょう。
を元に「シンプルモードのチェックをはずした場合」の作業を進めます。
基本的には上記のサーバの作成・削除の流れを踏襲しますが、スタートアップスクリプトにNode-REDを指定するところが最初は慣れず迷ったのでメモします。
ディスクの修正のところでスタートアップスクリプトを指定します。
スタートアップスクリプトのチェックがあるのでshellをクリックします。
配置するスタートアップスクリプトを選択します。
[public] Node-REDをクリックして指定します。これで設定ができます。
他の設定を一通り行ったらサーバーを作成します。サーバー追加のステータスがわかりやすい!!
しばらく待つとサーバーが作られます。
出来たてだとスタートアップスクリプトが走りきってない場合があるので少し待ちます。
Node-REDのアドレスはサーバーの詳細でNICが見れるので、そのIPv4参考にします。
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の位置を確認します。
普段の起動とはちょっと違う場所に置かれるので気をつけましょう。
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
コマンドを実行して再起動します。
MQTTブローカーの1883ポート開放
node-red-contrib-mqtt-brokerでMQTTブローカーを設定してみました。
ノードの追加もエディタからちゃんと行えます!
ですがどうもポートが閉じられているのか、最初つながりませんでした。
このように配置しても外部から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 を!