Troubleshooting FiveM CDN: Resource Gagal Download, 404 dan Cache

Pemain stuck saat download resource atau dapat error 404 setelah memasang CDN? Panduan langkah demi langkah untuk memeriksa fileserver_add, endpoint /files/, koneksi CDN ke origin, masalah HTTP/HTTPS, dan perilaku cache.

5 menit baca FiveM

Memasang CDN untuk FiveM biasanya cuma satu baris di server.cfg. Tapi kalau baris itu salah, atau CDN tidak bisa menjangkau server kamu, dampaknya langsung terasa: pemain stuck di layar loading, download berhenti di resource tertentu, atau muncul error yang tidak jelas asalnya.

Panduan ini membahas cara mendiagnosis masalah CDN FiveM secara berurutan, dari yang paling sering terjadi sampai yang jarang. Kalau kamu belum memasang CDN sama sekali, mulai dulu dari cara pasang CDN FiveM dengan fileserver_add. Kalau masih bingung konsepnya, baca apa itu FiveM CDN.

Langkah 0: pastikan masalahnya memang di CDN

Sebelum mengubah apa pun, lakukan tes paling sederhana: nonaktifkan CDN sementara. Beri komentar pada baris fileserver_add, restart server, lalu coba join.

# fileserver_add ".*" "http://CDN_IP/files"
  • Kalau tanpa CDN pemain bisa masuk normal, masalahnya ada di jalur CDN. Lanjutkan ke langkah berikutnya.
  • Kalau tanpa CDN masalahnya tetap sama, penyebabnya kemungkinan besar resource itu sendiri (file rusak, stream terlalu besar, dependency hilang) atau koneksi pemain. Baca cara mengatasi FiveM crash dan stuck loading.

Tes ini menghemat banyak waktu. Banyak laporan "CDN rusak" ternyata resource yang memang gagal dimuat di mana pun.

Langkah 1: periksa baris fileserver_add

Kesalahan ketik adalah penyebab nomor satu. Bentuk yang benar untuk Noctis Game CDN:

fileserver_add ".*" "http://CDN_IP/files"

Hal yang perlu dicek:

  • Pola ".*" berarti semua resource dialihkan ke CDN. Kalau kamu memakai pola lain, pastikan regex-nya cocok dengan nama resource yang dimaksud.
  • Akhiran /files harus ada dan tanpa garis miring tambahan yang aneh, misalnya /files//.
  • Skema http://. Node Noctis Game CDN melayani HTTP. Menulis https://CDN_IP/files langsung ke IP akan gagal karena tidak ada sertifikat TLS di sana.
  • Hanya satu baris yang aktif. Kalau ada beberapa fileserver_add dari percobaan lama (misalnya sisa setup CDN lain), hapus yang tidak dipakai.
  • Posisi baris. Letakkan sebelum baris ensure resource, lalu restart penuh server, bukan hanya restart satu resource.

Langkah 2: apakah CDN bisa menjangkau origin?

CDN bekerja sebagai cache: saat file belum ada di cache (MISS), node CDN mengambilnya dari FXServer kamu. Kalau CDN tidak bisa menghubungi FXServer, setiap MISS akan gagal.

Penyebab umumnya:

  • Firewall origin hanya mengizinkan IP tertentu, dan IP node CDN tidak termasuk. Kalau kamu memakai allowlist, tambahkan IP CDN untuk port TCP 30120 (atau port FXServer kamu).
  • IP atau port origin salah saat order. Misalnya kamu pindah server tapi CDN masih mengarah ke IP lama.
  • FXServer hanya listen di IP privat atau di belakang NAT tanpa port forward.

Dari mesin lain di internet (bukan dari server itu sendiri), cek apakah port HTTP FXServer bisa dijangkau:

curl -sS -o /dev/null -w "%{http_code}\n" http://ORIGIN_IP:30120/info.json

Kalau hasilnya 200, FXServer menjawab HTTP dari luar. Kalau timeout, periksa firewall dan port forward dulu.

