Panduan Mengamankan Ekspos Layanan Lokal di ServBay dengan Cloudflare Tunnel
Cloudflare Tunnel (sebelumnya Argo Tunnel) adalah layanan jaringan Zero Trust dari Cloudflare yang memungkinkan Anda mengekspos web service, SSH, atau aplikasi apa pun yang berjalan secara lokal ke internet dengan aman tanpa harus membuka port publik atau membuat aturan firewall yang rumit. Panduan ini membahas langkah demi langkah cara menggunakan alat klien cloudflared
untuk membangun tunnel aman pada lingkungan pengembangan web lokal ServBay, sehingga layanan ServBay Anda dapat diakses dari internet.
Keunggulan Utama:
- Peningkatan Keamanan: Manfaatkan perlindungan Cloudflare global, termasuk perlindungan DDoS dan Web Application Firewall (WAF).
- Konfigurasi Jaringan Lebih Mudah: Tidak perlu repot dengan port forwarding, NAT, atau aturan firewall.
- Berbasis Zero Trust: Koneksi bersifat outbound, meminimalkan permukaan serangan.
- Integrasi Fitur Cloudflare: Gunakan cache, optimasi, dan analitik dari Cloudflare.
Ringkasan
ServBay menyediakan lingkungan pengembangan lokal terintegrasi dan mudah dikelola untuk developer, mendukung banyak bahasa pemrograman (PHP, Node.js, Python, Go, Java, Ruby, Rust, dsb.), database (MySQL, PostgreSQL, MongoDB, Redis, dsb.), serta web server (Caddy, Nginx, Apache). Biasanya, situs atau aplikasi yang dikembangkan di ServBay hanya dapat diakses secara lokal. Dengan tambahan Cloudflare Tunnel, Anda bisa berbagi progres pengembangan dengan tim secara mudah, atau membuka akses sementara maupun permanen ke layanan lokal untuk pengguna eksternal, sembari memanfaatkan keamanan dan performa dari Cloudflare.
Prinsip Kerja
Konsep inti dari Cloudflare Tunnel adalah menjalankan klien cloudflared
di komputer lokal Anda (tempat ServBay berjalan), yang secara aktif membuat satu atau lebih koneksi terenkripsi via protokol QUIC ke node edge Cloudflare terdekat. Karena koneksi ini bersifat outbound, Anda tidak perlu atur rule inbound di router atau firewall Anda. Ketika user mengakses layanan melalui domain yang terhubung ke tunnel, trafik masuk ke edge Cloudflare, kemudian diteruskan melalui tunnel yang sudah dibuat ke klien cloudflared
lokal, lalu permintaan dilanjutkan ke layanan lokal ServBay Anda (misalnya, situs di https://servbay.local
atau http://localhost:8000
). Proses respons berjalan balik via rute yang sama.
Persiapan Lingkungan
Sebelum mulai konfigurasi, pastikan Anda sudah menyiapkan hal berikut:
- ServBay sudah terpasang dan berjalan lancar: ServBay harus aktif, dan situs/layanan lokal yang ingin diekspos telah berjalan, misal domain lokal default
servbay.local
bisa diakses. - Akun Cloudflare: Anda memiliki akun Cloudflare.
- Domain yang sudah dikelola di Cloudflare: Anda punya domain yang telah ditambahkan ke akun Cloudflare dan DNS-nya dikelola Cloudflare.
- Klien
cloudflared
sudah terpasang: Instal cloudflared CLI di perangkat macOS tempat ServBay berjalan.
1. Instal Klien cloudflared
Untuk sistem macOS, Homebrew sangat direkomendasikan. Jika belum, instal Homebrew terlebih dahulu dari dokumentasi resminya.
Instal via Homebrew (disarankan):
bash
brew update
brew install cloudflared
1
2
2
Unduh manual (untuk arsitektur ARM macOS):
bash
# Unduh binary untuk macOS ARM (Apple Silicon)
curl -L https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-darwin-arm64.tgz | tar xz
# Pindahkan binary ke direktori PATH sistem
sudo mv cloudflared /usr/local/bin/
1
2
3
4
2
3
4
Verifikasi instalasi: Setelah selesai, pastikan cloudflared
sudah terpasang dan cek versi:
bash
cloudflared --version
# Contoh output: cloudflared version 2024.5.0 (built 2024-05-01)
1
2
2
Versi bisa bervariasi; yang terpenting perintah menampilkan info versi sebagai tanda instalasi berhasil.
2. Login ke Akun Cloudflare
Eksekusi perintah berikut di terminal untuk otorisasi akun Cloudflare:
bash
cloudflared tunnel login
1
Perintah akan otomatis membuka browser Anda dan mengarahkan ke halaman otorisasi Cloudflare. Pilih akun Cloudflare yang terkait dengan domain Anda dan berikan akses untuk cloudflared. Setelah berhasil, browser menampilkan info sukses, dan di terminal akan ada notifikasi, serta file cert.pem
dibuat di direktori konfigurasi default (~/.cloudflared/
).
Praktik Konfigurasi Tunnel
Berikut adalah cara membuat tunnel baru dan mengarahkannya ke layanan lokal yang dijalankan di ServBay.
Alur Konfigurasi Utama
Buat Tunnel Baru
Jalankan perintah berikut untuk membuat tunnel baru. Berikan nama yang mudah dikenali, misalnya
servbay-demo-tunnel
.bashcloudflared tunnel create servbay-demo-tunnel
1Setelah berhasil, terminal akan menampilkan ID tunnel (berformat UUID) dan path file
credentials-file
. Catat ID tunnel, misala7b8c9d0-e1f2-3a4b-5c6d-7e8f9a0b1c2d
. File JSON dengan kredensial tunnel akan dibuat di~/.cloudflared/
, misala7b8c9d0-e1f2-3a4b-5c6d-7e8f9a0b1c2d.json
. Simpan baik-baik file ini.Atur DNS Record
Supaya Cloudflare tahu ke mana mengarahkan trafik domain tertentu lewat tunnel, buat record CNAME di DNS melalui perintah berikut:
bashcloudflared tunnel route dns servbay-demo-tunnel servbay-demo.yourdomain.com
1Ganti
servbay-demo-tunnel
dengan nama tunnel yang Anda buat, danservbay-demo.yourdomain.com
dengan subdomain yang ingin digunakan (pastikanyourdomain.com
sudah dikelola di Cloudflare).Perintah akan menambahkan CNAME di DNS Cloudflare untuk
servbay-demo.yourdomain.com
yang mengarah ke<ID_TUNNEL>.cfargotunnel.com
.Buat File Konfigurasi
cloudflared
menggunakan file YAML untuk konfigurasi perilaku tunnel, termasuk pengaturan layanan lokal mana yang diekspos lewat domain apa. File config default ada di~/.cloudflared/config.yml
. Jika belum ada, buat file baru.Isi file
~/.cloudflared/config.yml
kurang lebih seperti berikut:yaml# tunnel: UUID dari tunnel, ganti dengan ID yang Anda dapatkan saat create tunnel tunnel: a7b8c9d0-e1f2-3a4b-5c6d-7e8f9a0b1c2d # credentials-file: path ke file kredensial tunnel di ~/.cloudflared/, sesuai UUID tunnel credentials-file: /Users/yourusername/.cloudflared/a7b8c9d0-e1f2-3a4b-5c6d-7e8f9a0b1c2d.json # Ganti username dan path sesuai sistem Anda ingress: # Rule permintaan masuk ke tunnel - hostname: servbay-demo.yourdomain.com # Domain external, harus sesuai dengan DNS yang dikonfigurasi service: https://servbay.local # Alamat layanan ServBay lokal. ServBay default menyediakan servbay.local dan SSL. originRequest: # noTLSVerify: true # Jika layanan lokal memakai sertifikat self-signed (seperti dari ServBay User CA), aktifkan ini agar lewati verifikasi TLS # Jika situs ServBay memakai sertifikat valid (misal dari Let's Encrypt via fitur ACME dari ServBay), tidak wajib menggunakan opsi ini. # Untuk pengembangan, kombinasi sertifikat User CA ServBay dengan noTLSVerify: true umum dipakai. - service: http_status:404 # Rule fallback default, jika semua hostname tidak cocok, balas 404.
1
2
3
4
5
6
7
8
9
10
11
12
13
14Catatan penting:
- Pastikan nilai pada
tunnel
dancredentials-file
sesuai dengan hasil pembuatan tunnel. - Ganti
hostname
dengan subdomain yang dikonfigurasi pada langkah 2. service: https://servbay.local
adalah alamat default HTTPS ServBay. Jika layanan lokal berjalan pada port/adress berbeda (misal Node.js dihttp://localhost:3000
), sesuaikan juga bagian ini.- Opsi
originRequest.noTLSVerify: true
harus diaktifkan kalau layanan lokal pakai sertifikat self-signed ServBay User CA. Jika sudah memakai sertifikat SSL yang valid, tidak perlu menggunakan opsi ini.
- Pastikan nilai pada
Menjalankan Layanan Tunnel
Setelah file konfigurasi siap, jalankan tunnel dengan perintah:
bash
cloudflared tunnel run servbay-demo-tunnel
1
Ganti servbay-demo-tunnel
dengan nama tunnel buatan Anda.
cloudflared
akan terhubung ke jaringan Cloudflare dan membangun tunnel. Status dan log bisa diikuti lewat terminal. Selama perintah ini berjalan di foreground, tunnel tetap aktif. Jika ingin berjalan di background atau memulai sebagai layanan sistem otomatis (misal via launchctl
di macOS), silakan atur sesuai preferensi (di luar cakupan dokumen ini).
Verifikasi Layanan
Setelah tunnel aktif, Anda bisa mengakses layanan ServBay lokal dari jaringan eksternal via domain yang telah dikonfigurasi.
Akses Domain yang Terkonfigurasi: Buka browser dan arahkan ke domain yang telah diatur pada langkah 2, contoh:
https://servbay-demo.yourdomain.com
.Periksa Hal Berikut:
- Halaman yang muncul seharusnya sama persis dengan saat Anda mengakses langsung
https://servbay.local
di komputer lokal. - Pada address bar browser, muncul valid SSL certificate—ini dikeluarkan Cloudflare untuk domain Anda (bukan sertifikat ServBay lokal; sertifikat lokal hanya digunakan pada koneksi antara cloudflared dan ServBay).
- Di tab network/devtools browser, HTTP header seperti
CF-RAY
seharusnya ada, menandakan trafik melewati infrastruktur Cloudflare.
- Halaman yang muncul seharusnya sama persis dengan saat Anda mengakses langsung
Tips Konfigurasi Lanjutan
Routing Multi-Layanan
Anda bisa mendefinisikan beberapa rule sekaligus di bagian ingress
file config, untuk mengarahkan trafik berdasarkan hostname
ke layanan lokal berbeda—misal, frontend & API.
yaml
ingress:
- hostname: api.yourdomain.com
service: http://localhost:8080 # Misal API di port 8080 lokal
- hostname: app.yourdomain.com
service: https://servbay.local # Situs utama
- service: http_status:404
1
2
3
4
5
6
2
3
4
5
6
Monitoring Trafik & Logging
Beberapa perintah penting dari cloudflared:
- Lihat metrik real-time:bash
cloudflared tunnel info servbay-demo-tunnel
1 - Cek log detail: Perintah
cloudflared tunnel run
langsung menampilkan log di terminal. Anda dapat atur level log atau output ke file sesuai kebutuhan.
Integrasi Cloudflare Access
Untuk keamanan ekstra, kombinasikan dengan Cloudflare Access guna menambah otentikasi & otorisasi pada layanan yang diekspos via tunnel. Cloudflare Access adalah bagian dari platform Zero Trust, menawarkan kontrol akses yang jauh lebih fleksibel dibanding VPN tradisional. Konfigurasinya dilakukan via Cloudflare Dashboard.
Troubleshooting
Jika menemui masalah selama proses, berikut beberapa kendala umum dan solusinya:
Masalah | Solusi |
---|---|
Akses domain tampil 502 Bad Gateway | Pastikan layanan ServBay lokal running dan dapat diakses (uji akses ke https://servbay.local atau alamat lokal lain dari browser).Periksa alamat & port pada service di config.yml .Jika layanan gunakan HTTPS & noTLSVerify belum diaktifkan, cek validitas sertifikat lokal atau aktifkan noTLSVerify . |
Error resolusi DNS, domain tidak bisa diakses | Pastikan CNAME di DNS Cloudflare ditambahkan ke <ID_TUNNEL>.cfargotunnel.com . Gunakan perintah dig atau nslookup untuk cek. |
Saat akses domain muncul error sertifikat | Jika sertifikat Cloudflare bermasalah, cek apakah konfigurasi hostname di config.yml sama dengan domain yang diakses.Jika error berasal dari koneksi TLS antara cloudflared dan layanan lokal, cek alamat pada service serta aktifkan originRequest.noTLSVerify: true jika perlu. |
Perintah cloudflared tunnel run error | Periksa apakah file ~/.cloudflared/config.yml ada dan format YAML sudah benar.Cek nilai tunnel dan credentials-file (UUID & path file kredensial).Pastikan cloudflared memiliki akses baca ke file kredensial dan konfigurasi. |
Koneksi lambat/tidak stabil | Pastikan koneksi internet Anda stabil. Cloudflare Tunnel memakai protokol QUIC, cek apakah jaringan mendukung. Pertimbangkan pengaturan lokasi Cloudflare atau kontak support Cloudflare. |
Kelebihan Solusi Ini
Dengan mengintegrasikan Cloudflare Tunnel pada ServBay, developer akan:
- Berbagi hasil pengembangan dengan aman: Mudah untuk demo ke klien atau anggota tim secara real-time.
- Menguji callback eksternal: Cek webhook ataupun callback eksternal yang butuh akses publik.
- Perlindungan enterprise: Gunakan fitur keamanan Cloudflare seperti DDoS mitigation dan WAF, menjaga layanan lokal dari serangan.
- Sederhana dalam konfigurasi: Tidak pusing lagi dengan port forwarding dan pengaturan firewall rumit.
- Nikmati jaringan global Cloudflare: Optimasi kecepatan dan reliabilitas akses secara otomatis.
ServBay sebagai lingkungan pengembangan kuat, didukung kemampuan ekspos aman dari Cloudflare Tunnel, menyediakan workflow yang efisien dan aman untuk developer modern.
Kesimpulan
Dokumen ini menjabarkan proses instalasi dan konfigurasi cloudflared di lingkungan ServBay, serta cara membuat dan menjalankan Cloudflare Tunnel agar layanan web lokal Anda dapat diakses dengan aman dari internet. Dengan memanfaatkan kemampuan multi stack dari ServBay dan keunggulan keamanan Cloudflare Tunnel, produktivitas dan kolaborasi pengembangan Anda akan sangat terbantu. Ingatlah, Cloudflare Tunnel adalah bagian dari platform Zero Trust Cloudflare; ada baiknya juga mengeksplorasi fitur lanjutan seperti Cloudflare Access demi kontrol akses dan keamanan tambahan.