Pemain baru join, layar loading berhenti di "Downloading resources", lalu mereka menunggu lima, sepuluh, kadang lima belas menit. Sebagian menyerah sebelum sempat masuk kota. Kalau servermu punya banyak MLO, kendaraan custom, dan clothing, kemungkinan besar masalahnya bukan di gameplay, tapi di cara resource dikirim ke pemain.
FXServer punya fitur bawaan untuk memindahkan beban itu ke server lain: fileserver_add. Panduan ini menjelaskan cara kerjanya, cara memasang CDN di depan FXServer, cara memastikan resource benar-benar dilayani dari cache, dan apa yang perlu dicek kalau ada yang tidak jalan.
Kenapa download resource FiveM bisa lambat?
Secara default, setiap pemain yang join mengunduh semua resource yang belum ada di cache lokal mereka langsung dari FXServer, lewat HTTP di port yang sama dengan game (biasanya 30120). Artinya FXServer melakukan dua pekerjaan sekaligus: menjalankan gameplay dan menjadi file server.
Beberapa hal yang membuat proses ini lambat:
- Ukuran resource streaming. MLO, kendaraan addon, dan clothing pack bisa mencapai ratusan MB sampai beberapa GB untuk pemain baru.
- Uplink server terbagi. Saat sepuluh pemain baru join bersamaan setelah restart, mereka berebut bandwidth upload yang sama dengan trafik game pemain yang sudah di dalam.
- Jarak. Kalau FXServer ada di Eropa atau Amerika dan pemainmu di Indonesia, setiap file menempuh perjalanan jauh. Download TCP jarak jauh cenderung lebih lambat daripada dari lokasi dekat.
- Batas port atau kuota transfer di penyedia hosting.
Untuk diagnosis yang lebih lengkap (termasuk cara mengecilkan resource), baca cara mempercepat download resource FiveM.
Bagaimana fileserver_add bekerja?
fileserver_add adalah perintah FXServer untuk mengarahkan download resource ke URL lain. Formatnya:
fileserver_add "POLA_NAMA_RESOURCE" "URL_FILE_SERVER"Pola pertama adalah regex nama resource. ".*" berarti semua resource. Ketika pemain join, FXServer memberi tahu client: "untuk resource yang cocok dengan pola ini, ambil file-nya dari URL ini, bukan dari saya". Client lalu mengunduh dari alamat tersebut.
CDN di sini bekerja sebagai reverse proxy dengan cache. Ia tidak menyimpan salinan resource kamu sejak awal. Saat pertama kali ada pemain yang meminta sebuah file, CDN mengambilnya dari FXServer (origin), menyimpannya di disk, lalu mengirimkannya ke pemain. Permintaan berikutnya untuk file yang sama dilayani langsung dari cache.
Pemain FiveM (Indonesia)
|
| download resource (HTTP)
v
+---------------------------+
| Game CDN |
| Jakarta / Singapore |
| cache resource downloads |
+---------------------------+
|
| cache MISS -> ambil sekali dari origin
v
+---------------------------+
| FXServer / origin :30120 |
| penyimpanan resource |
+---------------------------+
Gameplay (TCP/UDP 30120) tetap langsung ke FXServer.Yang penting dipahami: CDN hanya mengurus download resource. Trafik gameplay, sinkronisasi entity, dan tick server tetap berjalan langsung antara pemain dan FXServer. CDN tidak menurunkan ping in-game dan tidak memperbaiki FPS. Kalau masalahmu ada di sana, mulai dari cara optimasi server FiveM agar tidak lag.
Persiapan FXServer dan CDN endpoint
Sebelum mengubah konfigurasi, siapkan hal berikut:
- IP publik FXServer dan port-nya. CDN harus bisa menjangkau FXServer lewat HTTP. Biasanya port 30120, sama dengan port game.
- Firewall origin. Pastikan port 30120 TCP bisa diakses dari IP node CDN. Kalau kamu memakai allowlist, tambahkan IP CDN.
- Endpoint CDN. Ini alamat yang akan dipakai pemain untuk download, dalam bentuk
http://CDN_IP/files. Kalau kamu memasang CDN sendiri, ini adalah server Nginx atau sejenisnya yang dikonfigurasi sebagai cache. Kalau memakai layanan managed, alamat ini diberikan di panel. - Akses ke server.cfg dan kemampuan restart server (lewat txAdmin atau console).
- Backup server.cfg. Perubahannya kecil, tapi selalu simpan versi lama.
Kalau server kamu belum jalan sama sekali, mulai dulu dari cara membuat server FiveM sendiri dan install FiveM server di Ubuntu dengan txAdmin.
Konfigurasi server.cfg
Tambahkan satu baris di server.cfg, sebelum baris ensure atau start resource kamu:
# Arahkan semua download resource ke Game CDN
fileserver_add ".*" "http://CDN_IP/files"Ganti CDN_IP dengan IP atau hostname CDN kamu. Beberapa catatan:
- Gunakan
".*"kalau ingin semua resource lewat CDN. Ini pilihan paling sederhana dan paling umum. - Kalau hanya ingin resource tertentu, gunakan pola yang lebih spesifik, misalnya hanya resource dengan prefix tertentu. Tapi pastikan polanya benar; pola yang salah berarti resource itu tetap diunduh dari FXServer.
- Jangan memasang dua baris
fileserver_adddengan pola yang tumpang tindih kecuali kamu tahu persis urutan dan tujuannya.
Setelah itu, restart FXServer sepenuhnya. Mengulang resource satu per satu tidak cukup, karena daftar file server dikirim ke client saat mereka join.
Di console server, kamu bisa mengecek entri yang aktif:
fileserver_listCara memverifikasi resource dilayani CDN
Jangan berhenti di "sepertinya lebih cepat". Verifikasi dengan tiga cara:
1. Cek header cache dari CDN
Kebanyakan cache berbasis Nginx menambahkan header seperti X-Cache yang menunjukkan apakah respons berasal dari cache. Ambil path file dari resource yang kamu tahu ada, lalu minta dua kali:
curl -sI "http://CDN_IP/files/NAMA_RESOURCE/NAMA_FILE" | grep -i -E "HTTP/|x-cache"
curl -sI "http://CDN_IP/files/NAMA_RESOURCE/NAMA_FILE" | grep -i -E "HTTP/|x-cache"Permintaan pertama biasanya MISS (CDN mengambil dari origin), permintaan kedua HIT. Kalau dua-duanya MISS, file tidak di-cache. Kalau statusnya 404 atau 502, lompat ke bagian troubleshooting.
2. Lihat trafik keluar di origin
Bandingkan trafik upload FXServer saat pemain baru join, sebelum dan sesudah CDN aktif. Dengan CDN, origin hanya mengirim setiap file sekali ke CDN, bukan sekali per pemain. Tool sederhana seperti vnstat atau iftop sudah cukup. Kalau kamu sudah punya dashboard, gunakan monitoring FiveM dengan Prometheus dan Grafana untuk melihat grafiknya dari waktu ke waktu.
3. Uji dari client
Hapus cache FiveM di PC uji (atau gunakan PC yang belum pernah join), lalu join dan perhatikan kecepatan download. Lakukan dua kali dari dua akun atau PC berbeda: pemain pertama mengisi cache, pemain kedua seharusnya mendapat HIT.
Cache HIT, MISS, dan perubahan resource
- MISS: file belum ada di cache. CDN mengambilnya dari FXServer, lalu menyimpannya.
- HIT: file sudah ada di cache dan dikirim langsung ke pemain tanpa menyentuh origin.
Pertanyaan yang paling sering muncul: kalau resource diupdate, apakah pemain akan mendapat versi lama dari cache? Pada FXServer, URL file membawa penanda versi resource. Ketika resource berubah, URL-nya ikut berubah, sehingga CDN menganggapnya file baru dan mengambil ulang dari origin. Cache versi lama tidak dipakai lagi dan akhirnya tergeser.
Konsekuensinya: setelah update besar (misalnya mengganti clothing pack), pemain pertama yang join akan memicu banyak MISS. Itu normal. Kalau mau, kamu bisa join sendiri setelah restart untuk "memanaskan" cache sebelum jam ramai.
Troubleshooting masalah umum
| Gejala | Kemungkinan penyebab | Yang dicek |
|---|---|---|
| Pemain stuck di download, tidak bergerak | CDN tidak bisa menjangkau origin | Firewall origin, IP/port origin di konfigurasi CDN, curl dari node CDN ke http://ORIGIN:30120/ |
| 404 dari CDN | Path salah di fileserver_add | Apakah URL berakhir dengan /files, typo hostname |
| Selalu MISS | Cache tidak menyimpan respons atau disk cache penuh | Konfigurasi cache, kapasitas disk |
| Error mixed content / HTTPS | URL https:// mengarah ke endpoint yang hanya HTTP | Samakan skema dengan yang didukung endpoint |
| Tidak ada perubahan sama sekali | Server belum di-restart penuh, atau baris ada setelah resource dimulai | fileserver_list, posisi baris di server.cfg |
Panduan debug yang lebih detail ada di troubleshooting FiveM CDN. Kalau masalahnya pemain crash atau gagal connect, bukan download lambat, cek cara mengatasi FiveM crash dan stuck loading.
Kapan managed CDN lebih masuk akal?
Kamu bisa membangun CDN sendiri dengan VPS dan Nginx. Itu pilihan yang valid kalau tim kamu nyaman mengurus Linux, konfigurasi cache, monitoring disk, dan update keamanan. Perbandingan lengkapnya ada di self-hosted vs managed CDN FiveM.
Managed CDN lebih masuk akal kalau:
- Tidak ada yang di tim yang mau jadi "orang Nginx".
- FXServer kamu di luar Indonesia, tapi pemainnya mayoritas di Indonesia.
- Kamu butuh purge cache atau ganti origin tanpa SSH.
Supaya transparan: Noctis menjual Game CDN. Setiap layanan adalah satu node di Akamai Cloud (Linode) di Jakarta atau Singapore, dijual ulang oleh Noctis, dengan disk khusus cache (25, 50, atau 80 GiB) dan transfer 900 GB sampai 3,6 TB per bulan, mulai Rp 250.000/bulan. Node melayani HTTP; kalau kamu butuh alamat https://, pasang domain yang di-proxy Cloudflare di depan IP CDN. Purge cache dan ganti FXServer bisa dilakukan dari panel. Game CDN tidak menyertakan anti-DDoS dan tidak mengubah jalur gameplay.
FAQ
Apakah fileserver_add berlaku untuk RedM?
Ya. RedM memakai FXServer yang sama, jadi baris yang sama berlaku.
Apakah CDN membuat ping atau FPS lebih baik?
Tidak. CDN hanya mempercepat dan memindahkan beban download resource. Ping ditentukan jalur jaringan ke FXServer, dan FPS ditentukan PC pemain serta resource client-side.
Apakah saya perlu memindahkan FXServer?
Tidak. FXServer tetap di tempatnya. CDN hanya perlu bisa menjangkau FXServer lewat HTTP.
Apakah pemain perlu mengubah sesuatu?
Tidak. Pemain join seperti biasa. Client otomatis mengikuti URL yang diberikan server.
Bagaimana cara mematikan CDN kalau ada masalah?
Hapus atau beri komentar pada baris fileserver_add, lalu restart server. Download kembali langsung dari FXServer.
Referensi
- Dokumentasi perintah server Cfx.re: docs.fivem.net/docs/server-manual/server-commands/
- Apa itu FiveM CDN dan kapan server membutuhkannya
- Menghitung bandwidth server FiveM
Punya server FiveM dengan banyak MLO dan custom vehicle? Noctis Game CDN menyimpan cache resource kamu di Jakarta atau Singapore tanpa perlu memindahkan FXServer. Lihat layanan Game CDN Noctis.