Tooling13 September 20265 mnt baca

URL Tunnel Anda Berubah Setiap Restart. URL Webhook Anda Tidak Harus Begitu.

Tiap restart, ngrok memberi URL baru yang harus Anda tempel ulang di Stripe atau Shopify. Pasang satu URL permanen di provider, arahkan ke tunnel hari ini.

TUNNEL · URL-NYA TERIKAT PADA LAPTOPStripetunnelberganti, kedaluwarsalaptopmode tidurevent hilangRELAY · URL-NYA TIDAK TERIKAT PADA APA PUNStriperelaysimpan + 200prodlaptopbisa diputar ulang nanti
Provider seharusnya berbicara dengan alamat yang bertahan lebih lama daripada terminal Anda.

Anda menjalankan ngrok http 3000. Anda menyalin URL-nya. Anda menempelkannya ke dashboard Stripe. Anda men-debug selama satu jam, menutup laptop, dan besok paginya seluruh ritual itu terulang karena URL-nya sudah hilang.

Ini bukan masalah sulit. Ini luka kecil yang terbuka lagi setiap hari, dan sebagian besar jawabannya adalah “bayar untuk domain statis” atau “pakai tunnel lain”. Ada pilihan ketiga yang tidak memakan biaya dan memperbaikinya di lapisan yang berbeda.

Daftarkan alamat yang bertahan lebih lama daripada terminal

Provider tidak perlu tahu di mana laptop Anda berada. Provider butuh satu URL yang selalu ada.

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

Provider berbicara dengan separuh yang permanen. Anda mengganti separuh yang sementara setiap kali tunnel restart, di satu kolom, tanpa menyentuh dashboard provider. Perubahan itu sampai ke setiap lokasi edge dalam waktu sekitar satu menit.

Itulah seluruh idenya. Sisa artikel ini menjelaskan mengapa cara ini sepadan dengan lima menit Anda, dan di mana cara ini tidak membantu.

Shopify membuat ini lebih parah daripada luka kecil

Di sebagian besar provider, URL yang basi berarti pengiriman gagal yang bisa Anda abaikan. Di Shopify, itu bisa berarti kehilangan subscription.

Subscription yang dibuat lewat Shopify Admin API tetap memakai URL yang ditetapkan saat dibuat. Jalankan dev server Anda, dapatkan URL tunnel baru, dan subscription-nya masih menunjuk ke alamat kemarin. Shopify mengirim ke sana, gagal, mencoba ulang (retry), dan setelah cukup banyak kegagalan berturut-turut menghapus subscription sepenuhnya. Kini tidak ada yang tiba bahkan setelah Anda memperbaiki tunnel, dan kegagalannya terlihat seperti “Shopify berhenti mengirim”, bukan “saya mengganti URL”.

WooCommerce menonaktifkan webhook setelah lebih dari lima kegagalan berturut-turut. Stripe menonaktifkan endpoint setelah kegagalan yang terus-menerus. URL yang berubah setiap hari adalah mesin penghasil kegagalan berturut-turut.

Yang dilakukan cara ini dan tidak dilakukan domain statis berbayar

Domain tunnel statis menyelesaikan urusan tempel ulang. Domain itu tidak menyelesaikan bagian ketika laptop Anda tertutup.

Dengan relay di depan, event yang tiba saat tunnel Anda mati tetap diterima, diverifikasi, dan ditulis ke log sebelum pengiriman apa pun dicoba. Pengiriman ke mesin Anda gagal, dan itu memang diharapkan dan tidak masalah. Event-nya masih ada.

  • Kembali, jalankan tunnel, tekan tombol Replay (putar ulang). Event yang gagal selama Anda pergi dikirim lagi ke handler Anda, mulai dari yang terlama
  • Memutar ulang tidak mengurangi kuota bulanan Anda, meskipun ada batas harian dan memakai jatah komputasi (compute allowance) Anda
  • Anda bisa melihat persis apa yang dikirim provider, header dan body-nya, alih-alih menebaknya dari handler yang tidak pernah berjalan

Paket Free berisi satu App (satu URL masuk untuk satu sumber webhook), 10.000 event sebulan dan 1.000 sehari, lebih dari yang dipakai siklus pengembangan. Di paket itu, event dapat diputar ulang selama tiga hari, dan itulah batas yang jujur: ini jaring pengaman untuk akhir pekan, bukan arsip.

Di mana cara ini tidak membantu

  • Cara ini tidak membuat handler Anda tetap berjalan. Selama tunnel mati, pengiriman ke sana gagal. Yang Anda dapat adalah log dan tombol putar ulang, bukan pengiriman ke mesin yang sedang mati
  • Ini bukan alasan untuk melewatkan verifikasi tanda tangan (signature). Header asli dari provider diteruskan utuh, jadi tanda tangan yang Anda periksa sebelumnya tetap tanda tangan yang Anda periksa sekarang
  • Untuk production, tunnel seharusnya hilang sama sekali. Itu argumen yang berbeda, dan kami sudah membahasnya di Mengapa ngrok Saja Tidak Cukup. ngrok tetap tool yang tepat untuk siklus pengembangan; artikel ini hanya membahas URL yang terus berganti akibat ngrok

Cara menyiapkannya

  1. Buat App. Anda langsung mendapat in.anyhook.net/{you}/{app}
  2. Masukkan URL itu ke dashboard provider sekali saja
  3. Atur tujuan ke URL tunnel Anda saat ini
  4. Kirim event uji dari halaman App dan lihat event itu tiba

Besok, saat tunnel memberi Anda alamat baru, Anda hanya mengubah langkah 3, tidak ada yang lain. Jika nanti Anda mengganti nama App atau akun Anda, URL lama tetap diarahkan alih-alih menghasilkan 404, karena URL yang sudah Anda berikan ke provider tidak boleh berhenti berfungsi.

Kesimpulan

Dashboard provider adalah tempat yang salah untuk menyimpan alamat yang berubah setiap hari. Taruh sesuatu yang permanen di sana, simpan bagian yang sementara di sisi Anda, dan ritual harian itu hilang bersama penghitung pengiriman gagal yang diam-diam terus bertambah karenanya.

Jika Anda ingin versi yang lebih mendalam, tentang verifikasi tanda tangan yang tetap berlaku saat percobaan ulang dan apa yang harus dilakukan saat provider sudah menonaktifkan Anda, mulai dari Memverifikasi Tanda Tangan Webhook dan Cara Memutar Ulang Webhook.

Semua artikel13 September 2026 · 5 mnt

Berhenti kehilangan webhook.

Ganti satu URL. Dapatkan percobaan ulang, log event, dan putar ulang sekali klik. Atau lihat dulu: daftar dan jalankan latihan gangguan 30 detik, lalu saksikan event tetap selamat saat server Anda mati. Tidak perlu server.