Panduan Lengkap Mengonfigurasi Cloudflare Tunnel untuk Ekspos Layanan Lokal
Cloudflare Tunnel adalah solusi aman untuk mengekspos layanan lokal (seperti web server dan SSH) ke internet tanpa membuka port firewall. Artikel ini memberikan panduan langkah-demi-langkah mengonfigurasi tunnel dengan autentikasi berbasis sertifikat dan manajemen DNS terpusat.
Prasyarat Konfigurasi
1. Persiapan Domain di Cloudflare
Pastikan domain Anda telah terdaftar di Cloudflare dengan status Active dan menggunakan nameserver Cloudflare. Verifikasi di dashboard Cloudflare untuk memastikan domain aktif sepenuhnya.
2. Kosongkan DNS Records
Hapus semua record DNS yang ada atau pastikan zona DNS dalam keadaan kosong sebelum memulai konfigurasi tunnel. Hal ini mencegah konflik antara record konvensional dan routing tunnel.
Instalasi Cloudflared
Tambahkan Repositori dan Kunci GPG
Cloudflared merupakan CLI resmi Cloudflare untuk mengelola tunnel. Instalasi dimulai dengan menambahkan repositori paket resmi:
1
2
3
4
5
6
7
8
# Buat direktori keyrings dengan permission yang sesuai
sudo mkdir -p --mode=0755 /usr/share/keyrings
# Tambahkan kunci GPG Cloudflare
curl -fsSL https://pkg.cloudflare.com/cloudflare-public-v2.gpg | sudo tee /usr/share/keyrings/cloudflare-public-v2.gpg >/dev/null
# Tambahkan repositori Cloudflared ke sources.list
echo "deb [signed-by=/usr/share/keyrings/cloudflare-public-v2.gpg] https://pkg.cloudflare.com/cloudflared any main" | sudo tee /etc/apt/sources.list.d/cloudflared.list
Instalasi Paket
Update repositori dan instal cloudflared:
1
2
# Update package list dan instal cloudflared
sudo apt-get update && sudo apt-get install cloudflared -y
Untuk sistem non-Debian/Ubuntu, kunjungi dokumentasi resmi Cloudflare untuk instruksi instalasi.
Autentikasi dan Inisialisasi Tunnel
1. Login ke Akun Cloudflare
Autentikasi cloudflared dengan akun Cloudflare Anda:
1
cloudflared tunnel login
Perintah ini akan:
- Membuka browser otomatis ke halaman login Cloudflare
- Meminta izin untuk mengakses akun Anda
- Membuat file sertifikat
cert.pemdi~/.cloudflared/
Jika browser tidak terbuka otomatis, salin URL yang ditampilkan ke browser manual.
Setelah berhasil login, output akan menampilkan lokasi penyimpanan sertifikat:
1
2
3
INF You have successfully logged in.
If you wish to copy your credentials to a server, they have been saved to:
/home/username/.cloudflared/cert.pem
2. Membuat Tunnel Baru
Buat tunnel dengan nama unik:
1
cloudflared tunnel create <NAME>
Contoh dengan nama my-tunnel:
1
cloudflared tunnel create my-tunnel
Output akan menampilkan ID tunnel dan lokasi file kredensial JSON:
1
2
Tunnel credentials written to /home/username/.cloudflared/XXX-XXX-XXX-XXX-XXX.json
Created tunnel my-tunnel with id XXX-XXX-XXX-XXX-XXX
File JSON ini bersifat rahasia. Simpan dengan aman dan jangan bagikan.
3. Verifikasi Tunnel yang Tersedia
Lihat daftar tunnel yang telah dibuat:
1
cloudflared tunnel list
Konfigurasi Routing Tunnel
1. Buat File Konfigurasi
Buat atau edit file konfigurasi di ~/.cloudflared/config.yml:
1
nano ~/.cloudflared/config.yml
2. Konfigurasi YAML Template
Tambahkan konfigurasi berikut, sesuaikan dengan kebutuhan:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# ID tunnel dari perintah 'tunnel create'
tunnel: UUID
# File kredensial yang dihasilkan
credentials-file: /home/username/.cloudflared/UUID.json
# Aturan routing ingress
ingress:
# Route untuk web server (port 80)
- hostname: your-domain.com
service: http://localhost:80
# Route untuk SSH (port 22)
- hostname: ssh.your-domain.com
service: ssh://localhost:22
# Fallback rule untuk traffic tidak dikenali
- service: http_status:404
Penjelasan Konfigurasi:
tunnel: UUID tunnel dari output sebelumnyacredentials-file: Path lengkap ke file kredensial JSONingress: Daftar rule untuk meneruskan traffichostname: Subdomain atau domain tujuanservice: Protokol dan port layanan lokal- Rule terakhir adalah catch-all untuk menangani request tidak valid
Routing DNS dan Aktivasi
1. Tambahkan Record DNS ke Tunnel
Hubungkan domain/subdomain dengan tunnel:
1
cloudflared tunnel route dns <UUID atau NAME> <hostname>
Contoh:
1
cloudflared tunnel route dns my-tunnel your-domain.com
Output konfirmasi:
1
INF Added CNAME your-domain-name which will route to this tunnel tunnelID=XXX-XXX-XXX-XXX-XXX
2. Jalankan Tunnel
Aktifkan tunnel dengan mode interaktif:
1
cloudflared tunnel run <UUID atau NAME>
3. Verifikasi Status Tunnel
Periksa informasi dan status tunnel:
1
cloudflared tunnel info <UUID atau NAME>
Troubleshooting
Troubleshooting Umum
- Tunnel tidak terkoneksi: Periksa koneksi internet dan izin sertifikat
- DNS tidak resolve: Verifikasi CNAME record di dashboard Cloudflare
- Service tidak terjangkau: Pastikan layanan lokal berjalan di port yang sesuai
Kesimpulan
Cloudflare Tunnel menawarkan solusi aman untuk mengekspos layanan lokal tanpa kompleksitas konfigurasi firewall tradisional. Dengan arsitektur zero-trust, tunnel ini ideal untuk remote access, development preview, dan hosting aplikasi internal.


