local環境のNode-REDにngrokが頼もしすぎる


概要

Node-REDの動作環境はIBM Cloudが有名ですが、もちろんローカルPCでも使用することが出来ます。しかし、その場合localhostで動作する為、LANの外からアクセスをすることが出来ず、Webhookなどが使用できません。

今回は、この悩みを解消してくれた『ngrok』というツールがとても良かったのでご紹介したいと思います。

動作環境

システム バージョン
macOS Catalina 10.15.6
node-red 1.1.2
ngrok 2.3.35

Node-REDをローカル環境で動作させる場合、いくつかの選択肢があります。(公式を参照)
今回はnpmを用いて、Node-REDをインストールした環境と仮定します。

ngrok

ngrokとは、localhostのサーバーに対して、外部からもアクセスすることのできるパブリックURLを、ngrok起動ごとに割り当てることができます。これによって、デプロイせずにWebサイトのデモを行うことや、開発環境下でWebhookを使用することができるようになります。

使用方法

事前準備

公式サイトより、アカウントを作成します。
現在はGoogleとGithubでのシングルサインオンに対応しているので、そちらのアカウントからでもログインすることが出来ます。

②ログイン後、ngrokをダウンロードし、zipファイルを解凍。
※実行ファイルをホームディレクトリに移動させておきます。

③公式サイトの「Setup&Installation」> 「2. Connect your account」にある以下のようなコマンドを打つことで、新たに隠しフォルダとymlファイルが生成され、作成したアカウント情報との紐付けが行われます。

./ngrok authtoken  { 認証トークン }

./ngrok の部分は実行ファイルが存在しているパスを示しているので、ホームディレクトリ直下に置かない場合は任意のパスを記述します。

実行

npmでNode-REDをインストールした場合、デフォルトで使用しているポート番号は1880なので以下のようなコマンドで起動することが出来ます。

./ngrok http 1880

ターミナルに表示される部分を一部抜粋、、

Forwarding           http://〇〇〇〇.ngrok.io -> http://localhost:1880
Forwarding           https://〇〇〇〇.ngrok.io -> http://localhost:1880

ブラウザからhttp://〇〇〇〇.ngrok.ioにアクセスすると、Node-REDエディタに移ることが出来ます。
以降はhttp://〇〇〇〇.ngrok.ioをエンドポイントとして、Webhookなどを使用することができます。