ツール2026年9月13日5 分で読めます

トンネルの URL は再起動のたびに変わる。Webhook の URL まで変わる必要はない。

ngrok は再起動のたびに URL が変わり、Stripe や Shopify に貼り直すはめになります。プロバイダーには固定の URL を登録し、その日に動くトンネルに向けてください。

トンネル · URL がノート PC に縛られるStripeトンネルURL が変わり、失効するノート PCスリープ中イベント消失中継 · URL は何にも縛られないStripe中継サービス永続化 + 200本番環境ノート PC後から再送できる
プロバイダーが話しかける相手は、ターミナルより長く生きるアドレスであるべきだ。

ngrok http 3000 を実行します。URL をコピーします。Stripe のダッシュボードに貼り付けます。1 時間デバッグしてノート PC を閉じると、翌朝には URL が消えているので、また同じ儀式を繰り返すことになります。

難しい問題ではありません。毎日開き直す小さな切り傷のようなもので、よくある答えはたいてい「固定ドメインにお金を払う」か「別のトンネルを使う」です。3 つ目の選択肢があり、費用はかからず、別の層で問題を解決します。

ターミナルより長く生きるアドレスを登録する

プロバイダーが、ノート PC の居場所を知る必要はありません。必要なのは、常にそこにある URL 1 つです。

Stripe / Shopify / GitHub
        │
        ▼
in.anyhook.net/you/dev      ← registered once, never changes
        │
        ▼
https://whatever-ngrok-gave-you-today.ngrok-free.app/webhook

プロバイダーが話しかけるのは、変わらないほうの半分です。一時的なほうの半分は、トンネルが再起動するたびに、プロバイダーのダッシュボードに触れることなく、入力欄 1 つで変更します。変更は 1 分ほどですべてのエッジ拠点に反映されます。

考え方はこれで全部です。この記事の残りは、それが 5 分をかける価値がある理由と、役に立たない場面についてです。

Shopify では、小さな切り傷では済まない

ほとんどのプロバイダーでは、古い URL は無視できる配信の失敗を意味するだけです。Shopify では、サブスクリプションを失うおそれがあります。

Shopify の Admin API で作成したサブスクリプションは、作成時の URL を保持し続けます。開発サーバーを起動して新しいトンネルの URL を得ても、サブスクリプションは昨日のアドレスを指したままです。Shopify はそこに配信して失敗し、リトライし、連続して十分な回数失敗すると、サブスクリプションを完全に削除します。そうなるとトンネルを直しても何も届かず、障害は「URL を変えた」ではなく「Shopify が送ってこなくなった」ように見えます。

WooCommerce は、5 回を超えて連続で失敗すると Webhook を無効にします。Stripe は、失敗が続くとエンドポイントを無効にします。毎日変わる URL は、連続した失敗を生み出す装置です。

有料の固定ドメインにはできないこと

トンネルの固定ドメインで、貼り直しは解決します。ノート PC が閉じている問題は解決しません。

前に中継サービスを置けば、トンネルが止まっている間に届いたイベントも受信され、検証され、配信を試みる前にログに書き込まれます。自分のマシンへの配信は失敗しますが、それは想定どおりで問題ありません。イベントは残っています。

  • 戻ってきたらトンネルを起動し、再送します。離れている間に失敗したイベントが、古いものから順にもう一度ハンドラーに送られます
  • 再送は月間クォータにカウントされません。ただし 1 日の再送上限があり、コンピュート枠を消費します
  • 一度も動かなかったハンドラーから推測するのではなく、プロバイダーが送ったもの(ヘッダーとボディ)を正確に確認できます

Free プランでは、App(Webhook の送信元ごとに作る受信設定)1 つ、月 10,000 件、1 日 1,000 件まで使え、開発で使う量には十分です。このプランでイベントを再送できるのは 3 日間で、それが正直な限界です:これは週末のための安全網であって、アーカイブではありません。

役に立たない場面

  • ハンドラーを動かし続けてくれるわけではありません。トンネルが止まっている間、そこへの配信は失敗します。手に入るのはログと再送ボタンで、電源の切れたマシンへの配信ではありません
  • 署名検証を省いてよい理由にはなりません。プロバイダーの元のヘッダーはそのまま転送されるので、これまで検証していた署名を、引き続き検証することになります
  • 本番環境では、トンネルそのものをなくすべきです。これは別の議論で、「ngrok だけでは足りない理由」で書きました。開発のサイクルには ngrok が引き続き適したツールです。この記事が扱うのは、ngrok が生む URL の入れ替わりだけです

設定手順

  1. App を作成します。すぐに in.anyhook.net/{you}/{app} が発行されます
  2. その URL を、プロバイダーのダッシュボードに一度だけ設定します
  3. 転送先に、現在のトンネルの URL を設定します
  4. App のページからテストイベントを送り、届くのを確認します

翌日、トンネルが新しいアドレスを発行したら、変えるのは手順 3 だけです。後で App やアカウントの名前を変えても、古い URL は引き続きルーティングされ、404 にはなりません。一度プロバイダーに渡した URL は、決して動かなくなってはならないからです。

まとめ

毎日変わるアドレスを、プロバイダーのダッシュボードに置くのは間違いです。そこには変わらないものを置き、一時的な部分は自分の側で持ってください。そうすれば毎日の儀式はなくなり、それがひそかに積み上げていた配信失敗のカウンターも増えなくなります。

リトライをまたいでも署名検証が通る仕組みや、プロバイダーにすでに無効化されたときの対処など、より深い話が知りたいなら、Webhook の署名検証の記事と Webhook を再送する方法の記事から読んでください。

すべての記事2026年9月13日 · 5 分

Webhook を、もう取りこぼさない。

URL を 1 つ変えるだけで、リトライ、イベントログ、1 クリックでの再送が使えます。先に動きを見ることもできます。新規登録して 30 秒の障害訓練を実行すると、サーバーがダウンしていてもイベントが失われない様子を確認できます。サーバーを用意する必要はありません。