---
title: "Online-kan Server Tanpa IP Publik dengan Cloudflare Tunnel"
description: "Internet kantor pakai CGNAT? Langkah memakai Cloudflare Tunnel (cloudflared) untuk membuka server lokal ke domain, memberi kebijakan akses, dan batasnya."
url: "https://nivelva.com/insight/cloudflare-tunnel-tanpa-ip-publik"
category: "Server \u0026 Infrastruktur"
tags: ["cloudflare tunnel","cloudflared","cgnat","self-hosting","zero trust"]
author: "Theresia Candiawan"
published: "2026-11-06T13:26:00+07:00"
updated: "2026-11-06T13:26:00+07:00"
language: "id"
publisher: "Nivelva (https://nivelva.com)"
---

# Online-kan Server Tanpa IP Publik dengan Cloudflare Tunnel

> **Jawaban singkat:** Cloudflare Tunnel menghubungkan server ke Cloudflare lewat koneksi keluar dari cloudflared, jadi tidak perlu IP publik atau port forwarding. Buat tunnel di dashboard, pasang cloudflared dengan token, lalu petakan hostname ke layanan lokal. SSH, TCP, dan RDP butuh cloudflared di klien.

Punya server di kantor atau di rumah, tapi internetnya memakai CGNAT sehingga tidak bisa diakses dari luar? Cloudflare Tunnel adalah salah satu jalan keluarnya. Alih-alih menunggu koneksi masuk ke IP publik, sebuah program kecil bernama `cloudflared` di servermu membuka koneksi **keluar** ke jaringan Cloudflare. Pengunjung mengakses domainmu, Cloudflare meneruskan permintaan lewat koneksi itu, dan server tidak perlu IP publik atau port forwarding sama sekali.

Karena koneksinya keluar, dokumentasi Cloudflare menyebut firewall server bahkan boleh menutup semua koneksi masuk. Panduan ini membahas langkahnya per 4 November 2026, cara menambahkan kebijakan akses, dan kapan cara ini kurang cocok dibanding IP publik atau VPS.

## Apa saja yang perlu disiapkan?

Menurut panduan resmi, kamu membutuhkan:

- Akun Cloudflare.
- Domain yang sudah dikelola di Cloudflare. Ini wajib untuk mempublikasikan aplikasi ke hostname milikmu.
- Server atau VM dengan akses internet untuk menjalankan `cloudflared`.
- Bila firewall membatasi koneksi keluar, server harus bisa menjangkau Cloudflare di port `7844`.

