Skip to content
Banner

Cloudflare TunnelingTutorial

✍️ Ardi Syah | 📅 May 23, 2026
🕛 0 menit 0 detik read | ⏳ 0 words

Cloudflare Tunnel pengganti IP Public

Solusi terbaik untuk menghindari ketergantungan pemakaian Public IP adalah menggantinya dengan Cloudflare Tunnel. Metode ini aman, gratis, dan tidak memerlukan inbound open port pada Network Security Group (NSG) karena koneksi bersifat outbound-only.

Tahap 1: Konfigurasi Tunnel (Saat Public IP Masih Aktif)

1. Instalasi Cloudflared di VM

bash
# Download paket cloudflared
curl -L --output cloudflared.deb https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb

# Jalankan instalasi
sudo dpkg -i cloudflared.deb

2. Otentikasi dan Pembuatan Tunnel

bash
# Login ke akun Cloudflare Anda
cloudflared tunnel login

Klik tautan yang muncul untuk memilih domain Anda. Setelah berhasil, buat tunnel baru:

bash
# Buat tunnel baru dan simpan nama/ID-nya
cloudflared tunnel create azure-ssh-tunnel

3. Konfigurasi Routing untuk SSH

Agar Anda bisa masuk via SSH setelah IP Publik dihapus, buat berkas konfigurasi config.yml di direktori ~/.cloudflared/config.yml:

yaml
tunnel: <TUNNEL_ID_ANDA>
credentials-file: /home/<USERNAME>/.cloudflared/<TUNNEL_ID_ANDA>.json

ingress:
  # Mengarahkan sub-domain khusus untuk akses SSH ke port 22 lokal VM
  - hostname: ssh.domainanda.com
    service: ssh://localhost:22
  - service: http_status:404

Hubungkan tunnel tersebut ke DNS Cloudflare:

bash
# Daftarkan hostname ke Cloudflare DNS
cloudflared tunnel route dns azure-ssh-tunnel ssh.domainanda.com

4. Menyalin Cloudflared ke folder /etc

Ketika Anda menjalankan perintah dengan sudo, cloudflared mencari file konfigurasi di direktori sistem (/etc/cloudflared) atau di bawah home direktori milik root, bukan di folder user VM anda.

Untuk mendaftarkannya sebagai system service yang berjalan otomatis saat booting, file konfigurasi dan file kredensial .json sebaiknya dipindahkan ke direktori global sistem /etc/cloudflared.

Buat folder konfigurasi global di dalam direktori /etc:

bash
# Buat Direktori Sistem Cloudflared
sudo mkdir -p /etc/cloudflared

Salin file config.yml dan file token .json yang berada di folder user <USERNAME> ke folder sistem yang baru dibuat:

bash
# Salin berkas config.yml
sudo cp /home/<USERNAME>/.cloudflared/config.yml /etc/cloudflared/config.yml

# Salin berkas kredensial .json
sudo cp /home/<USERNAME>/.cloudflared/*.json /etc/cloudflared/

# Amankan hak akses berkas agar hanya bisa dibaca oleh `root`
sudo chmod 600 /etc/cloudflared/<TUNNEL_ID_ANDA>.json
sudo chmod 644 /etc/cloudflared/config.yml

Karena file .json sudah dipindahkan ke /etc/cloudflared, Anda perlu mengubah isi credentials-file di dalam /etc/cloudflared/config.yml agar mengarah ke lokasi baru.

Buka file menggunakan editor teks:

bash
# Sesuaikan Path /config.yml

sudo nano /etc/cloudflared/config.yml

Ubah baris credentials-file menjadi seperti ini (sesuaikan dengan ID tunnel Anda):

yaml
tunnel: <TUNNEL_ID_ANDA>
credentials-file: /etc/cloudflared/<TUNNEL_ID_ANDA>.json

ingress:
  - hostname: ssh.domainanda.com
    service: ssh://localhost:22
  - service: http_status:404

Tekan Ctrl + O lalu Enter untuk menyimpan, dan Ctrl + X untuk keluar dari nano.

5. Jalankan sebagai Service Sistem

Sekarang sistem sudah siap, jalankan kembali perintah instalasi:

bash
sudo cloudflared service install

Setelah perintah di atas berhasil, aktifkan dan jalankan service-nya dengan perintah berikut:

bash
# Enable service agar otomatis jalan saat VM restart
sudo systemctl enable cloudflared

# Jalankan service sekarang
sudo systemctl start cloudflared

Untuk memastikan tunnel Anda sudah aktif dan berjalan normal di latar belakang, Anda bisa memeriksa statusnya dengan perintah:

bash
sudo systemctl status cloudflared

Tahap 2: Pengujian Koneksi

Jangan tutup sesi SSH utama Anda. Buka jendela terminal baru di komputer lokal Anda (laptop/PC Anda sendiri) untuk menguji apakah tunnel SSH sudah bekerja.

Di komputer lokal Anda, Anda juga harus menginstal cloudflared:

bash
winget install Cloudflare.cloudflared

Kemudian jalankan perintah SSH dengan memanfaatkan ProxyCommand:

bash
# Perintah SSH dari komputer lokal Anda melalui Cloudflare Tunnel
ssh -i "C:\path\to\your\private_key.pem" -o ProxyCommand="cloudflared access ssh --hostname %h" username@ssh.domainanda.com

Tips

Agar tidak perlu mengetik perintah panjang tersebut setiap saat, tambahkan konfigurasi berikut ke dalam berkas ~/.ssh/config di komputer lokal Anda:

bash
Host azure-vm
    HostName ssh.domainanda.com
    User username
    IdentityFile C:\path\to\your\private_key.pem
    ProxyCommand cloudflared access ssh --hostname %h

Ganti C:\path\to\your\private_key.pem dengan lokasi asli file privat key Anda di Windows.

Setelah disimpan, Anda cukup menjalankan perintah ini di PowerShell:

Powershell
ssh azure-vm

Dengan metode ini, VM Anda kini sepenuhnya privat (tidak memiliki Public IP), namun tetap dapat Anda kendalikan via SSH dari mana saja melalui jaringan aman Cloudflare.