Cara Expose Localhost dengan Cloudflare Tunnel

3 menit baca.

Testing webhook dari GitHub, Slack, Stripe, atau service pihak ketiga lain di localhost itu ribet. Mereka butuh URL publik buat POST, dan http://localhost:3000 tidak bisa diakses dari internet. Cloudflare Tunnel menyelesaikan ini — satu command, dapat HTTPS URL langsung, tanpa perlu buat akun.

Install cloudflared

macOS:

brew install cloudflare/cloudflare/cloudflared

Linux (Debian/Ubuntu):

curl -L https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb -o cloudflared.deb
sudo dpkg -i cloudflared.deb

Atau ambil binary-nya langsung dari halaman releases kalau pakai distro lain.

Jalankan tunnel

cloudflared tunnel --url http://localhost:3000

Beberapa detik kemudian muncul:

+----------------------------------------------------------+
|  Your quick Tunnel has been created! Visit it at        |
|  https://cotton-steal-most-sage.trycloudflare.com        |
+----------------------------------------------------------+

URL itu langsung aktif. Semua request ke URL tersebut akan masuk ke server lokalmu.

Pakai untuk webhook

Copy tunnel URL-nya terus tambahkan path webhook.

GitHub: Repo → Settings → Webhooks → Add webhook

https://cotton-steal-most-sage.trycloudflare.com/api/webhooks/github

Stripe: Dashboard → Webhooks → Add endpoint. Sama saja. Atau kalau pakai Stripe, bisa langsung stripe listen yang sudah handle tunneling otomatis.

Slack, Twilio, SendGrid — service apapun yang butuh callback URL, caranya sama.

Server lokalmu terima webhook persis seperti di production. Log payload-nya, pasang breakpoint di handler, iterasi tanpa perlu deploy.

Satu catatan: URL-nya berubah

Setiap kali jalankan cloudflared tunnel --url, subdomain-nya berbeda. Kalau sudah daftar https://cotton-steal-most-sage.trycloudflare.com/api/webhooks/github di GitHub hari ini, besok perlu update lagi karena dapat subdomain baru.

Kalau cuman testing sebentar, ini tidak masalah. Tapi kalau sama webhook punya masalah berhari-hari, buat akun Cloudflare gratis dan setup named tunnel dengan subdomain milikmu sendiri. Named tunnel tidak berubah setiap restart.

Quick tunnel juga tidak ada autentikasi. URL-nya random jadi susah ditebak, tapi bukan tidak mungkin. Untuk testing webhook ini masih aman — webhook signature sudah diverifikasi di server side. Tapi jangan biarkan quick tunnel jalan semalaman yang arahnya ke server lokal berisi data sensitif.

Selesai

cloudflared tunnel --url http://localhost:3000 dapat public HTTPS URL dalam hitungan detik. Tanpa signup, tanpa konfigurasi. Paste ke webhook dashboard, biarkan tunnel jalan bareng dev server, dan testing seperti di production.

Latest Posts