Di Noctis Game CDN, kalau IP origin berubah, pakai tombol Change FXServer di panel layanan. Node dibangun ulang untuk server baru dalam sekitar dua menit, dengan IP CDN yang sama, jadi baris fileserver_add tidak perlu diubah.

Langkah 3: membaca error 404

404 artinya CDN berhasil menjawab, tapi file yang diminta tidak ada di sumbernya. Beberapa kemungkinan:

  1. Path salah. Kalau fileserver_add mengarah ke path yang keliru, misalnya tanpa /files, CDN akan meneruskan permintaan ke path yang tidak dikenal FXServer.
  2. Resource tidak lagi di-ensure. Pemain meminta file resource yang sudah kamu hapus atau matikan, sementara daftar resource di klien masih versi lama. Biasanya selesai setelah pemain reconnect.
  3. CDN mengarah ke server yang salah. Misalnya kamu punya server dev dan production; CDN mengambil file dari server dev yang resource-nya berbeda.

Untuk mengecek, ambil URL file yang gagal dari pesan error di layar loading (atau dari log klien FiveM kalau tercatat di sana) lalu bandingkan responsnya dari origin dan dari CDN dengan path yang sama:

curl -I "http://ORIGIN_IP:30120/files/PATH_DARI_LOG"
curl -I "http://CDN_IP/files/PATH_DARI_LOG"

Kalau origin menjawab 200 tapi CDN 404, masalahnya ada di jalur CDN ke origin (langkah 2) atau CDN mengarah ke origin lain. Kalau keduanya 404, masalahnya di FXServer atau resource.

Langkah 4: memahami HIT, MISS, dan "kenapa masih lambat?"

Respons dari CDN Noctis membawa header X-Cache. Cek dengan:

curl -sI "http://CDN_IP/files/PATH_DARI_LOG" | grep -i x-cache
  • MISS: file belum ada di cache, CDN mengambilnya dari origin. Download pertama ini kecepatannya dibatasi oleh koneksi origin, bukan CDN.
  • HIT: file dilayani langsung dari disk cache CDN.

Jadi wajar kalau pemain pertama setelah update resource masih merasakan download lambat. Pemain berikutnya yang akan merasakan manfaatnya. Kalau kamu ingin cache sudah hangat sebelum jam ramai, join sekali sendiri setelah restart dan update besar.

Kalau file yang sama terus-menerus MISS, kemungkinannya:

  • Disk cache penuh sehingga file lama tergeser. Resource stream kamu lebih besar dari kapasitas cache paket (25, 50, atau 80 GiB di Noctis Game CDN). Hitung total ukuran folder resource kamu.
  • Resource berubah terus. Setiap perubahan resource dianggap file baru karena cache disimpan per versi resource. Script yang menulis file ke folder resource-nya sendiri saat berjalan bisa memicu ini.

Langkah 5: pemain dapat versi lama setelah update?

Di Noctis Game CDN, URL file dari FXServer membawa hash versi resource. Resource yang berubah otomatis dianggap file baru dan diambil ulang, jadi pemain tidak seharusnya mendapat versi lama.

Kalau tetap terjadi, cek dulu sisi klien: cache lokal FiveM pemain kadang perlu dibersihkan setelah update besar. Kalau kamu ingin memastikan semuanya bersih, gunakan Purge cache di panel layanan. Ingat bahwa setelah purge, semua download kembali menjadi MISS sampai cache terisi lagi.

Langkah 6: masalah HTTPS dan mixed content

Node CDN melayani HTTP. Kalau kamu butuh alamat https:// di fileserver_add, caranya adalah memasang domain yang di-proxy Cloudflare di depan IP CDN, lalu memakai domain itu:

fileserver_add ".*" "https://cdn.domainkamu.com/files"

Kalau cara ini gagal, yang biasanya salah:

  • Record DNS belum di-proxy (awan oranye mati), sehingga browser dan klien mencoba TLS langsung ke IP CDN.
  • Mode SSL Cloudflare diset ke Full atau Full (strict), yang membuat Cloudflare mencoba HTTPS ke node. Karena node hanya HTTP, sambungan Cloudflare ke origin harus HTTP.
  • Aturan cache atau keamanan di Cloudflare memblokir permintaan klien FiveM. Periksa Security Events di dashboard Cloudflare.

