Onlinekan Proxmox dengan ZeroTrust CloudFlare
Saya adalah penguna setia Proxmox dalam soal virtualisasi server. Saya menggunakannya sebagai hypervisor Tipe-1 yang diinstal di server lokal dan berada di jaringan lokal. Saya selalu mengakses proxmox hanya ketika di kantor saja menggunakan jaringan perusahaan. Saya merencanakan agar server proxmox ini bisa diakses secara online agar ketika saya diluar kantor atau sedang berada dirumah masih tetap bisa terkoneksi dengan server untuk konfigurasi server.
Saya awalnya menjalankan NGINX reserve proxy untuk mengakses Proxmox saya dari jarak jauh. Namun, ketika saya beralih ke pfSense Saya mulai menggunakan haProxy. Saya mengalami beberapa masalah besar dengan haProxy dan Proxmox. Saya dapat terhubung ke antarmuka admin dan mengakses VM melalui noVNC tetapi VM akan terputus terus-menerus. Saya memerlukan solusi yang berbeda, jadi saya mulai mencari tau Cloudflare Tunnel, yang awalnya disebut Argo Tunnel.
Sebenarnya ada yang lebih mudah cara untuk mengakses Proxmox secara online yaitu dengan memanfaatkan fitur NAT forwarding pada MikroTik. Namun untuk menggunakan fitur tersebut kita memerlukan IP public agar bisa diakses secara online via internet. Penggunaan mikrotik dan IP public memang lebih mudah tetapi tidak semua orang memilikinya. Disamping itu faktor resource dan keamanan dari sisi jaringan juga harus diperhatikan jika kita ingin menggunakan forwarding ke IP public via mikrotik.
Untuk solusi terakhir ini jauh lebih mudah dan lebih baik dari sisi resource maupun keamanan. Kita akan memanfaatkan fitur Zero Trust pada layanan cloudflare. Ini bisa kita gunakan secara gratis tanpa harus membayar biaya langganan.
Cara kerjanya adalah dengan memanfaatkan tunneling. Server proxmox yang berada di lokal diteruskan ke argo tunnel milik cloudflare dan bisa kita akses melalui domain. Jadi syarat menggunakan layanan tunnel di zero trust cloudflare adalah kita harus memiliki satu domain aktif yang sudah terhubung ke nameserver cloudflare. Pada artikel sebelumnya saya sudah membahas Cara Menghubungkan Domain ke Cloudflare.
Sebelum melanjutkan ke langkah dibawah, pastikan kamu sudah mempunyai akun cloudflare dan sudah mempunyai domain aktif yang sudah terhubung ke nameserver cloudflare. Jika kamu baru menghubungkan domain ke nameserver Cloudflare, silahkan tunggu sekitar 1x24 jam untuk proses propagasi DNS.
Langkah 1 : Instal Cloudflared
Login ke proxmox menggunakan ssh client untuk mengunduh dan mengkonfigurasi paket yang diperlukan.wget -q https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb && dpkg -i cloudflared-linux-amd64.deb
Setelah itu login ke akun cloudflare.
cloudflared tunnel login
Perintah ini akan menghasilkan sebuah link untuk login ke akun cloudflare. Silahkan copy ke browser dan login menggunakan akun cloudflare.
Langkah 2 : Membuat Tunnel Baru
Buat sebuah tunnel baru dengan nama bebas.cloudflared tunnel create nama_tunnel
Ketika perintah dijalankan maka akan menghasilkan ID tunnel. Salin ID tunnel ini dan simpan untuk nanti ketika kita membutuhkannya. Setelah membuat tunnel baru, lanjut membuat file config.yml.
nano ~/.cloudflared/config.yml
File ini kemungkinan besar kosong sehingga kita harus mengonfigurasinya secara manual. Sesuaikan dengan ID tunnel dan domain masing-masing.
tunnel: ID_tunnel
credentials-file: /root/.cloudflared/ID_tunnel.json
ingress:
- hostname: domain-kamu.com
service: https://localhost:8006
originRequest:
disableChunkedEncoding: true
noTLSVerify: true
- service: http_status:404
Keterangan :
nonaktifkanChunkedEncoding
Saya tidak 100% yakin mengapa Proxmox menggunakan Chunked Encoding tetapi saya dapat mengonfirmasi melalui pengujian saya bahwa menghilangkan perintah ini akan mencegah Anda memulai/menghentikan VM melalui tunnel. Tunnel Cloudflare tidak mendukung HTTP Chunked Encoding.
noTLSVerifikasi
Karena Proxmox memiliki sertifikat SSL yang ditandatangani sendiri, Kita perlu memberi tahu Cloudflare untuk mengabaikan sertifikat tersebut dan tidak ada upaya untuk memverifikasi keasliannya terhadap CA.
Langkah 3 : Buat permintaan CNAME di DNS Domain
Kita perlu membuat permintaan CNAME untuk tunnel agar tunnel bisa diakses menggunakan domain yang sudah terhubung ke cloudflare.cloudflared tunnel route dns ID_tunnel domain-anda.com
Untuk memastikan bahwa CNAME sudah terdaftar di record DNS domain, silahkan akses dashboard cloudflare di https://dash.cloudflare.com/ pada menu Websites pilih salah satu domain yang aktif. Kemudian pilih pada menu DNS --> Record. Pastikan muncul CNAME baru seperti gambar dibawah ini.
Langkah 4 : Jalankan Tunnel
Agar server proxmox kita terhubung ke tunnel cloudflare yang baru kita buat, silahkan jalankan tunnel dengan perintah berikut.cloudflared tunnel run ID_tunnel
Pastikan yang kita masukkan adalah ID Tunnel bukan nama tunnel.
Langkah 5 : Akses Dashboard Zero Trust Cloudflare
Untuk memonitoring tunnel kita silahkan akses halaman dashboard zero trust di https://one.dash.cloudflare.com lalu ke menu Access --> Tunnels .Kita bisa melihat beberapa informasi tunnel seperti nama tunnel, ID tunnel, status, domain dan uptime. Kita bisa menambahkan beberapa tunnel disini untuk server proxmox yang lain. Jika domain utama sudah digunakan oleh tunnel lain kita bisa menggunakan subdomain. Contoh domain imamsyafii.my.id sudah saya gunakan untuk route tunnel Lab-Imam. Maka jika akan membuat tunnel baru lagi bisa menggunakan subdomain server2.imamsyafii.my.id dan seterusnya.