Kalau belum paham kenapa CGNAT membuat server tidak bisa diakses, baca dulu [apa itu IP publik](https://nivelva.com/insight/apa-itu-ip-publik).

## Langkah membuat Cloudflare Tunnel

### Langkah 1. Buat tunnel di dashboard

Di dashboard Cloudflare, buka **Networking** lalu **Tunnels**, pilih **Create Tunnel**, dan beri nama yang jelas, misalnya `kantor-web`. Pilih **Create Tunnel** lagi untuk menyimpan.

Tampilan dashboard Cloudflare cukup sering berubah. Bila menunya berbeda, cari bagian Tunnels di area Networking atau Zero Trust.

### Langkah 2. Pasang cloudflared dan jalankan dengan token

Di bagian **Setup Environment**, pilih sistem operasi dan arsitektur servermu. Dashboard menampilkan perintah pemasangan, termasuk token tunnel. Di Linux, intinya:

```bash
sudo cloudflared service install <TOKEN_TUNNEL>
```

Perintah ini memasang `cloudflared` sebagai service sehingga tunnel otomatis tersambung lagi setelah reboot. Bila kamu memakai Docker, panduan resmi memberi alternatif:

```bash
docker run cloudflare/cloudflared:latest tunnel --no-autoupdate run --token <TOKEN_TUNNEL>
```

Token ini adalah kunci tunnel. Jangan menaruhnya di repositori publik.

Setelah tersambung, pilih **Continue**. Status tunnel di halaman Tunnels harus menjadi `Healthy`.

### Langkah 3. Petakan hostname ke layanan lokal

Buka tunnel yang baru dibuat. Di bagian **Routes**, pilih **Add route** lalu **Published application**. Isi:

- **Hostname:** subdomain dan domain, misalnya `app` dan `domainmu.com`.
- **Service URL:** alamat layanan dari sudut pandang server tempat `cloudflared` berjalan, misalnya `http://localhost:8080`. Layanan di mesin lain dalam jaringan lokal juga bisa, misalnya `http://192.168.1.20:80`.

Simpan dengan **Add route**. Cloudflare membuat record DNS untuk hostname tersebut, yang mengarah ke tunnel. Buka `https://app.domainmu.com` dan aplikasimu seharusnya tampil dengan HTTPS dari Cloudflare.

Satu tunnel bisa melayani banyak hostname. Tambahkan route lain untuk setiap aplikasi.

### Langkah 4. Batasi siapa yang boleh masuk

Hostname yang dipublikasikan bisa diakses siapa pun di internet. Untuk panel admin, dashboard internal, atau alat seperti Grafana, tambahkan **Cloudflare Access**:

1. Buka **Zero Trust**, lalu **Access controls**, lalu **Applications**.
2. Pilih **Create new application**, lalu **Self-hosted and private**.
3. Tambahkan public hostname yang sama dengan route tunnel.
4. Buat Access policy, misalnya hanya mengizinkan alamat email tim kamu.
5. Pilih metode login (identity provider), lalu **Create**.

Dokumentasi menegaskan semua aplikasi Access bersifat **tolak secara bawaan**, jadi hanya pengguna yang cocok dengan policy Allow yang bisa masuk. Panduan resmi juga menyarankan membuat aplikasi Access sebelum route tunnel, agar tidak ada jeda ketika hostname sudah terbuka tanpa pelindung.

### Langkah 5. Tutup jalur lain

Karena trafik sekarang masuk lewat tunnel, hapus port forwarding lama di router bila ada, dan pastikan layanan lokal tidak terbuka ke jaringan lain yang tidak perlu. Biarkan aplikasi mendengarkan di `localhost` bila `cloudflared` berjalan di mesin yang sama.

## Bagaimana dengan SSH, RDP, atau protokol selain web?

Cloudflare Tunnel bisa menghubungkan server SSH, remote desktop, dan protokol TCP lain. Bedanya dengan web, panduan resmi menyebut layanan non-HTTP seperti SSH, TCP, dan RDP **membutuhkan `cloudflared` juga di sisi klien**, atau perangkat klien Cloudflare One. Jadi kamu tidak bisa sekadar membuka `ssh server.domainmu.com` dari komputer mana saja tanpa persiapan.

Untuk kebutuhan seperti CCTV, perangkat IoT, atau aplikasi yang harus dibuka dari aplikasi bawaan vendor, keterbatasan ini sering jadi masalah. Pilihan lain untuk kasus CCTV dibahas di [membuka CCTV dari HP saat CGNAT](https://nivelva.com/insight/buka-cctv-dari-hp-cgnat).

## Kapan Cloudflare Tunnel cukup, kapan butuh IP publik atau VPS?

| Kebutuhan | Cloudflare Tunnel | IP publik atau VPS |
|:--|:--|:--|
| Website atau aplikasi web di belakang CGNAT | Cocok | Cocok |
| Tanpa membuka port masuk | Ya, koneksi keluar saja | Port harus dibuka dan dijaga |
| Domain wajib di Cloudflare | Ya | Tidak |
| SSH, RDP, TCP dari klien mana saja | Klien butuh cloudflared | Langsung |
| Protokol khusus (VoIP, game, aplikasi vendor) | Sering tidak praktis | Langsung |
| Trafik melewati pihak ketiga | Ya, lewat Cloudflare | Tidak harus |
| Server tetap bergantung pada listrik dan internet lokal | Ya | VPS tidak |

Ada dua hal lain yang perlu kamu timbang. Pertama, semua trafik melewati Cloudflare, sehingga kamu mengikuti ketentuan layanan dan batas paket Cloudflare, termasuk untuk jenis konten tertentu. Baca ketentuan Tunnel sebelum memakai untuk layanan berat seperti streaming. Kedua, server di kantor tetap mati saat listrik atau internet kantor putus. Tunnel menyelesaikan masalah akses, bukan masalah ketersediaan.

Kalau kebutuhannya port terbuka untuk protokol apa pun, alternatifnya adalah IP publik statis, VPN dengan IP statik, atau memindahkan layanan ke VPS. Untuk layanan ringan yang cukup dengan beberapa port, [NAT VPS](https://nivelva.com/insight/apa-itu-nat-vps) juga bisa jadi pilihan hemat.

## Pertanyaan yang sering diajukan

### Apakah Cloudflare Tunnel butuh IP publik?

Tidak. cloudflared membuat koneksi keluar ke Cloudflare, sehingga server di belakang CGNAT atau router tanpa port forwarding tetap bisa dipublikasikan.

### Bisakah memakai Cloudflare Tunnel tanpa domain sendiri?

Untuk pengujian, Quick Tunnels memberi alamat sementara di trycloudflare.com. Untuk mempublikasikan aplikasi ke hostname tetap, domain harus dikelola di Cloudflare.

### Apakah bisa menjalankan cloudflared di lebih dari satu server untuk satu tunnel?

Bisa. Dokumentasi menyebut satu tunnel boleh punya beberapa proses cloudflared yang disebut connector, dan masing-masing tersambung ke data center Cloudflare terdekat.

### Apakah trafik ke server tetap terenkripsi?

Koneksi pengunjung ke Cloudflare memakai HTTPS, dan koneksi cloudflared ke Cloudflare juga terenkripsi. Dari cloudflared ke layanan lokal mengikuti Service URL yang kamu isi, misalnya http di localhost.

Sebelum menganggap tunnel siap dipakai:

- Domain sudah aktif di Cloudflare
- Status tunnel `Healthy` dan cloudflared terpasang sebagai service
- Setiap hostname mengarah ke Service URL yang benar
- Aplikasi internal dilindungi Cloudflare Access sebelum dibuka
- Port forwarding lama di router sudah ditutup
- Token tunnel tidak tersimpan di tempat publik

## Sumber

- <https://developers.cloudflare.com/tunnel/get-started/>
- <https://developers.cloudflare.com/cloudflare-one/networks/connectors/cloudflare-tunnel/>
- <https://developers.cloudflare.com/cloudflare-one/access-controls/applications/http-apps/self-hosted-public-app/>
- <https://github.com/cloudflare/cloudflared>

---

Diterbitkan oleh Nivelva Insight (https://nivelva.com/insight/). Artikel ini: https://nivelva.com/insight/cloudflare-tunnel-tanpa-ip-publik
Kontak Nivelva: WhatsApp https://wa.me/6285111245007, email hello@nivelva.com
