https://d226lax1qjow5r.cloudfront.net/blog/blogposts/local-development-nexmo-ngrok-tunnel-dr/nexmo-ngrok-tunnel.jpg

Ngrok トンネルを使用してローカル開発サーバーを Vonage API に接続する

最終更新日 November 12, 2020

所要時間:2 分

多くの場合 会議用のデモを開発するときブログ記事や ブログ記事や "ハウツー"あるいは 開発者ポータル用のガイドを作成するVonageのAPIからアクセスできるように、ローカルの開発者環境を公共のインターネットに公開する必要があります。

ngrok diagrangrok diagra

なぜngrokを使うのか?

私たちのデベロッパー・リレーション・チームはリモートで、出張も多いので、自宅で作業することもあれば、ロンドンのオフィスや喫茶店で作業することもあります。インバウンドのWebhookを受信するためには、ローカルサーバーをセットアップし、正しいポートを転送し、DNSに新しいパブリックIPがあることを確認し、伝播させ、SSLを設定するなどの作業が必要です。これは非現実的なだけでなく、状況によってはおそらく不可能だろう。しかし ngrokを使えば、1つのコマンドでhttpsをサポートした独自のサブドメイン上に、ローカルサーバーを公開することができます。

ngrok in terminalngrok in terminal

ただし、企業ネットワーク上にいる場合は、まずネットワーク管理者を通さずにリモートトンネルを作成しないようご注意ください。詳しくは以下のセキュリティに関するセクションをご覧ください。

もうひとつの選択肢は、コードをリモート・サーバーにデプロイすることだ。HerokuやDigital Oceanのようなものを使えば、この方法はどんどん簡単になってきているが、それでも多少のセットアップと、通常はある程度のコストがかかる。しかし、もし私がやりたいことが NCCO(コール・コントロール・オブジェクト)JSONファイルを提供するだけなら、他のサービスより簡単なものはないだろう;

python -m SimpleHTTPServer &> /dev/null & ngrok http 8000

ngrokを使い始める

ngrok ngrokのサイトには、ほとんどの主要なオペレーティング・システム用のダウンロードが用意されている。また、ngrokのインストール方法の説明もあります。私は ngrokバイナリ/usr/local/bin(Mac/Linuxでは、バイナリへの完全なパスを指定しなくてもコマンドラインから簡単に起動できるように、ngrokのバイナリを(または$PATH上の別のディレクトリに)移動することが多い。 How-to Geekに、ウィンドウズのシステムPATHの編集に関する素晴らしい記事がある。を参照してほしい。

ngrokをインストールしたら、次のように実行するだけである。 8000はあなたのローカルサーバーのポート番号です。

ngrok http 8000

これでターミナルでngrokが起動する。

開始すると、ngrokが作成した公開URLや、トンネルが動作している地域、現在の接続数、受信したHTTPリクエストのログなどの情報が表示されます。

ngrok はターミナルで実行されるので、ローカルサーバー用にターミナルウィンドウを開き、ngrok 用に別のターミナルウィンドウを開く必要があるでしょう。あるいは GNU Screenまたは tmux.どちらもドキュメントはかなり読み応えがある。の基本に関する良い情報を見つけることができます。 screenクイックスタートGNUスクリーン <operating system>"

リクエストの再生

ngrokの最も便利な機能の一つは、リクエストを再生する機能である。

ngrok web consolengrok web console

ngrok を起動すると、表示される URL のひとつに Web インターフェースがあります。このウェブインターフェイスは、通常ポート 4040 であなたのマシン上でローカルに実行され、リクエストに関するメトリクスを含む、実行中のトンネルに関する様々な情報を提供します。

inspectタブには、受信したすべてのリクエストのリストもあります。このリストには、リクエストの種類(GET、POST、HEADなど)、リクエストされたURL、ローカルサーバーから送信されたHTTPレスポンスコード(200、404など)が含まれます。リクエストをクリックすると、ヘッダーや生のリクエスト/レスポンスなど、より詳細な情報が表示されます。これは、APIインタラクションをデバッグする際に非常に有用です。

リストからリクエストを選択した後 リプレイができます。これはローカルサーバーにリクエストを再送します!ですから、例えばあなたが Vonage SMS APIを使用するアプリケーションを開発している場合、Webhook をトリガーするために別の SMS を送信するのではなく、単に最後の受信 SMS リクエストを再生することができます。

追加機能

ngrokにはAPIを含む多くの追加機能があります。 ドキュメントを読んで、利用可能なすべての機能に慣れることを強くお勧めします。ここでは、開発中に使用する、より一般的な機能のいくつかを紹介するだけです。

有料機能

これまで説明してきたことはすべて、ngrokのアカウントがなくても、あるいは無料のアカウントでも利用できる。以下の の機能は、ngrokの有料サブスクリプションでのみ利用可能です。しかし、非常に便利だと思うので、載せておきます。

  • カスタムドメインと予約ドメイン.デフォルトでは、ngrok はランダムな 16 進数の名前をトンネルに割り当てます。この名前は ngrok を再起動するたびに変わります(例えば、誤ってターミナルを閉じてしまった場合など)。ターミナルを再起動するたびに、すべてのWebhook URLを更新しなければならないのは煩わしいことです。カスタムドメインまたは予約ドメインを使用すると、ngrokを実行するたびにURLは同じままになります。独自の カスタムドメイン.

  • IPホワイトリスト(設定するには ngrokダッシュボード).ローカルネットワークにトンネルを作成することは、セキュリティ上の懸念がないわけではありませんが、ローカルサーバーにアクセスできるIPアドレスのみをホワイトリストに登録することで、これらの懸念を軽減することができます。以下を参照してください。 ホワイトリストに登録すべきVonage IP範囲のリストを参照してください。

セキュリティへの懸念

ネットワーク管理者の一日を台無しにしたいのであれば、彼らのローカルネットワークにオープン・リバース・プロキシを実行したいと伝えてください。ngrokはVonageで毎日使用している素晴らしいアプリケーションですが、ネットワーク・ファイアウォールを通過するトンネリングのセキュリティ上の影響に注意する必要があります。仕事用のネットワークでngrokを使用する前に、ネットワーク管理者に相談してください。

自宅や喫茶店など、ネットワーク管理者がいない場所、またはあなたがネットワーク管理者である場所で実行する場合は、次のように ngrok を使用することをお勧めします。 HTTPベーシック認証, IPホワイトリストそして HTTPS強制オン.

に関する情報は VonageでHTTPベーシック認証を使用するおよび パブリックIPアドレスナレッジベースの ナレッジベース.

代替案

シェア:

https://a.storyblok.com/f/270183/150x150/a3d03a85fd/placeholder.svg
Aaron Bassettヴォネージの卒業生

アーロンはNexmoの開発者支持者だった。ベテランのソフトウェア・エンジニアであり、デジタル・アーティスト志望でもあるアーロンは、コードや電子機器、時にはその両方を使って何かを作っているところをよく見かける。彼が何か新しいことに取り組んでいるときは、空気中の部品が燃える匂いでわかるのが通例だ。