Blogger Jateng

Panduan Lengkap Cara Setting Cloudflare Tunnel untuk Expose Service Lokal dan Docker Portainer

Mengakses server lokal (home server atau VPS) dari jaringan internet publik sering kali terkendala IP publik yang dinamis atau jaringan di balik CGNAT. Solusi paling aman dan praktis tanpa perlu melakukan port forwarding di router adalah menggunakan Cloudflare Tunnel (Zero Trust).

Dengan Cloudflare Tunnel, kamu dapat menghubungkan aplikasi lokal (seperti Node.js/PM2) maupun container Docker (seperti Portainer) langsung ke custom domain dengan proteksi enkripsi HTTPS secara gratis.


Keunggulan Menggunakan Cloudflare Tunnel

  • Tanpa Buka Port (No Port Forwarding): Router dan firewall lokal tetap tertutup rapat dari luar.
  • Mendukung CGNAT & Dynamic IP: Tidak memerlukan IP publik statis atau layanan DDNS tambahan.
  • Otomatis SSL/TLS: Cloudflare menyediakan sertifikat SSL gratis untuk subdomain kamu.
  • Proteksi DDoS: Melindungi IP asli server dari paparan langsung ke internet.

Langkah 1: Instalasi Cloudflare Connector di Server

Langkah pertama adalah memasang daemon cloudflared pada server Linux (Debian/Ubuntu):

  1. Masuk ke dashboard Cloudflare Zero Trust → buka menu NetworksTunnels.
  2. Klik tombol Create a tunnel, pilih opsi Cloudflared, lalu beri nama tunnel kamu.
  3. Pilih arsitektur sistem operasi (contoh: Debian / Ubuntu 64-bit).
  4. Salin script instalasi otomatis yang disediakan, lalu jalankan di terminal server dengan hak akses root/sudo.
  5. Verifikasi bahwa service tunnel sudah berjalan dengan perintah:
    sudo systemctl status cloudflared
  6. Pastikan status connector di dashboard Cloudflare sudah berubah menjadi Connected.

Langkah 2: Konfigurasi Rute Aplikasi (Published Application)

Setelah server terhubung, buat rute subdomain untuk mengarahkan trafik ke port aplikasi lokal:

  1. Di menu konfigurasi tunnel, pilih tab Routes → klik tombol + Add route.
  2. Pilih tipe Published application.
  3. Sesuaikan target berdasarkan protokol aplikasi kamu:

Kasus A: Aplikasi HTTP Standar (Node.js / Express / 9router)

  • Domain: Pilih domain aktif kamu (misal: domainkamu.my.id).
  • Subdomain: Masukkan nama subdomain (misal: app).
  • Path: Biarkan kosong.
  • Type: HTTP
  • URL: 127.0.0.1:PORT_APLIKASI (Gunakan IP 127.0.0.1, hindari tulisan localhost untuk mencegah masalah resolusi IPv6).

Kasus B: Aplikasi HTTPS Internal / Self-Signed (Portainer CE)

  • Domain: Pilih domain aktif kamu.
  • Subdomain: Masukkan subdomain (misal: portainer).
  • Path: Biarkan kosong.
  • Type: HTTPS
  • URL: 127.0.0.1:9443
  • Pengaturan Tambahan (Penting): Buka accordion Additional application settings → buka menu TLS → aktifkan toggle No TLS Verify. Opsi ini wajib dinyalakan agar Cloudflare tidak menolak sertifikat self-signed bawaan Portainer.

Klik tombol Save route setelah selesai.


Langkah 3: Konfigurasi Manual DNS CNAME (Jika Belum Terhubung Otomatis)

Jika subdomain tidak otomatis aktif setelah membuat rute, tambahkan record CNAME secara manual di DNS Cloudflare:

  1. Salin Tunnel ID: Ambil kode UUID Tunnel dari URL browser pada dashboard Zero Trust (format UUID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).
  2. Masuk ke Cloudflare Dashboard Utama → pilih Domain kamu → buka menu DNSRecords.
  3. Hapus A Record lama jika ada nama subdomain yang sama agar tidak bentrok.
  4. Klik Add record dengan detail berikut:
    • Type: CNAME
    • Name: subdomain (contoh: app atau portainer)
    • Target: TUNNEL_ID.cfargotunnel.com
    • Proxy status: Proxied (ikon awan oranye menyala)
    • TTL: Auto
  5. Klik Save.

Troubleshooting Masalah Umum

  • Error Site took too long to respond:
    Penyebab utamanya adalah konflik DNS record. Pastikan subdomain diarahkan ke CNAME TUNNEL_ID.cfargotunnel.com dengan status Proxied, bukan memakai A Record manual ke IP router.
  • Error 502 Bad Gateway:
    1. Pastikan aplikasi lokal di server sedang aktif (tes dengan curl -I http://127.0.0.1:PORT).
    2. Jika backend memakai protokol HTTPS internal (seperti Portainer di port 9443), pastikan opsi No TLS Verify di pengaturan route tunnel sudah diaktifkan.

Dengan konfigurasi ini, seluruh aplikasi lokal dan container Docker dapat diakses secara publik, stabil, dan aman menggunakan custom domain tanpa perlu membuka port pada router jaringan.

Posting Komentar untuk "Panduan Lengkap Cara Setting Cloudflare Tunnel untuk Expose Service Lokal dan Docker Portainer"