Cloudflare Tunnels
Ekspos situs lokal ke internet menggunakan Cloudflare Tunnels (cloudflared).
Kasus Penggunaan
- Bagikan progress pekerjaan dengan klien
- Uji webhook dari layanan eksternal (Midtrans, Stripe, dll.)
- Uji di perangkat mobile di luar jaringanmu
- Gunakan domain kustom sendiri dengan konfigurasi DNS otomatis
Pengaturan
Opsi 1: Quick Tunnel (Tanpa Akun)
- Unduh cloudflared dari halaman Software
- Buka pengaturan situs
- Klik Share via Tunnel
FluxPanel memulai tunnel Cloudflare dan memberimu URL publik sementara seperti:
https://random-name.trycloudflare.com
Catatan: Quick tunnel bekerja tanpa akun Cloudflare. URL bersifat sementara dan berubah setiap kali kamu memulai tunnel.
Opsi 2: Named Tunnel dengan Domain Kustom (Direkomendasikan)
Untuk penggunaan production atau URL persisten, konfigurasikan named tunnel dengan akun Cloudflare-mu:
1. Buat Cloudflare API Token
- Kunjungi Cloudflare Dashboard
- Klik Create Token
- Pilih Create Custom Token
Konfigurasi permission berikut:
Account Permissions:
| Permission | Level | Required | Tujuan |
|---|---|---|---|
| Account → Cloudflare Tunnel | Edit | ✅ Ya | Membuat, memodifikasi, dan menghapus tunnel |
Zone Permissions:
| Permission | Level | Required | Tujuan |
|---|---|---|---|
| Zone → DNS | Edit | ✅ Ya | Membuat CNAME record otomatis untuk subdomain |
| Zone → Zone | Read | ✅ Ya | Melihat daftar domain di akun kamu |
Langkah-langkah konfigurasi:
-
Account Permissions section:
- Klik Add di bawah "Account Permissions"
- Pilih Cloudflare Tunnel → Edit
-
Zone Permissions section:
- Klik Add di bawah "Zone Permissions"
- Pilih DNS → Edit
- Klik Add lagi
- Pilih Zone → Read
-
Account Resources:
- Pilih Include → All accounts
- Atau pilih akun spesifik jika kamu punya beberapa akun
-
Zone Resources:
- Pilih Include → All zones
- Atau pilih domain spesifik jika hanya ingin menggunakan domain tertentu
-
Klik Continue to summary
-
Masukkan nama token (contoh: "FluxPanel Tunnels")
-
Klik Create Token
-
Salin token kamu (tidak akan ditampilkan lagi!)
Kamu juga bisa menggunakan template Edit Cloudflare Zero Trust yang sudah include semua permission yang diperlukan secara otomatis.
- Jangan bagikan API token ke publik
- Simpan hanya di FluxPanel dengan aman
- Generate ulang token jika terkompromi
2. Konfigurasi Token di FluxPanel
- Di FluxPanel, buka Settings → Cloudflare
- Paste API token kamu di kolom token
Opsi format:
-
User Token (default): Cukup paste token-nya
your-token-here -
Account-Owned Token (diawali
cfat_): Sertakan Account IDcfat_your-token-here|your-account-idUntuk menemukan Account ID kamu:
- Buka Cloudflare Dashboard
- Lihat URL:
dash.cloudflare.com/{account-id}/ - Atau cek Account Home → Account ID di sidebar kanan
- Klik Verify Token
Jika berhasil, kamu akan melihat nama akun dan ID-nya. Jika gagal, cek pesan error untuk permission yang kurang.
3. Buat Named Tunnel
- Buka halaman Cloudflare di FluxPanel
- Klik Create Tunnel
- Masukkan nama tunnel (contoh:
my-dev-server) - Tunnel akan dibuat di akun Cloudflare-mu
4. Konfigurasi Routes
- Pilih tunnel-mu
- Klik Add Route
- Masukkan:
- Public Hostname:
myapp.domainmu.com(harus menggunakan domain yang ada di akun Cloudflare-mu) - Service: Pilih situs lokal-mu
- Public Hostname:
- Klik Save
FluxPanel secara otomatis:
- Membuat DNS CNAME record yang mengarah ke tunnel-mu
- Mengupdate nginx untuk menerima request ke hostname publik-mu
- Mengkonfigurasi SSL/TLS melalui Cloudflare
5. Jalankan Tunnel
Klik Run Tunnel untuk memulai koneksi. Situs-mu sekarang dapat diakses di domain kustom-mu.
Mengelola Tunnels
Lihat Tunnel Aktif
Semua named tunnel di akun Cloudflare-mu muncul di halaman Cloudflare.
Hentikan Tunnel
Klik Stop Tunnel untuk menutup koneksi. URL publik langsung tidak dapat diakses (DNS record tetap ada).
Hapus Tunnel
Untuk menghapus tunnel secara permanen:
- Hentikan tunnel terlebih dahulu
- Klik Delete Tunnel
- DNS record dan konfigurasi nginx tetap ada (hapus manual jika diperlukan)
Referensi Permission API Token
Permission yang Diperlukan
API token Cloudflare kamu harus memiliki permission berikut:
| Kategori | Path Permission | Level Akses | Alasan Dibutuhkan |
|---|---|---|---|
| Account | Cloudflare Tunnel | Edit | Membuat, menjalankan, menghentikan, dan menghapus tunnel di akun kamu |
| Zone | DNS | Edit | Membuat dan mengupdate CNAME record secara otomatis untuk subdomain kamu |
| Zone | Zone | Read | Melihat domain yang tersedia untuk konfigurasi tunnel routes |
Perbandingan Tipe Token
| Fitur | User Token | Account-Owned Token (cfat_) |
|---|---|---|
| Pembuatan | User Profile → API Tokens | Account Settings → API Tokens |
| Scope | Akses level user | Khusus account tertentu |
| Account ID | Opsional (auto-detect) | Wajib (harus disebutkan) |
| Penggunaan | Paste token langsung | Format: `token |
| Terbaik Untuk | Penggunaan personal, banyak akun | Penggunaan tim, satu akun |
Error Permission Umum
Error: "Invalid token"
- Token mungkin expired atau revoked
- Cek apakah token masih aktif di dashboard Cloudflare
- Generate ulang token jika perlu
Error: "Cannot determine Account ID"
- Untuk account-owned token: Sertakan Account ID dalam format
token|account-id - Untuk user token: Pastikan token punya akses ke minimal satu akun
Error: "Token does not have Zone:Read permission"
- Tambahkan permission Zone → Zone → Read ke token kamu
- Atau gunakan template Edit Cloudflare Zero Trust
Error: "Failed to create DNS record"
- Tambahkan permission Zone → DNS → Edit ke token kamu
- Verifikasi domain ada di akun Cloudflare kamu
- Cek Zone Resources sudah include domain kamu
Troubleshooting
Error "Account ID required"
Token milik akun (awalan cfat_) mengharuskan kamu memberikan Cloudflare Account ID. Temukan di URL dashboard Cloudflare: dash.cloudflare.com/{account-id}/
Error "No zone found for hostname"
Pastikan:
- Domain sudah ditambahkan ke akun Cloudflare-mu
- API token-mu memiliki permission Zone:Read
- Kamu menggunakan domain milik sendiri (bukan
.trycloudflare.com)
DNS record tidak dibuat
Cek bahwa API token-mu memiliki permission Zone → DNS → Edit. Kamu dapat membuat CNAME record secara manual di dashboard Cloudflare:
- Type: CNAME
- Name: subdomain-mu
- Target:
{tunnel-id}.cfargotunnel.com - Proxied: Yes