Bagian 6 β Expose ke Internet dengan Cloudflare Tunnel Β· Langkah 30 dari 38
Konfigurasi Tunnel (config.yml + DNS route)
Beri tahu tunnel: hostname mana β port berapa. Jembatan antara DNS dan aplikasimu.
Isi kepala dulu: ingress = peta rute
config.yml menjawab: 'kalau ada yang masuk ke hostname X, teruskan ke service lokal mana?'. Ini analog persis location block nginx β dua reverse proxy sekarang tersambung: Cloudflare edge β terowongan β cloudflared β nginx (atau langsung port app).
tunnel: TUNNEL_UUID # dari output create / cloudflared tunnel list
credentials-file: /home/USERNAME/.cloudflared/TUNNEL_UUID.json
ingress:
- hostname: app.domainmu.com
service: http://localhost:80 # lewat nginx (rekomendasi)
# service: http://localhost:3000 # ATAU langsung ke app tanpa nginx
- service: http_status:404 # aturan catch-all wajib: selain rute atas β 404UUID + path credentials dari hasil cloudflared tunnel create. hostname: subdomain pilihanmu di bawah domain yang aktif di Cloudflare
Pilih rute: nginx atau langsung?
- β localhost:80 (nginx) β pilih ini: aturan HTTPS/header/logging-mu terpusat di nginx, tunnel cuma 'pipa'. Konsisten dengan arsitektur yang sudah dibangun.
- β localhost:3000 (langsung app) β lebih pendek tapi bypass nginx; hanya praktis kalau memang tidak pakai nginx.
1. Rute DNS β tunnel
$cloudflared tunnel route dns web-journey app.domainmu.comotomatis membuat CNAME record di zone Cloudflare β kamu tidak perlu sentuh dashboard DNS
2. Uji manual sebelum jadikan service
$cloudflared tunnel run web-journeybiarkan jendela SSH ini terbuka β tunnel aktif selama prosesnya hidup
Buka https://app.domainmu.com dari browser HP-mu memakai data seluler (BUKAN wifi rumah yang sama) β halaman aplikasi muncul? Beres β dunia sudah bisa mengakses VM di kamarmu. (Beri ~1-2 menit agar DNS route tersinkron.) Ctrl+C untuk menghentikan β step berikutnya membuatnya permanen.
β Tanda berhasil β centang kalau sudah kamu lihat/buktikan sendiri
Tombol βlanjutβ terbuka setelah semua tercentang β bukan hukuman, tapi jaring pengaman: pastikan step ini benar-benar beres sebelum menumpuk step berikutnya di atasnya.
Lagi bermasalah?
Error 1033 / DNS resolution is not configured
route dns belum dijalankan atau hostname di config β hostname yang dirute. Cek cloudflared tunnel route dns list web-journey dan cocokkan ejaan persis dengan config.yml.
Error 1101 / tunnel tidak mau connect
cloudflared gagal membuat koneksi keluar: cek internet VM (ping 1.1.1.1). Kalau nameserver belum aktif di Cloudflare, domain juga tidak resolve. Run manual dengan cloudflared tunnel run --loglevel debug web-journey untuk melihat tahap kegagalannya.
Domain utama ( apex, domainmu.com tanpa subdomain) bisa?
Bisa β hostname di config & route dns isi domainmu.com tanpa prefix. Untuk belajar lebih jelas pakai subdomain dulu.