DevOps & Infrastructure
Cara Menghubungkan Server Lokal ke Internet Publik dengan Cloudflare Tunnel
Panduan praktis mengekspos server fisik lokal ke internet publik untuk website dan API secara aman tanpa port forwarding dan bebas kendala CGNAT.

Memiliki server fisik sendiri di rumah atau lab lokal memberikan kendali penuh atas komputasi, kapasitas penyimpanan, dan biaya perangkat keras. Namun, tantangan terbesar bagi self-hoster pemula biasanya muncul saat ingin membuat server tersebut dapat diakses dari internet publik:
- CGNAT (Carrier-Grade NAT): Sebagian besar ISP rumahan tidak memberikan IP Publik langsung ke router pelanggan.
- IP Dinamis: IP publik dapat berubah sewaktu-waktu saat router melakukan reconnect.
- Risiko Keamanan: Membuka port forwarding (port 80/443) langsung di router menghadapkan jaringan rumah ke pemindaian bot dan potensi serangan DDoS.
Solusi paling praktis, aman, dan modern untuk mengatasi masalah ini adalah menggunakan Cloudflare Tunnel (bagian dari layanan Cloudflare Zero Trust).
Mengapa Cloudflare Tunnel?
Cloudflare Tunnel bekerja dengan membuat koneksi terenkripsi keluar (outbound-only) dari server lokal Anda ke jaringan edge Cloudflare menggunakan daemon bernama cloudflared.
- Bypass CGNAT & Firewall: Tidak memerlukan IP Publik statis dan tidak perlu mengubah konfigurasi port forwarding pada router.
- IP Rumah Terlindungi: Lalu lintas publik singgah terlebih dahulu di Cloudflare. Pengunjung hanya melihat IP proxy Cloudflare, bukan IP rumah Anda.
- Otomatis HTTPS/SSL: Sertifikat SSL/TLS diterbitkan dan diperbarui otomatis oleh Cloudflare.
- Gratis: Layanan ini tersedia dalam paket gratis Cloudflare Zero Trust (hingga 50 pengguna).
Prasyarat
Sebelum memulai, siapkan hal-hal berikut:
- Server Fisik Lokal: Sudah terpasang Linux (Ubuntu, Debian, atau distro lainnya) dan terhubung ke jaringan internet.
- Domain Aktif: Domain milik Anda sendiri (misal
.my.id,.com, dll). - Akun Cloudflare: Akun gratis di cloudflare.com.
Langkah 1: Hubungkan Domain ke Cloudflare
- Masuk ke dashboard Cloudflare dan klik Add a site.
- Masukkan nama domain Anda dan pilih paket Free.
- Cloudflare akan menampilkan dua alamat Nameserver (misalnya
eva.ns.cloudflare.comdanken.ns.cloudflare.com). - Buka panel tempat Anda membeli domain (Registrar), ubah Nameserver bawaan menjadi Nameserver dari Cloudflare.
- Tunggu hingga proses propagasi DNS selesai dan domain berstatus Active di Cloudflare.
Langkah 2: Buat Tunnel di Cloudflare Zero Trust
- Buka dashboard Cloudflare, lalu pilih menu Zero Trust pada bilah sisi kiri (atau kunjungi one.dash.cloudflare.com).
- Jika baru pertama kali mengakses Zero Trust, pilih nama team Anda dan selesaikan konfigurasi awal (pilih paket Free / $0).
- Di panel Zero Trust, navigasi ke Networks > Tunnels.
- Klik tombol Add a tunnel.
- Pilih tipe Cloudflare (Recommended) dan klik Next.
- Berikan nama untuk tunnel Anda (misal:
home-server-tunnel), lalu klik Save tunnel.
Langkah 3: Pasang cloudflared di Server Fisik
Setelah tunnel dibuat, Cloudflare akan menampilkan opsi sistem operasi beserta instruksi instalasinya.
Pilih arsitektur sistem operasi server Anda (contoh untuk Ubuntu / Debian x86_64):
# Unduh paket Debian cloudflared
curl -L --output cloudflared.deb https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb
# Pasang paket
sudo dpkg -i cloudflared.deb
# Pasang dan jalankan service dengan token tunnel Anda
sudo cloudflared service install <TOKEN_DARI_DASHBOARD_CLOUDFLARE>
Catatan: Ganti
<TOKEN_DARI_DASHBOARD_CLOUDFLARE>dengan token unik yang tertera di halaman Cloudflare Anda.
Perintah di atas akan secara otomatis mendaftarkan cloudflared sebagai layanan systemd. Artinya, jika server reboot atau listrik padam lalu hidup kembali, tunnel akan otomatis berjalan kembali.
Periksa status layanan di server lokal:
sudo systemctl status cloudflared
Di halaman dashboard Cloudflare, status Connectors akan otomatis berubah menjadi Connected (berwarna hijau). Klik Next.
Langkah 4: Hubungkan Domain ke Layanan/API Lokal
Pada tab Public Hostnames, tentukan bagaimana domain memetakan lalu lintas ke aplikasi lokal Anda:
- Subdomain: Isi nama subdomain yang diinginkan, misalnya
apiatauapp(atau biarkan kosong jika ingin menggunakan domain utama). - Domain: Pilih domain yang sudah aktif di Cloudflare.
- Path: Biarkan kosong (kecuali Anda ingin merutekan URL path tertentu).
- Service:
- Type: Pilih
HTTP - URL: Masukkan host dan port aplikasi lokal Anda, contoh:
localhost:3000(Node.js/Next.js),localhost:8000(FastAPI/Django), ataulocalhost:80(Nginx).
- Type: Pilih
Klik Save hostname. Cloudflare akan otomatis membuatkan entri DNS CNAME yang mengarah ke tunnel tersebut.
Langkah 5: Pengujian
Pastikan aplikasi lokal Anda sudah berjalan di port yang didaftarkan. Anda dapat mengujinya langsung dari perangkat luar (misalnya ponsel menggunakan jaringan data seluler):
# Menguji API melalui terminal
curl -I https://api.domainanda.com
Atau buka URL tersebut di peramban web. Anda akan melihat halaman website/API Anda dapat diakses dengan protokol HTTPS yang valid.
Praktik Baik & Tips Lanjutan
1. Merutekan Banyak Layanan dalam Satu Tunnel
Satu instalasi cloudflared dapat menangani banyak aplikasi sekaligus. Cukup tambahkan entri Public Hostname baru pada tunnel yang sama:
api.domainanda.comlocalhost:8000web.domainanda.comlocalhost:3000dash.domainanda.comlocalhost:9090
2. Mengamankan Dashboard Internal dengan Cloudflare Access
Untuk layanan yang bersifat internal (seperti dashboard admin atau Grafana), Anda dapat menambahkan lapisan autentikasi di menu Access > Applications pada Cloudflare Zero Trust. Pengunjung akan diwajibkan melakukan verifikasi via email atau Google Workspace sebelum permintaan diteruskan ke server fisik Anda.
3. Keandalan Fisik Server
Karena server beroperasi secara mandiri di lokasi Anda, pastikan untuk mempertimbangkan:
- UPS (Uninterruptible Power Supply): Mencegah korupsi data akibat mati lampu mendadak.
- BIOS Power On After AC Loss: Atur di BIOS agar server otomatis menyala saat listrik kembali mengalir setelah pemadaman.

Discussion (0)
We store your optional name, your comment, and technical hashes (not your raw IP address) to prevent spam. A functional cookie lets you edit or delete your own comments from this browser. To request deletion, use the contact page.
No comments yet. Start the discussion.