1. ngrokとは

ngrokは、ローカル環境で稼働するWebアプリ/APIなどをインターネットから到達可能なURL(エンドポイント)として公開するためのサービスである。公式ドキュメント上は「グローバル分散のリバースプロキシ」として説明されている。

ngrok | API Gateway, Kubernetes Ingress, Webhook Gateway

2. 使用例

  • Webhook受信のローカル検証(GitHub/Stripe等のWebhookを手元に流す)
  • モバイル端末・別PCからの動作確認(同一LAN不要)
  • 社内レビュー用の一時公開(デモ、QA、PoC)
  • NAT/ファイアウォール配下のサービスの外部公開(ポート開放やVPNなしで到達性を作る)

3. 仕組み

  • ngrokはngrokクラウド側で外部からの通信を受け、手元のマシンで稼働するngrok agent(CLI/SDK)へトンネルし、ローカルの上流(upstream)サービスへ転送する。
  • つまり、ローカルにHTTPサーバ(例: localhost:3000)が存在すれば、ngrokが「外部から到達可能な入口URL」を生成する。

4. 最小手順(CLI利用の基本)

  1. インストール(OS別手順は公式のQuickstartを参照)
  2. authtoken設定(アカウントに紐づくトークンでagentが認証を行う)
  3. ローカルポートを公開(例:HTTP 3000番)
  • 例:ngrok http 3000

5. 主な機能

5.1 トラフィックの確認(デバッグ)

  • ngrok agentにはリアルタイムの通信検査(inspection)UIが存在し、リクエスト/レスポンスを確認できる。

5.2 アクセス制御(認証/制限)

  • エンドポイントに対して、Basic認証、OAuth、IP制限、Webhook検証、JWT、mTLS、OIDC、SAML等をポリシーとして適用可能である(機能はプラン/構成によって利用条件が存在する)。

5.3 ドメイン(URL)の扱い

  • 無料プランは開発用ドメイン(dev domain)に制約があり、ドメイン機能にはプランによる差異が存在する。

6. 制約・注意点(運用観点)

  • 公開URLは“インターネットに開く入口”となるため、デフォルト公開のまま運用すべきではない(認証/IP制限/検証を付与する必要がある)。
  • Webhook用途では、署名検証(Webhook Verification)等を併用し、意図しないリクエストを排除する。
  • authtokenは資格情報として扱い、漏えい時の影響を考慮すべきである(公式は「エージェントごとに別トークン」等の運用を推奨している)。

7. 料金体系の把握ポイント

  • 公式に「Pricing and Limits」「Free Plan Limits」ページが存在し、無料枠の制限と有料プランの制限/課金は分けて記載されている。

8. 代替候補(要件別に検討)

  • 「ゼロトラスト寄りの到達性」「恒久的な社内アクセス」を求める場合、Cloudflare Tunnel / Tailscale 等も比較対象となる(用途・制約が異なるため要件起点で選定すべきである)。