Cloudflare Tunnel adalah: Cara Kerja dan Panduan cloudflared
Cloudflare Tunnel adalah layanan dari Cloudflare untuk membuka aplikasi yang berjalan di laptop, server rumahan, atau VPS ke internet tanpa membuka satu pun port inbound. Kamu tidak perlu IP publik, tidak perlu port forwarding di router, dan firewall server bisa tetap menutup semua port masuk.
Caranya, sebuah program kecil bernama cloudflared berjalan di mesin kamu dan membuat koneksi keluar (outbound) ke jaringan Cloudflare. Pengunjung mengakses domain kamu, Cloudflare meneruskan request lewat koneksi itu, lalu cloudflared menyerahkannya ke aplikasi lokal.
Artikel ini membahas cara kerja Cloudflare Tunnel, kapan berguna, langkah setup dengan cloudflared, quick tunnel untuk tes cepat, serta kelebihan dan kekurangannya.
Baca juga: Cara Port Forwarding di VPS dan Cloudflare + Helipod: Kenapa Grey Cloud?
Cara Kerja Cloudflare Tunnel#
Pada hosting biasa, server menunggu koneksi masuk di port 80 atau 443. Artinya server harus punya IP publik dan port itu harus terbuka. Cloudflare Tunnel membalik arahnya:
cloudflareddi mesin kamu membuka koneksi keluar ke beberapa server edge Cloudflare.- Pengunjung membuka
app.domainkamu.com, yang DNS-nya mengarah ke tunnel kamu di Cloudflare. - Cloudflare mengirim request lewat koneksi yang sudah terbuka tadi.
cloudflaredmeneruskan request ke service lokal, misalnyahttp://localhost:3000.
Karena semua koneksi berawal dari dalam, mesin kamu tidak terlihat langsung dari internet. Ini juga yang membuat tunnel tetap jalan di belakang NAT, CGNAT dari ISP, atau jaringan kantor.
Kapan Cloudflare Tunnel Berguna?#
| Kasus | Contoh |
|---|---|
| Demo server development | Tunjukkan aplikasi di localhost:3000 ke klien tanpa deploy |
| Home lab | Akses Home Assistant, Nextcloud, atau dashboard di rumah tanpa IP publik |
| Service di VPS tanpa buka port | Panel admin atau API internal tetap di balik firewall |
| SSH atau RDP lewat Zero Trust | Akses server dengan login Cloudflare Access, bukan port 22 terbuka |
| Webhook saat development | Terima callback payment gateway ke mesin lokal |
Untuk SSH dan RDP, kamu bisa memasang kebijakan Cloudflare Access (bagian dari Cloudflare Zero Trust) di depan hostname, sehingga hanya email atau grup tertentu yang boleh masuk.
Setup Cloudflare Tunnel dengan cloudflared#
Syarat utama: domain kamu sudah memakai nameserver Cloudflare. Contoh di bawah memakai Ubuntu atau Debian, tapi perintah cloudflared sama di macOS dan Windows.
1. Install cloudflared#
# Ubuntu/Debian (amd64)
curl -L -o cloudflared.deb https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb
sudo dpkg -i cloudflared.deb
# macOS
brew install cloudflared
cloudflared --version
2. Login ke akun Cloudflare#
cloudflared tunnel login
Perintah ini membuka URL di browser. Pilih domain yang mau dipakai, lalu sertifikat cert.pem tersimpan di ~/.cloudflared/.
3. Buat tunnel#
cloudflared tunnel create app-saya
Output-nya berisi UUID tunnel dan file kredensial ~/.cloudflared/<UUID>.json. Simpan file ini baik-baik, karena siapa pun yang memegangnya bisa menjalankan tunnel kamu.
4. Tulis config.yml dengan aturan ingress#
Buat ~/.cloudflared/config.yml:
tunnel: <UUID>
credentials-file: /home/ubuntu/.cloudflared/<UUID>.json
ingress:
- hostname: app.domainkamu.com
service: http://localhost:3000
- hostname: ssh.domainkamu.com
service: ssh://localhost:22
- service: http_status:404
Aturan ingress dibaca dari atas ke bawah. Baris terakhir tanpa hostname wajib ada sebagai catch-all. Cek dengan:
cloudflared tunnel ingress validate
5. Arahkan DNS ke tunnel#
cloudflared tunnel route dns app-saya app.domainkamu.com
cloudflared tunnel route dns app-saya ssh.domainkamu.com
Cloudflare otomatis membuat record CNAME yang mengarah ke <UUID>.cfargotunnel.com.
6. Jalankan dan pasang sebagai service#
Tes dulu di foreground:
cloudflared tunnel run app-saya
Kalau sudah jalan, pasang sebagai service agar otomatis hidup setelah reboot. Di Linux, service membaca config dari /etc/cloudflared/:
sudo mkdir -p /etc/cloudflared
sudo cp ~/.cloudflared/config.yml ~/.cloudflared/<UUID>.json /etc/cloudflared/
# sesuaikan path credentials-file di /etc/cloudflared/config.yml
sudo cloudflared service install
sudo systemctl status cloudflared
Alternatifnya, kamu bisa membuat tunnel dari dashboard Cloudflare Zero Trust. Dashboard memberi satu perintah berisi token untuk dipasang di server, dan aturan hostname diatur dari web.
Quick Tunnel: Tes Cepat Tanpa Akun#
Kalau cuma butuh URL publik sementara, pakai quick tunnel:
cloudflared tunnel --url http://localhost:3000
Kamu langsung mendapat alamat acak di trycloudflare.com. Tidak perlu login atau domain. Batasannya:
- URL berubah setiap kali perintah dijalankan ulang.
- Ditujukan untuk tes dan development, bukan production.
- Ada batas jumlah request bersamaan dan beberapa fitur tidak didukung. Cek dokumentasi Cloudflare untuk batasan terbaru.
- Tidak ada kontrol akses, jadi siapa pun yang tahu URL-nya bisa membuka aplikasi kamu.
Kelebihan dan Kekurangan Cloudflare Tunnel#
Kelebihan
- Tidak ada port inbound yang terbuka, permukaan serangan lebih kecil.
- Jalan di belakang NAT atau CGNAT, tanpa IP publik.
- SSL ke pengunjung ditangani Cloudflare.
- Bisa digabung dengan Cloudflare Access untuk login sebelum masuk.
- Paket dasarnya bisa dipakai tanpa biaya.
Kekurangan
- Domain harus dikelola di Cloudflare (kecuali quick tunnel).
- Semua traffic lewat Cloudflare, jadi kamu bergantung pada satu penyedia.
- Kalau mesin lokal mati atau internet rumah putus, aplikasi ikut mati. Tunnel tidak membuat laptop kamu jadi server yang andal.
- Ada sedikit hop tambahan dibanding akses langsung ke server.
- Untuk protokol non-HTTP seperti SSH, sisi klien biasanya juga perlu
cloudflared.
Cloudflare Tunnel vs Hosting Aplikasi dengan Benar#
Cloudflare Tunnel cocok untuk service yang kamu jalankan sendiri: di laptop, di server rumah, atau di VPS milikmu. Tapi tunnel tidak menyelesaikan masalah utama self hosting di rumah: listrik, koneksi internet, dan hardware yang tidak selalu stabil.
Kalau aplikasinya sudah dipakai orang lain, ada dua pilihan yang lebih rapi:
- Pindahkan ke VPS. Di VPS murah Helipod kamu dapat akses root di Jakarta, Singapore, atau Frankfurt. Kamu tetap bisa memasang
cloudflareddi VPS kalau ingin semua port inbound tertutup, atau pakai nginx reverse proxy biasa dengan port 80 dan 443. - Deploy sebagai aplikasi di Helipod. Kamu push dari GitHub atau GitLab, Helipod membangun dan menjalankannya, dan custom domain mendapat SSL otomatis. Di sini kamu tidak perlu tunnel. Untuk domain yang dikelola di Cloudflare, ikuti panduan Grey Cloud (DNS Only): arahkan record DNS ke Helipod tanpa proxy oranye, supaya tidak terjadi proxy ganda. Detail langkahnya ada di custom domain di Helipod.
Jadi aturannya sederhana: tunnel untuk membuka mesin milikmu sendiri, sedangkan aplikasi yang di-hosting di Helipod cukup memakai custom domain dengan DNS biasa.
FAQ#
Apakah Cloudflare Tunnel gratis?#
Fitur dasar Cloudflare Tunnel bisa dipakai tanpa biaya. Fitur Zero Trust tertentu untuk tim besar ada di paket berbayar. Cek halaman harga Cloudflare untuk detail terbaru.
Apakah Cloudflare Tunnel butuh IP publik?#
Tidak. cloudflared hanya membuat koneksi keluar, jadi tetap jalan di jaringan rumah, kantor, atau di balik CGNAT.
Apa bedanya Cloudflare Tunnel dengan ngrok?#
Keduanya membuka service lokal lewat koneksi keluar. Cloudflare Tunnel terintegrasi dengan DNS dan Zero Trust di Cloudflare dan memakai domain kamu sendiri. Ngrok berdiri sendiri dan punya paket serta batasannya sendiri.
Apakah perlu Cloudflare Tunnel untuk aplikasi di Helipod?#
Tidak. Aplikasi di Helipod sudah bisa diakses publik dengan custom domain dan SSL otomatis. Untuk domain di Cloudflare, pakai record DNS Only (grey cloud) seperti di panduan grey cloud.
Bisakah SSH ke VPS lewat Cloudflare Tunnel?#
Bisa. Tambahkan aturan ingress ssh://localhost:22, lindungi hostname dengan Cloudflare Access, lalu di sisi klien pakai cloudflared access ssh sebagai ProxyCommand di konfigurasi SSH.
Apakah quick tunnel aman untuk production?#
Tidak disarankan. URL acak, tidak ada kontrol akses, dan ada batas request. Pakai named tunnel atau hosting yang proper.
Butuh server yang selalu hidup untuk menjalankan service dan tunnel kamu? Lihat paket VPS murah Helipod dengan akses root dan pembayaran dalam Rupiah lewat QRIS atau virtual account.