---
title: "Cloudflare Tunnel adalah: Cara Kerja dan Panduan cloudflared"
url: "https://helipod.io/blog/cloudflare-tunnel-adalah"
date: "2026-10-11"
updated: "2026-10-11"
author: "Tim Helipod"
tags: ["cloudflare tunnel", "cloudflared", "zero trust", "self hosting", "vps"]
excerpt: "Cloudflare Tunnel adalah cara membuka aplikasi lokal atau di VPS ke internet tanpa membuka port inbound. Pelajari cara kerja, setup cloudflared, dan batasannya."
---

# 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](/blog/cara-port-forwarding-vps) dan [Cloudflare + Helipod: Kenapa Grey Cloud?](/blog/cloudflare-grey-cloud-helipod)

---

## 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:

1. `cloudflared` di mesin kamu membuka koneksi keluar ke beberapa server edge Cloudflare.
2. Pengunjung membuka `app.domainkamu.com`, yang DNS-nya mengarah ke tunnel kamu di Cloudflare.
3. Cloudflare mengirim request lewat koneksi yang sudah terbuka tadi.
4. `cloudflared` meneruskan request ke service lokal, misalnya `http://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

```bash
# 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

```bash
cloudflared tunnel login
```

Perintah ini membuka URL di browser. Pilih domain yang mau dipakai, lalu sertifikat `cert.pem` tersimpan di `~/.cloudflared/`.

### 3. Buat tunnel

```bash
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`:

```yaml
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:

```bash
cloudflared tunnel ingress validate
```

### 5. Arahkan DNS ke tunnel

```bash
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:

```bash
cloudflared tunnel run app-saya
```

Kalau sudah jalan, pasang sebagai service agar otomatis hidup setelah reboot. Di Linux, service membaca config dari `/etc/cloudflared/`:

```bash
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:

```bash
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:

1. **Pindahkan ke VPS.** Di [VPS murah Helipod](/vps-murah) kamu dapat akses root di Jakarta, Singapore, atau Frankfurt. Kamu tetap bisa memasang `cloudflared` di VPS kalau ingin semua port inbound tertutup, atau pakai [nginx reverse proxy](/blog/nginx-reverse-proxy) biasa dengan port 80 dan 443.
2. **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)](/blog/cloudflare-grey-cloud-helipod): arahkan record DNS ke Helipod tanpa proxy oranye, supaya tidak terjadi proxy ganda. Detail langkahnya ada di [custom domain di Helipod](/blog/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](/vps-murah) dengan akses root dan pembayaran dalam Rupiah lewat QRIS atau virtual account.
