Cara Menjalankan Server FiveM di VPS Ubuntu
Pelajari cara memasang FXServer di Ubuntu, mengunci build artifact, menambahkan kunci lisensi Cfx.re, membuka port 30120 TCP dan UDP, serta mengamankan txAdmin.
Yang dibutuhkan server FiveM pada VPS
Server FiveM pada VPS terdiri atas satu pengguna Linux tanpa hak istimewa, satu build artifact dari Cfx.re, satu kunci lisensi, serta satu port yang terbuka pada TCP dan UDP. Instalasinya memerlukan waktu sekitar sepuluh menit. Bagian lain dalam panduan ini membahas faktor yang menentukan apakah server dapat digunakan untuk bermain: kecepatan satu inti CPU, memori yang dibutuhkan resource Anda, serta panel manajemen yang tidak boleh dibiarkan terbuka pada alamat publik.
Tiga prasyarat bersifat tetap. Biner server, yang disebut artifact, berasal dari daftar build resmi Cfx.re. Kunci lisensi diperoleh dari portal Cfx.re di portal.cfx.re, layanan yang disebut keymaster dalam panduan lama. Kunci tersebut terikat pada alamat mesin yang menggunakannya. Setiap pemain yang terhubung memerlukan salinan GTA V (Grand Theft Auto V) yang sah pada Steam, Rockstar Games Launcher, atau Epic Games, serta akun Cfx.re gratis. Client memeriksa kepemilikan game saat dijalankan. Karena itu, server yang dibuat dengan cara lain tidak akan berfungsi, dan panduan ini tidak mencakup konten workaround dalam bentuk apa pun.
Hosting server berbeda dari memainkan game pada mesin tersebut. Hal ini terkait dengan apakah Anda dapat menjalankan game itu sendiri pada VPS, dan merupakan pertanyaan terpisah dengan jawaban yang berbeda.
Mengapa kecepatan single-core menentukan kelancaran server FiveM
FXServer, binary server FiveM, menjalankan logika game pada satu thread utama. Setiap resource script, setiap event handler, dan setiap pembaruan state melewati loop tunggal tersebut. Core tambahan membantu kernel, database, dan network stack. Core tambahan tidak membagi game loop. Karena itu, server dengan 4 vCPU pada core yang lambat dapat tersendat saat beban tinggi, sedangkan server dengan 2 vCPU pada core yang cepat tetap lancar.
Hal ini membalik kebiasaan umum saat memilih VPS, ketika jumlah core menjadi angka utama. Periksa kecepatan per core sebelum mengeluarkan biaya. Mulai dengan model CPU:
lscpu | grep -E 'Model name|MHz'Selanjutnya, cari skor single-thread yang dipublikasikan untuk model tersebut. Rating single thread PassMark dan skor single-core Geekbench tersedia untuk umum. Keduanya mengukur pekerjaan pada satu core, dan itulah angka yang penting dalam konteks ini. Setelah itu, ukur server yang benar-benar Anda dapatkan:
sudo apt update && sudo apt install -y sysbench
sysbench cpu --cpu-max-prime=20000 --threads=1 runBaca baris events per second. Jalankan perintah yang sama pada dua provider kandidat agar Anda dapat membandingkannya secara objektif. Beban kerjanya identik dan dibatasi pada satu core. Menjalankan benchmark VPS yang dapat diulang menjelaskan cara menjaga agar angka tersebut dapat dibandingkan antarserver.
Selanjutnya, pastikan core tersebut benar-benar tersedia untuk Anda:
vmstat 1 5Kolom terakhir, st, adalah steal time: persentase waktu ketika CPU virtual Anda siap dijalankan, tetapi hypervisor membuatnya menunggu. Angka yang terus-menerus berada di atas 1 atau 2 berarti Anda berbagi core fisik dengan pengguna lain yang menghasilkan beban tinggi. Game loop akan langsung merasakannya dalam bentuk rubber banding. Steal time akibat pengguna lain yang membebani host menjelaskan cara membaca kolom tersebut dan tindakan yang dapat dilakukan.
Kebutuhan memory mengikuti resource yang Anda jalankan, bukan hanya jumlah slot. Data server dasar dari Cfx.re menggunakan beberapa ratus megabyte. Roleplay framework dengan empat puluh atau lima puluh resource serta database MariaDB pada server yang sama merupakan konfigurasi yang berbeda. Kapasitas 4 GB merupakan batas awal yang masuk akal, sedangkan 8 GB cukup nyaman untuk 32 hingga 64 slot. Angka tersebut merupakan nilai umum yang dipublikasikan oleh setup komunitas. Gunakan sebagai titik awal, lalu pantau free -m saat pemain memberikan beban nyata.
Buat user dan instal dependensi
Jalankan server sebagai user biasa, bukan sebagai root. Ada dua alasan. Penggunaan root merupakan praktik yang buruk pada layanan yang menghadap Internet. Selain itu, artefak Linux berjalan di dalam root filesystem Alpine Linux yang disertakan, sehingga file yang diekstrak oleh root tidak dapat dieksekusi oleh user lain. Hal ini merupakan penyebab paling umum instalasi baru gagal dijalankan.
sudo adduser --disabled-password --gecos "" fivem
sudo apt update
sudo apt install -y git xz-utils curl tcpdump
sudo -iu fivemSemua langkah berikut dijalankan sebagai user fivem. xz-utils diperlukan karena file yang diunduh berupa arsip .tar.xz, sedangkan git digunakan untuk meng-clone data server dasar.
Unduh build artefak yang dipatok
Build Linux tersedia di channel build_proot_linux pada server artefak Cfx.re. Daftar tersebut menandai satu build sebagai yang direkomendasikan terbaru. Label itu berpindah ke build baru setiap beberapa minggu. Sebagai gantinya, gunakan folder bernomor secara tetap. Dengan begitu, saat Anda membangun ulang server bulan depan, Anda memperoleh binary yang sama seperti yang diuji bulan ini. Upgrade juga menjadi keputusan yang Anda ambil secara sengaja.
mkdir -p ~/FXServer/server
cd ~/FXServer/server
curl -fLO https://runtime.fivem.net/artifacts/fivem/build_proot_linux/master/25770-8ddccd4e4dfd6a760ce18651656463f961cc4761/fx.tar.xz
tar xf fx.tar.xz
lsBuild 25770 memiliki label yang direkomendasikan ketika saya membaca daftar tersebut pada Agustus 2026. Buka direktori yang sama di browser untuk melihat build saat ini. Kemudian, tempelkan nama folder tersebut ke URL. Nama itu terdiri atas nomor build dan hash commit.
ls sekarang seharusnya menampilkan run.sh dan direktori alpine. Direktori tersebut adalah inti proses ini. Artefak Linux menyertakan root filesystem Alpine kecil dan menjalankan server di dalamnya menggunakan proot, yaitu alat userspace yang mengemulasikan chroot tanpa hak akses root. Karena itu, satu unduhan dapat berjalan di Ubuntu, Debian, dan Rocky tanpa paket khusus distribusi.
Sekarang clone data server dasar. Data ini berisi resource default yang dijalankan oleh server.cfg:
git clone https://github.com/citizenfx/cfx-server-data.git ~/FXServer/server-dataDapatkan licence key dan tulis server.cfg
Masuk ke portal.cfx.re dengan akun Cfx.re Anda, lalu buat server key. Portal meminta alamat IP mesin yang akan menggunakannya, dan key tersebut terikat pada alamat itu. Jika berpindah ke VPS baru, edit key di portal. Jangan membuat key kedua. Perubahan berlaku langsung, tetapi FXServer hanya memvalidasi ulang saat dimulai ulang.
Tulis ~/FXServer/server-data/server.cfg:
endpoint_add_tcp "0.0.0.0:30120"
endpoint_add_udp "0.0.0.0:30120"
ensure mapmanager
ensure chat
ensure spawnmanager
ensure sessionmanager
ensure basic-gamemode
ensure hardcap
sv_hostname "My FiveM server"
sv_maxclients 48
set onesync on
sv_scriptHookAllowed false
sv_licenseKey ChangeMe
add_ace group.admin command allow
add_principal identifier.fivem:1 group.adminsv_maxclients menerima nilai dari 1 hingga 2048. Nilai 32 atau lebih memerlukan onesync yang diatur ke on atau legacy, sedangkan nilai di atas 64 memerlukan on. OneSync adalah mode kesadaran status server. Mode ini memungkinkan server melampaui jumlah slot kecil bawaan game. Mengatur 128 slot saat OneSync nonaktif tidak memberi Anda 128 slot. Server akan menolak konfigurasi tersebut.
sv_licenseKey menerima key tanpa tanda kutip dan tanpa spasi di akhir. FXServer memisahkan baris tersebut berdasarkan whitespace. Satu karakter tambahan dapat menggagalkan validasi dan membuat server gagal dimulai.
rcon_password sengaja tidak ada dalam file tersebut. RCON (remote console) hanya aktif jika variabel itu diatur. Setelah aktif, RCON akan mendengarkan pada port UDP yang sama dengan game. RCON password pada port publik merupakan saluran perintah jarak jauh ke server Anda. Biarkan variabel ini tidak diatur kecuali Anda memiliki kebutuhan khusus. Jika digunakan, buat password yang panjang dan acak.
sv_scriptHookAllowed tetap false. Dokumentasi resmi menandainya sebagai tidak direkomendasikan karena mengizinkan client Script Hook V, yang dapat membuka peluang penyalahgunaan dari sisi client.
add_principal identifier.fivem:1 memberikan hak admin kepada Cfx.re account ID 1. Ganti 1 dengan ID numerik Anda sendiri. Jika tidak, Anda memberikan hak admin kepada akun orang lain dan tidak memberikan hak admin kepada akun Anda sendiri.
Mulai sekali secara manual:
cd ~/FXServer/server-data
bash ~/FXServer/server/run.sh +exec server.cfgDari sesi SSH kedua, minta informasi server:
curl -s http://127.0.0.1:30120/info.json | head -c 200JSON yang memuat nama server variables dan resources berarti FXServer sudah berhasil bind dan merespons. Connection refused berarti server tidak pernah berhasil bind ke port tersebut. Karena itu, baca output console alih-alih menebak penyebabnya.
Server tanpa key akan menampilkan pesan ini lalu berhenti:
This server does not have a license key specified. Please set the sv_licenseKey console variable to a key from https://keymaster.fivem.net/.Pesan tersebut masih menyebut alamat keymaster lama. Alamat itu mengarah ke portal Cfx.re yang sama. Jika key sudah diatur tetapi server tetap menolak untuk berjalan, penyebab yang biasanya terjadi adalah IP yang terdaftar pada key tidak lagi cocok dengan mesin ini.
Port apa yang perlu dibuka oleh server FiveM?
Port 30120, pada TCP (transmission control protocol) dan UDP (user datagram protocol). FiveM menggunakan satu nomor port untuk dua protokol dan memerlukan keduanya. Jika hanya TCP yang dibuka, gejalanya membingungkan: http://your.ip:30120/info.json merespons di browser sehingga server terlihat sehat, sedangkan klien game berhenti di Failed to get info from server dan tidak pernah bergabung karena kueri klien dan trafik gamenya sendiri berjalan melalui UDP.
sudo ufw allow OpenSSH
sudo ufw allow 30120/tcp
sudo ufw allow 30120/udp
sudo ufw enable
sudo ufw status verbosePertahankan sesi SSH kedua tetap terbuka saat mengaktifkan firewall apa pun. Dasar-dasar ufw untuk VPS menjelaskan kebijakan penolakan default yang membuat aturan di atas sudah cukup.
Sebagian besar provider juga menjalankan firewall jaringan di luar guest, yang dikendalikan dari panel, bukan dari shell. Aturan ufw tidak membuktikan apa pun tentang lapisan tersebut. Jika TCP merespons dari luar tetapi pemain tetap tidak dapat terhubung, pantau trafik jaringan saat seseorang mencoba:
sudo tcpdump -ni any udp port 30120Jika paket tiba, firewall eksternal berfungsi baik dan masalahnya berada di dalam server. Jika tidak ada paket yang terlihat, berarti ada sesuatu di depan server yang membuangnya. Selanjutnya, periksa panel provider.
Kelola server dengan txAdmin tanpa mengeksposnya
txAdmin disertakan dalam artifact yang sudah Anda unduh. Jalankan run.sh tanpa argumen +exec. Perintah tersebut membuka panel web pada port TCP 40120, lalu menampilkan URL panel dan PIN yang hanya berlaku sementara di konsol. Gunakan PIN tersebut sekali untuk menautkan akun Cfx.re Anda. Setelah itu, masuk menggunakan akun admin yang dibuat txAdmin.
txAdmin tidak memiliki password default. Jadi, risikonya bukan kredensial yang lupa Anda ubah. Risikonya terletak pada fungsi panel tersebut: konsol jarak jauh. Panel dapat me-restart server, mengedit server.cfg, men-deploy data server, dan menjalankan perintah sebagai pengguna server. Jika port 40120 dapat dijangkau dari Internet, halaman login untuk semua fungsi tersebut tersedia pada alamat publik. Scanner dapat menemukan port panel yang terbuka dalam hitungan jam. Jangan buka port 40120 pada firewall. Akses panel melalui tunnel SSH dari komputer Anda:
ssh -N -L 40120:127.0.0.1:40120 fivem@YOUR_SERVER_IPKemudian buka http://127.0.0.1:40120 di browser. Trafik panel berjalan di dalam koneksi SSH. Port tersebut tetap tertutup bagi pihak lain.
Ada satu hal yang perlu diketahui sebelum Anda mencoba memperbaikinya dengan cara lain. txAdmin membaca TXHOST_INTERFACE (default 0.0.0.0) untuk menentukan interface yang akan digunakan untuk listening. Dokumentasi txAdmin menjelaskan bahwa nilai yang sama juga diterapkan pada FXServer. Jika Anda mengaturnya ke 127.0.0.1 untuk menyembunyikan panel, game server juga akan bind ke loopback. Akibatnya, tidak ada pemain yang dapat menjangkau server. Tutup port panel dengan firewall, bukan dengan variabel tersebut. Untuk memindahkan panel ke port lain, atur TXHOST_TXA_PORT. Variabel ini menerima nilai apa pun selain 30120. Convar lama +set txAdminPort masih tercantum dalam banyak panduan. Dokumentasi txAdmin sendiri menandainya sebagai deprecated dan menyatakan bahwa variabel tersebut akan berhenti berfungsi pada rilis mendatang.
Menjaga server tetap berjalan setelah Anda logout
bash run.sh berhenti bersama sesi SSH Anda. tmux cocok digunakan saat pengujian: jalankan tmux new -s fivem, mulai server, tekan Ctrl-b lalu d untuk detach, dan gunakan tmux attach -t fivem untuk kembali. Sesi tmux tidak bertahan setelah reboot, jadi hal yang penting harus ditempatkan dalam unit systemd.
Tulis /etc/systemd/system/fivem.service:
[Unit]
Description=FiveM FXServer
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=fivem
Environment=HOME=/home/fivem
WorkingDirectory=/home/fivem/FXServer/server-data
ExecStart=/bin/bash /home/fivem/FXServer/server/run.sh +exec server.cfg
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.targetsudo systemctl daemon-reload
sudo systemctl enable --now fivem
systemctl status fivem
journalctl -u fivem -fenable --now melakukan dua tugas: langsung memulai service dan menjalankan kembali service setelah reboot. Server yang dimulai secara manual akan berhenti setelah pembaruan kernel berikutnya. journalctl -u fivem -f adalah konsol Anda sekarang karena service systemd tidak memiliki terminal yang dapat digunakan untuk mengetik. Jika Anda mengelola server melalui txAdmin, hapus +exec server.cfg dari ExecStart dan arahkan WorkingDirectory ke /home/fivem/FXServer/server, karena txAdmin memulai game server sendiri dan menyimpan folder datanya di sebelah run.sh.
Yang perlu dicadangkan dan lokasi penyimpanannya
Artefak tidak perlu dicadangkan karena Anda dapat mengunduh ulang build yang dipin dalam satu menit. Ada empat hal yang hanya Anda miliki.
~/FXServer/server-data/resources: setiap resource yang Anda instal, beli, atau tulis.server.cfg, di mana pun lokasinya: seluruh konfigurasi server, termasuk principal admin Anda.~/FXServer/server/txData: konfigurasi, daftar admin, dan log txAdmin. Pada artifact Linux, folder ini dibuat di sebelahrun.sh.- Database MariaDB atau MySQL, jika framework Anda menggunakannya. Karakter, uang, kendaraan, dan inventaris tersimpan di sana dan tidak di tempat lain. Jadi, pencadangan resource tanpa dump database akan memulihkan dunia yang kosong.
mkdir -p ~/backups
mysqldump -u fivem -p --single-transaction fivem_db > ~/backups/fivem-$(date +%F).sqlDump yang disimpan pada disk yang sama dengan server bukan cadangan, karena disk tersebut dapat mengalami kegagalan. Kirim cadangan ke luar server secara terjadwal. Untuk itulah restic untuk mencadangkan VPS digunakan.
Mode kegagalan dan string yang akan Anda lihat
Loader menolak izin. Server segera berhenti dan menampilkan baris seperti ini:
run.sh: line 8: /home/fivem/FXServer/server/alpine/opt/cfx-server/ld-musl-x86_64.so.1: Permission deniedHal ini terjadi karena arsip diekstrak dengan sudo, sehingga semua file di bawah alpine/ menjadi milik root dan user fivem tidak dapat mengeksekusi loader di dalamnya. Perbaiki kepemilikannya dengan sudo chown -R fivem:fivem /home/fivem/FXServer, atau hapus folder tersebut lalu ekstrak kembali sebagai fivem.
tar menolak membuka hasil unduhan. tar (child): xz: Cannot exec: No such file or directory berarti paket xz-utils belum terpasang, sehingga tar tidak dapat mendekompresi arsip .tar.xz. Pasang paket tersebut lalu ekstrak kembali. Unduhan yang selesai terlalu cepat biasanya merupakan halaman error HTML yang tersimpan sebagai fx.tar.xz, dan tar melaporkannya sebagai arsip yang rusak.
Server berjalan, tetapi tidak ada yang dapat bergabung. Periksa port terlebih dahulu, dengan urutan berikut: aturan ufw untuk TCP dan UDP pada 30120, firewall jaringan milik provider, lalu IP yang terdaftar pada license key. Jalankan curl terhadap info.json dari luar server untuk membedakan masalah jaringan dari masalah server dalam satu perintah.
Waktu tick meningkat saat pemain datang. Panel performa txAdmin menampilkan waktu tick server. Jika nilainya meningkat seiring jumlah pemain, sementara penggunaan CPU secara keseluruhan terlihat rendah, berarti satu resource memenuhi kapasitas thread utama. Ingat perhitungannya: pada server dengan 4 vCPU, satu core yang digunakan sepenuhnya akan terlihat sebagai sekitar 25 persen total CPU di top. Angka itu tampak rendah, tetapi sebenarnya tidak. Hentikan resource satu per satu dan pantau waktu tick untuk menemukan resource yang menyebabkan beban.
Perbandingan ukuran dengan server game lainnya
Server FiveM yang dapat digunakan untuk bermain memerlukan satu core yang cepat serta memori yang cukup untuk daftar resource yang benar-benar Anda jalankan. Jumlah slot ditentukan oleh kedua faktor tersebut, dan vCPU sebanyak apa pun tidak dapat memperbaiki core yang lambat. Memilih VPS untuk server game membahas kompromi tersebut untuk kumpulan server yang beragam, sedangkan menjalankan server Minecraft pada VPS memiliki pola dasar yang sama: satu loop tick utama, sehingga kecepatan per core juga menentukan batas maksimumnya.
FAQ
Berapa CPU dan RAM yang dibutuhkan server FiveM?
Satu core yang cepat lebih penting daripada beberapa core yang lambat karena FXServer menjalankan logika game pada satu thread utama. Bandingkan skor single-thread yang dipublikasikan untuk model CPU tersebut, lalu konfirmasi pada server dengan sysbench cpu --threads=1 run dan pastikan vmstat menunjukkan steal time yang mendekati nol. Untuk memori, data server Cfx.re dasar menggunakan beberapa ratus megabyte, sedangkan framework roleplay dengan empat puluh atau lima puluh resource serta database lokal berjalan nyaman dengan 8 GB dan mulai kekurangan memori di bawah 4 GB. Angka tersebut merupakan angka umum dari komunitas. Karena itu, pantau free -m saat beban puncak, bukan hanya mengandalkan angka tersebut.
Apakah pemain harus memiliki GTA V untuk bergabung ke server FiveM saya?
Ya. Setiap pemain yang terhubung memerlukan salinan GTA V yang sah dan berlisensi di Steam, Rockstar Games Launcher, atau Epic Games, serta akun Cfx.re gratis. Klien FiveM memeriksa kepemilikan game sebelum terhubung. Tidak ada cara yang didukung untuk melewati persyaratan tersebut. Menjalankan server yang berupaya melewatinya berada di luar ketentuan yang diizinkan Cfx.re.
Port mana yang harus dibuka untuk server FiveM?
Port 30120 pada TCP dan UDP harus dibuka. Endpoint HTTP seperti info.json dan pengunduhan resource menggunakan TCP, sedangkan trafik game dari klien menggunakan UDP. Jika hanya TCP yang dibuka, server dapat merespons browser, tetapi pemain akan melihat Failed to get info from server. txAdmin memerlukan TCP 40120. Port tersebut sebaiknya tetap ditutup dari Internet.
Apakah aman membiarkan txAdmin dapat diakses pada port 40120?
Tidak. txAdmin adalah konsol jarak jauh yang dapat me-restart server, mengedit konfigurasi, dan menjalankan perintah. Panel yang terekspos berarti control plane seluruh server game juga terekspos. Tidak ada password default, tetapi halaman login publik mengundang serangan terhadap kredensial yang mungkin tidak Anda sadari. Biarkan 40120 tetap ditutup pada firewall. Akses panel melalui SSH tunnel dengan ssh -N -L 40120:127.0.0.1:40120 user@server, lalu buka http://127.0.0.1:40120 di browser. Jangan bind txAdmin ke 127.0.0.1 dengan TXHOST_INTERFACE karena pengaturan tersebut juga memaksa game server menggunakan loopback sehingga tidak ada pemain yang dapat terhubung.
Sebaiknya saya menetapkan build artifact tertentu atau selalu menggunakan build recommended terbaru?
Tetapkan folder build bernomor. Label recommended berpindah ke build baru secara berkala. Karena itu, script yang mengambil build recommended dapat memberikan binary yang berbeda pada setiap rebuild. Server yang kemarin berfungsi dapat gagal setelah redeploy karena alasan yang tidak terkait dengan perubahan Anda. Catat nomor build dan commit hash yang telah diuji. Lakukan upgrade secara sengaja. Simpan folder sebelumnya di disk agar Anda dapat kembali dengan mengubah satu path pada systemd unit.