ngrokの導入

ngrokとは

ngrokエングロクと読む)は、httpのトンネリングサービスです。

ngrokでホストされるURL(例:http://xxxx.ngrok.io/ )へのアクセスをローカル環境のwebサーバー(http://localhost:3000 など)にトンネリングしてくれます。

例えば、stripeやLINE、その他クラウドサービスのwebhook処理を開発する際に、インターネット上に本番やステージングのwebサーバーを構築する前に、ローカル開発環境でwebhookへの対応コードを実装、テストすることができるようになります。

この記事では、ngrokの開発環境を用意する手順を紹介します。

ngrokのインストール

公式サイトでダウンロードして、インストールすることもできますが、インストールはmacOSの場合であれば、homebrewを使うほうが楽です。以下のコマンドでインストールできます。

% brew install --cask ngrok

ngrokアカウントのサインアップ

ngrokを使うためには、サービスの利用登録が必要なので、公式サイトでサインアップを行ってください。

auth tokenの設定

サインアップするとログイン後のページにauthtokenが表示されているので、それをコピーして、以下のように、コンソールから設定します。

% ngrok authtoken <your-token>

そうすると、~/.ngrok2/ngrok.yml にtokenの値が書き込まれてサインアップしたngrokアカウントが認識されるようになります。

ngrokエージェントの起動

トンネリングを開始するためには、以下のようなコマンドを実行します。

% ngrok http 3000

これで、以下のような情報がコンソールに表示され、トンネリングに使えるURLが分かります。

ngrok by @inconshreveable                                                                                                                                                                                       (Ctrl+C to quit)
                                                                                                                                                                                                                                
Session Status                online                                                                                                                                                                                            
Account                       <your account name>(Plan: Basic)                                                                                                                                                                        
Update                        update available (version 2.3.40, Ctrl-U to update)                                                                                                                                               
Version                       2.3.35                                                                                                                                                                                            
Region                        United States (us)                                                                                                                                                                                
Web Interface                 http://127.0.0.1:4040                                                                                                                                                                             
Forwarding                    http://<your-random-subdomain>.ngrok.io -> http://localhost:3000                                                                                                                                             
Forwarding                    https://<your-random-subdomain>.ngrok.io -> http://localhost:3000                                                                                                                                            
                                                                                                                                                                                                                                
Connections                   ttl     opn     rt1     rt5     p50     p90                                                                                                                                                       
                              0       0       0.00    0.00    0.00    0.00                                                                                                                                                      
                                                                                               

この記事では <your-random-subdomain> と記載しましたが、ここに、トンネリングで使えるインターネットアクセス可能なURLが表示され、また、そのURLがローカルのhttp 3000番ポートにトンネリングされているのが分かります。

この一般公開されているURLをクラウドサービスのwebhookのエンドポイントとして指定しておけば、ローカル環境のwebサーバーを使って動作確認をしながら開発を行うことができます。

ngrokのサブドメインの固定

無償のアカウントでは、ngrokを起動するたびに、http://<your-random-subdomain>.ngrok.io<your-random-subdomain> の部分がランダムなサブドメインになってしまい、そのたびに、クラウドサービス側の呼び出し先設定を更新しなければなりません。

これは、ngrokの有償登録をすることで固定化できます。有償登録をすると、以下のようにサブドメインを他のユーザーが使っていない任意の文字列に固定できます。

% ngrok http 3000 -subdomain=<任意の固定したいサブドメイン>

ngrokのアップデート

ngrok起動中のコンソールでCtrl+U でアップデートが開始されます。

本サイトの更新情報は、Twitterの株式会社プレセナ・ストラテジック・パートナーズエンジニア公式アカウントで発信しています。ご確認ください。

最終更新