Kalau tidak ada alasan khusus untuk HTTPS, versi HTTP langsung ke IP lebih sederhana dan lebih sedikit titik gagalnya.

Langkah 7: masalah bandwidth

Bandwidth CDN dihitung per bulan kalender (900 GB, 1,8 TB, atau 3,6 TB tergantung paket). Kalau kuota habis dan tidak ada tambahan, layanan dijeda, dan pemain akan gagal download resource. Gejalanya mirip CDN mati total.

Cek sisa kuota di panel. Kamu bisa membeli bandwidth tambahan dari saldo wallet, atau mengaktifkan pay-as-you-go supaya tambahan dibeli otomatis saat kuota habis. Untuk memperkirakan kebutuhan, baca cara menghitung bandwidth server FiveM.

Checklist cepat

  1. Tanpa CDN, apakah masalah hilang?
  2. Baris fileserver_add persis ".*" "http://CDN_IP/files", hanya satu, dan server sudah restart penuh?
  3. Port HTTP FXServer bisa dijangkau dari internet, dan firewall mengizinkan IP CDN?
  4. CDN mengarah ke IP origin yang benar (cek panel)?
  5. Origin dan CDN memberi respons yang sama untuk path yang sama?
  6. Header X-Cache berubah dari MISS ke HIT setelah request kedua?
  7. Ukuran total resource masih muat di disk cache?
  8. Kuota bandwidth bulan ini masih ada?

Kapan menghubungi support

Kalau semua poin checklist sudah benar tapi masalah tetap ada, kumpulkan data berikut sebelum menghubungi support: baris fileserver_add yang dipakai, satu contoh URL yang gagal, hasil curl -I dari origin dan CDN, serta jam kejadian. Dengan data itu, masalah biasanya bisa ditemukan dalam satu kali balasan, bukan bolak-balik.

Sebagai keterbukaan: Noctis menjual layanan Game CDN, jadi contoh di artikel ini memakai perilaku node kami. Langkah diagnosis yang sama tetap berlaku untuk CDN lain atau setup nginx buatan sendiri. Kalau kamu ingin membandingkan, baca self-hosted vs managed CDN untuk FiveM, atau lihat detail layanan di Noctis Game CDN.

FAQ

Apakah CDN bisa membuat pemain gagal join padahal server normal?

Bisa. Kalau fileserver_add mengarah ke alamat yang tidak bisa dijangkau atau salah, klien tidak bisa mengunduh resource dan berhenti di loading. Itu sebabnya tes pertama selalu menonaktifkan CDN sementara.

Berapa lama sampai cache terisi?

Setiap file masuk cache saat pertama kali diminta. Jadi cache terisi seiring pemain join; tidak ada proses sinkronisasi terpisah. Satu kali join dari akunmu sendiri sudah cukup untuk menghangatkan resource yang diunduh saat itu.

Apakah purge cache aman dilakukan saat server ramai?

Aman, tapi setelah purge semua permintaan menjadi MISS dan diambil dari origin. Pada jam ramai, ini sementara menambah beban upload server kamu. Lebih baik lakukan di jam sepi.

CDN sudah HIT tapi download tetap lambat, kenapa?

Kecepatan HIT ditentukan jalur antara pemain dan node CDN. Kalau pemain jauh dari lokasi node, atau ISP-nya sedang padat, download tetap bisa lambat. Pilih lokasi node (Jakarta atau Singapore) yang paling dekat dengan mayoritas pemain. Baca juga cara mempercepat download resource FiveM.

Apakah CDN memperbaiki lag atau FPS drop?

Tidak. CDN hanya menangani download resource. Lag saat bermain berasal dari performa server, script, atau jaringan gameplay. Untuk itu, lihat cara optimasi server FiveM dan cara mengatasi packet loss FiveM.

Gabung Discord