SSD Nodes Learn Hosting plans →
تعلیمی Matt Connorتحریر: Matt Connor

VPS پر FiveM سرور کیسے چلائیں؟

Ubuntu پر FXServer نصب کریں، artifact build pin کریں، Cfx.re licence key شامل کریں، TCP اور UDP پر 30120 کھولیں، اور txAdmin کو عوامی internet سے دور رکھیں۔

VPS پر FiveM سرور کے لیے درکار چیزیں

VPS پر FiveM سرور کے لیے ایک غیر مراعات یافتہ Linux صارف، Cfx.re سے حاصل کردہ ایک artifact build، ایک licence key، اور TCP اور UDP دونوں پر کھلا ہوا ایک port درکار ہوتا ہے۔ تنصیب میں تقریباً دس منٹ لگتے ہیں۔ اس گائیڈ کے باقی حصے ان عوامل کا احاطہ کرتے ہیں جو یہ طے کرتے ہیں کہ سرور کھیلنے کے قابل ہوگا یا نہیں: ایک CPU core کی رفتار، آپ کے resources کے لیے درکار memory، اور ایسا management panel جو عوامی address پر کبھی کھلا نہیں ہونا چاہیے۔

تین prerequisites مقرر ہیں۔ سرور binaries، جنہیں artifacts کہا جاتا ہے، سرکاری Cfx.re build listing سے حاصل ہوتی ہیں۔ Licence key Cfx.re portal portal.cfx.re سے حاصل ہوتی ہے۔ پرانے guides میں اسی service کو keymaster کہا جاتا ہے۔ یہ key اس machine کے address سے منسلک ہوتی ہے جو اسے استعمال کرتی ہے۔ ہر connect ہونے والے player کے پاس Steam، Rockstar Games Launcher یا Epic Games پر GTA V (Grand Theft Auto V) کی اپنی جائز copy، اور ایک مفت Cfx.re account ہونا ضروری ہے۔ Client شروع ہوتے وقت game ownership کی جانچ کرتا ہے۔ اس لیے کسی اور ذریعے سے بنائے گئے server کام نہیں کرتے، اور یہاں کسی بھی قسم کے workaround content کا احاطہ نہیں کیا گیا ہے۔

سرور host کرنا اور اسی box پر game کھیلنا دو الگ کام ہیں۔ یہ سوال الگ ہے کہ کیا آپ خود game کو VPS پر چلا سکتے ہیں، اور اس کا جواب بھی مختلف ہے۔

FiveM سرور کی کارکردگی میں single core speed کیوں فیصلہ کن ہوتی ہے

FXServer، جو FiveM server binary ہے، game logic کو ایک main thread پر چلاتا ہے۔ ہر resource script، ہر event handler اور ہر state update اسی single loop سے گزرتا ہے۔ اضافی cores kernel، database اور network stack کی مدد کرتے ہیں۔ وہ game loop کو تقسیم نہیں کرتے۔ اسی لیے slow core والا 4 vCPU server load کے دوران stutter کرتا ہے، جبکہ fast core والا 2 vCPU server ہموار رہتا ہے۔

اس سے VPS خریدنے کی عام عادت بدل جاتی ہے، جس میں core count نمایاں نمبر ہوتا ہے۔ رقم خرچ کرنے سے پہلے فی core speed دیکھیں۔ CPU model سے شروع کریں:

lscpu | grep -E 'Model name|MHz'

پھر اس model کا شائع شدہ single thread score تلاش کریں۔ PassMark single thread rating اور Geekbench single-core score دونوں public ہیں، اور دونوں ایک core کے کام کرنے کی پیمائش کرتے ہیں۔ یہاں یہی نمبر اہم ہے۔ اس کے بعد اس server کی پیمائش کریں جو آپ کو حقیقت میں ملا ہے:

sudo apt update && sudo apt install -y sysbench
sysbench cpu --cpu-max-prime=20000 --threads=1 run

events per second line پڑھیں۔ دو candidate providers پر یہی command چلائیں اور ان کا منصفانہ موازنہ کریں، کیونکہ workload یکساں ہے اور صرف ایک core تک محدود ہے۔ قابل تکرار VPS benchmark run میں بتایا گیا ہے کہ مختلف servers پر ان نمبروں کو قابل موازنہ کیسے رکھا جائے۔

پھر تصدیق کریں کہ core واقعی آپ کے لیے مختص ہے:

vmstat 1 5

آخری column، st، steal time ہے: اس وقت کا حصہ جب آپ کا virtual CPU چلنے کے لیے ready تھا لیکن hypervisor نے اسے انتظار کروایا۔ مسلسل 1 یا 2 سے زیادہ figure کا مطلب ہے کہ آپ physical core کو مصروف پڑوسی صارفین کے ساتھ share کر رہے ہیں۔ game loop اسے فوراً rubber banding کی صورت میں محسوس کرتا ہے۔ مصروف پڑوسی سے steal time میں بتایا گیا ہے کہ اس column کو کیسے پڑھیں اور اس صورت میں کیا کریں۔

Memory کا استعمال صرف slots کی تعداد سے نہیں بلکہ چلائے جانے والے resources سے بڑھتا ہے۔ Cfx.re کا base server data چند سو megabytes میں چلتا ہے۔ چالیس یا پچاس resources اور اسی server پر MariaDB database والا roleplay framework ایک مختلف machine ہے: 4 GB مناسب کم از کم حد ہے، جبکہ 32 سے 64 slots کے لیے 8 GB اطمینان بخش ہے۔ یہ community setups کی شائع کردہ عام figures ہیں، اس لیے انہیں ابتدائی نقطۂ آغاز سمجھیں اور حقیقی player load کے دوران free -m کو monitor کریں۔

صارف بنائیں اور dependencies انسٹال کریں

سرور کو عام صارف کے طور پر چلائیں، root کے طور پر کبھی نہ چلائیں۔ اس کی دو وجوہات ہیں۔ internet-facing service کے لیے root استعمال کرنا ایک خراب طریقہ ہے۔ دوسرا یہ کہ Linux artifact، bundled Alpine Linux root filesystem کے اندر چلتا ہے۔ اس لیے root کے ذریعے unpack کی گئی files کوئی دوسرا صارف execute نہیں کر سکتا۔ یہی وہ عام وجہ ہے جس کی بنا پر نئی installation start نہیں ہوتی۔

sudo adduser --disabled-password --gecos "" fivem
sudo apt update
sudo apt install -y git xz-utils curl tcpdump
sudo -iu fivem

ذیل کا تمام کام fivem صارف کے طور پر چلایا جاتا ہے۔ xz-utils ضروری ہے کیونکہ download ایک .tar.xz archive ہے، جبکہ git کو base server data clone کرنے کے لیے استعمال کیا جاتا ہے۔

ایک مخصوص build ڈاؤن لوڈ کریں

Linux build، Cfx.re artifact server کے build_proot_linux channel میں موجود ہے۔ Cfx.re server download page ایک build کو Recommended اور اس سے نئے build کو Latest کے طور پر دکھاتا ہے، اور نئے releases آنے پر دونوں labels نئے builds پر منتقل ہو جاتے ہیں۔ اس کے بجائے numbered folder کو pin کریں۔ اگلے ماہ server دوبارہ build کرنے پر وہی binary ملے گی جسے آپ نے اس ماہ test کیا تھا، اور upgrade ایک ایسا فیصلہ بن جائے گا جو آپ جان بوجھ کر کریں گے۔

mkdir -p ~/FXServer/server
cd ~/FXServer/server
curl -fLO https://runtime.fivem.net/artifacts/fivem/build_proot_linux/master/35245-6efb47dff473c0e2a12fb50b08d74c0eb24a50d5/fx.tar.xz
tar xf fx.tar.xz
ls

9 October 2026 کو جب میں نے Cfx.re server download page دیکھی تو Build 35245 پر Recommended label تھا۔ یہ page کھولیں، Linux منتخب کریں، اور موجودہ fx.tar.xz link سے folder name copy کرکے URL میں شامل کریں۔ یہ folder name build number اور commit hash پر مشتمل ہے۔ پرانی artifacts directory listing، جس سے اب بھی بہت سی guides link کرتی ہیں، اب اسی page پر redirect ہوتی ہے۔

Pinned build کی بھی ایک محدود مدت ہوتی ہے۔ Cfx.re کسی Recommended artifact کو اگلا artifact دستیاب ہونے کے بعد چھ ہفتوں تک support کرتا ہے، اور اس کی policy کے مطابق تین ماہ سے زیادہ پرانے unsupported server artifacts سے server browser کے ذریعے join نہیں کیا جا سکتا۔ پرانا build چلتا رہتا ہے، لیکن players browser سے اس میں join نہیں کر سکتے۔ اس لیے upgrades کو calendar میں درج کریں، ہمیشہ کے لیے pin نہ کریں۔

ls میں اب run.sh اور alpine directory دکھائی دینی چاہیے۔ یہی directory اس طریقے کی بنیاد ہے: Linux artifact اپنے ساتھ ایک مختصر Alpine root filesystem شامل کرتا ہے اور proot استعمال کرتے ہوئے server اسی کے اندر start کرتا ہے۔ proot ایک userspace tool ہے جو root privileges کے بغیر chroot کی نقل کرتا ہے۔ اسی وجہ سے ایک ہی download Ubuntu، Debian اور Rocky پر distribution-specific packages کے بغیر چلتا ہے۔

اب base server data clone کریں۔ اس میں آپ کے server.cfg کے لیے default resources موجود ہیں:

git clone https://github.com/citizenfx/cfx-server-data.git ~/FXServer/server-data

لائسنس key حاصل کریں اور server.cfg لکھیں

portal.cfx.re میں اپنے Cfx.re account سے sign in کریں اور server key بنائیں۔ portal اس machine کا IP address مانگتا ہے جو اسے استعمال کرے گی، اور key اسی address سے bind ہوتی ہے۔ نئے VPS پر منتقل ہونے کا مطلب portal میں key کو edit کرنا ہے، دوسری key بنانا نہیں۔ تبدیلی فوراً لاگو ہو جاتی ہے، لیکن FXServer دوبارہ شروع ہونے پر ہی key کی دوبارہ تصدیق کرتا ہے۔

~/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.admin

sv_maxclients میں 1 سے 2048 تک value قبول ہوتی ہے۔ 32 یا اس سے زیادہ value کے لیے onesync کو on یا legacy پر set کرنا ضروری ہے، جبکہ 64 سے زیادہ value کے لیے on درکار ہے۔ OneSync server کا state awareness mode ہے۔ اسی کی مدد سے server base game کی چھوٹی slot count سے آگے جا سکتا ہے۔ OneSync بند ہونے کی صورت میں 128 slots set کرنے سے 128 slots دستیاب نہیں ہوتے۔ اس کے بجائے server ایسی configuration مسترد کر دیتا ہے۔

sv_licenseKey میں key بغیر quotes اور آخر میں space کے بغیر درج ہوتی ہے۔ FXServer اس line کو whitespace پر split کرتا ہے۔ اس لیے ایک اضافی character بھی validation ناکام کر دیتا ہے اور server start نہیں ہوتا۔

rcon_password اس file میں جان بوجھ کر موجود نہیں ہے۔ RCON (remote console) صرف اس وقت فعال ہوتا ہے جب variable set ہو، اور پھر یہ game کے اسی UDP port پر listen کرتا ہے۔ Public port پر RCON password آپ کے server تک remote command channel فراہم کرتا ہے۔ مخصوص ضرورت نہ ہو تو اسے unset رکھیں۔ اگر استعمال کریں تو password طویل اور random رکھیں۔

sv_scriptHookAllowed کی value false ہی رہتی ہے۔ official documentation میں اسے not recommended قرار دیا گیا ہے، کیونکہ Script Hook V clients کو اجازت دینے سے server client-side abuse کے لیے کھل جاتا ہے۔

آخری دو lines ایک pair کے طور پر کام کرتی ہیں۔ add_ace group.admin command allow، group.admin group کو ہر command چلانے کی اجازت دیتا ہے، جبکہ add_principal identifier.fivem:1 group.admin Cfx.re account ID 1 کو اس group سے inherit کرنے دیتا ہے۔ اسی سے account کو admin rights ملتے ہیں۔ documented syntax add_principal [child_principal] [parent_principal] ہے، اس لیے دونوں حصے ضروری ہیں۔ صرف account کا نام دینے والی add_principal line کے لیے inherit کرنے کو کوئی group موجود نہیں ہوتا، اس لیے کوئی permission نہیں ملتی۔ 1 کو اپنی numeric ID سے replace کریں۔ ورنہ آپ کسی دوسرے شخص کے account کو admin rights دے دیں گے اور اپنے account کو نہیں۔

اسے پہلی بار دستی طور پر start کریں:

cd ~/FXServer/server-data
bash ~/FXServer/server/run.sh +exec server.cfg

دوسرے SSH session سے server سے اس کی اپنی معلومات طلب کریں:

curl -s http://127.0.0.1:30120/info.json | head -c 200

آپ کے server variables اور resources کے ناموں والا JSON اس بات کی نشاندہی کرتا ہے کہ FXServer bind ہو چکا ہے اور جواب دے رہا ہے۔ Connection refused کا مطلب ہے کہ اس نے port bind نہیں کیا۔ اس لیے اندازہ لگانے کے بجائے console output دیکھیں۔

جس server کے پاس key نہ ہو وہ یہ output دکھا کر رک جاتا ہے:

This server does not have a license key specified. Please set the sv_licenseKey console variable to a key from https://keymaster.fivem.net/.

message میں اب بھی پرانا keymaster address درج ہے۔ یہ address اسی Cfx.re portal تک لے جاتا ہے۔ اگر key set ہو اور server پھر بھی run نہ کرے تو عام وجہ یہ ہوتی ہے کہ key کے ساتھ registered IP address اب اس machine کے IP address سے match نہیں کرتا۔

FiveM server کے لیے کون سے ports کھولنے کی ضرورت ہے؟

30120 port کو TCP (transmission control protocol) اور UDP (user datagram protocol) دونوں پر کھولیں۔ FiveM ایک ہی port number کو دونوں protocols کے لیے استعمال کرتا ہے، اس لیے دونوں ضروری ہیں۔ صرف TCP کھولنے سے صورتِ حال مبہم ہو جاتی ہے: http://your.ip:30120/info.json browser میں جواب دیتا ہے، اس لیے server درست معلوم ہوتا ہے، لیکن game client Failed to get info from server پر رکا رہتا ہے اور کبھی شامل نہیں ہوتا، کیونکہ client کی اپنی query اور game traffic UDP کے ذریعے چلتی ہے۔

sudo ufw allow OpenSSH
sudo ufw allow 30120/tcp
sudo ufw allow 30120/udp
sudo ufw enable
sudo ufw status verbose

Firewall فعال کرتے وقت دوسری SSH session کھلی رکھیں۔ VPS کے لیے ufw کی بنیادی باتیں اس default deny policy کی وضاحت کرتی ہے جس کی وجہ سے اوپر کے rules اپنے طور پر کافی ہوتے ہیں۔

زیادہ تر providers guest کے باہر بھی network firewall چلاتے ہیں۔ اسے shell کے بجائے panel سے control کیا جاتا ہے۔ ufw کا کوئی rule اس بیرونی layer کے بارے میں کچھ ثابت نہیں کرتا۔ جب باہر سے TCP جواب دے رہا ہو لیکن players پھر بھی connect نہ کر سکیں، تو کسی کے کوشش کرنے کے دوران network traffic monitor کریں:

sudo tcpdump -ni any udp port 30120

Packets کا پہنچنا ظاہر کرتا ہے کہ outer firewall درست ہے اور خرابی server کے اندر ہے۔ خاموشی کا مطلب ہے کہ box کے سامنے موجود کوئی چیز packets drop کر رہی ہے، اس لیے اگلا مرحلہ provider panel کی جانچ ہے۔

سرور کو txAdmin کے ذریعے manage کریں، اسے public طور پر expose نہ کریں

txAdmin اس artifact کے اندر شامل ہوتا ہے جو آپ پہلے ہی download کر چکے ہیں۔ run.sh کو +exec argument کے بغیر start کریں۔ یہ TCP port 40120 پر web panel شروع کرتا ہے، پھر console میں panel کا URL اور مختصر مدت کے لیے قابلِ استعمال PIN دکھاتا ہے۔ اپنے Cfx.re account کو link کرنے کے لیے یہ PIN صرف ایک بار استعمال کریں۔ اس کے بعد اس admin account کے ذریعے login کریں جو txAdmin بناتا ہے۔

txAdmin میں کوئی default password نہیں ہوتا۔ اس لیے خطرہ یہ نہیں کہ آپ کوئی password تبدیل کرنا بھول گئے ہیں۔ اصل خطرہ panel کی نوعیت ہے: یہ ایک remote console ہے۔ یہ server کو restart کرتا ہے، server.cfg میں ترمیم کرتا ہے، server data deploy کرتا ہے، اور آپ کے server user کے طور پر commands چلاتا ہے۔ 40120 کو internet سے reachable چھوڑنے کا مطلب ہے کہ ان تمام کاموں کے لیے login page public address پر دستیاب ہے۔ Scanners چند گھنٹوں میں کھلے panel ports تلاش کر لیتے ہیں۔ Firewall میں 40120 نہ کھولیں۔ اپنی machine سے SSH tunnel کے ذریعے اس تک پہنچیں:

ssh -N -L 40120:127.0.0.1:40120 fivem@YOUR_SERVER_IP

پھر browser میں http://127.0.0.1:40120 کھولیں۔ Panel کا traffic SSH connection کے اندر منتقل ہوتا ہے، جبکہ یہ port باقی تمام صارفین کے لیے بند رہتا ہے۔

ایک اہم مسئلہ جان لینا مفید ہے، اس سے پہلے کہ آپ اسے کسی دوسرے طریقے سے حل کرنے کی کوشش کریں۔ txAdmin TXHOST_INTERFACE (default 0.0.0.0) کو یہ طے کرنے کے لیے پڑھتا ہے کہ کس interface پر bind ہونا ہے، اور documentation واضح کرتی ہے کہ یہی value FXServer پر بھی نافذ کی جاتی ہے۔ اسے 127.0.0.1 پر set کرنے سے panel چھپ جاتا ہے، لیکن game server بھی loopback پر bind ہو جاتا ہے۔ اس کے نتیجے میں کوئی player server تک نہیں پہنچ سکتا۔ Panel port کو اس variable کے ذریعے نہیں، بلکہ firewall کے ذریعے بند کریں۔ Panel کو کسی دوسرے port پر منتقل کرنے کے لیے TXHOST_TXA_PORT set کریں۔ یہ 30120 کے علاوہ کوئی بھی value قبول کرتا ہے۔ پرانا +set txAdminPort convar بہت سی guides میں موجود ہے؛ txAdmin کی اپنی documentation اسے deprecated قرار دیتی ہے اور کہتی ہے کہ آئندہ release میں یہ کام کرنا بند کر دے گا۔

لاگ آؤٹ کرنے کے بعد سرور کو چلتا رکھیں

bash run.sh آپ کے SSH سیشن کے ساتھ بند ہو جاتا ہے۔ جانچ کے دوران tmux موزوں ہے: tmux new -s fivem چلائیں، سرور شروع کریں، detach کرنے کے لیے Ctrl-b پھر d دبائیں، اور واپس آنے کے لیے tmux attach -t fivem استعمال کریں۔ tmux سیشن reboot کے بعد برقرار نہیں رہتا، اس لیے جس چیز کی ضرورت ہو اسے systemd unit میں شامل کریں۔

/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.target
sudo systemctl daemon-reload
sudo systemctl enable --now fivem
systemctl status fivem
journalctl -u fivem -f

enable --now کے دو کام ہیں: یہ سروس کو فوراً شروع کرتا ہے اور reboot کے بعد سروس کو دوبارہ شروع کرتا ہے۔ ہاتھ سے شروع کیا گیا سرور اگلی kernel update کے بعد بند ہو جائے گا۔ journalctl -u fivem -f اب آپ کا console ہے، کیونکہ systemd سروس کے پاس ایسا terminal نہیں ہوتا جس میں آپ کمانڈ لکھ سکیں۔ اگر آپ سرور کا انتظام txAdmin کے ذریعے کرتے ہیں تو ExecStart سے +exec server.cfg ہٹا دیں اور WorkingDirectory کو /home/fivem/FXServer/server پر point کریں، کیونکہ txAdmin خود game server شروع کرتا ہے اور اپنا data folder run.sh کے ساتھ رکھتا ہے۔

کن چیزوں کا بیک اپ لینا ہے، اور وہ کہاں موجود ہوتی ہیں

Artifacts کا بیک اپ لینا ضروری نہیں، کیونکہ pinned build دوبارہ ایک منٹ میں download کی جا سکتی ہے۔ چار چیزیں صرف آپ کی ملکیت ہوتی ہیں۔

  • ~/FXServer/server-data/resources: ہر resource جسے آپ نے install، خرید یا تحریر کیا ہے۔
  • server.cfg، چاہے وہ کہیں بھی موجود ہو: سرور کی مکمل configuration، بشمول آپ کے admin principals۔
  • ~/FXServer/server/txData: txAdmin کی configuration، admin list اور logs۔ Linux artifact کے ساتھ یہ folder run.sh کے برابر میں بنتا ہے۔
  • MariaDB یا MySQL database، اگر آپ کا framework اسے استعمال کرتا ہے۔ Characters، money، vehicles اور inventories صرف وہیں موجود ہوتے ہیں۔ اس لیے database dump کے بغیر resource backup سے خالی world بحال ہوتی ہے۔
mkdir -p ~/backups
mysqldump -u fivem -p --single-transaction fivem_db > ~/backups/fivem-$(date +%F).sql

سرور والی اسی disk پر موجود dump بیک اپ نہیں ہوتا، کیونکہ failure اسی disk میں ہو سکتا ہے۔ اسے مقررہ schedule کے مطابق سرور سے باہر منتقل کریں۔ اسی مقصد کے لیے VPS سے restic backups استعمال کیے جاتے ہیں۔

خرابی کی صورتیں اور وہ strings جو آپ دیکھیں گے

loader پر permission denied۔ سرور فوراً اس جیسی ایک سطر کے ساتھ بند ہو جاتا ہے:

run.sh: line 8: /home/fivem/FXServer/server/alpine/opt/cfx-server/ld-musl-x86_64.so.1: Permission denied

ایسا اس لیے ہوتا ہے کہ archive کو sudo کے ساتھ extract کیا گیا تھا، اس لیے alpine/ کے اندر موجود ہر چیز root کی ملکیت ہے اور fivem user اس میں موجود loader کو execute نہیں کر سکتا۔ sudo chown -R fivem:fivem /home/fivem/FXServer کے ذریعے ownership درست کریں، یا folder حذف کر کے اسے دوبارہ fivem کے طور پر extract کریں۔

tar download کھولنے سے انکار کرتا ہے۔ tar (child): xz: Cannot exec: No such file or directory کا مطلب ہے کہ xz-utils package موجود نہیں، اس لیے tar، .tar.xz archive کو decompress نہیں کر سکتا۔ اسے install کریں اور دوبارہ extract کریں۔ بہت کم وقت میں مکمل ہونے والا download عموماً ایک HTML error page ہوتا ہے جو fx.tar.xz کے طور پر save ہو گیا ہے، اور tar اسے corrupt archive کے طور پر رپورٹ کرتا ہے۔

سرور چلتا ہے لیکن کوئی join نہیں کر سکتا۔ پہلے ports کو اس ترتیب سے چیک کریں: 30120 پر TCP اور UDP دونوں کے لیے ufw rule، پھر provider کا اپنا network firewall، اور اس کے بعد licence key کے ساتھ registered IP۔ box کے باہر سے info.json کے خلاف curl چلانے سے ایک ہی command میں network problem اور server problem کے درمیان فرق معلوم ہو جاتا ہے۔

players کے آنے کے ساتھ tick time بڑھتا جاتا ہے۔ txAdmin کا performance panel سرور کا tick time دکھاتا ہے۔ جب players کی تعداد کے ساتھ یہ وقت بڑھتا ہو، جبکہ مجموعی CPU استعمال کم دکھائی دے، تو کوئی ایک resource main thread کو پوری طرح استعمال کر رہا ہے۔ یہ حساب یاد رکھیں: 4 vCPU والے box پر ایک مکمل طور پر مصروف core، top میں مجموعی CPU کا تقریباً 25 percent دکھائی دیتا ہے۔ یہ idle معلوم ہوتا ہے، لیکن حقیقت میں idle نہیں ہوتا۔ resources کو ایک ایک کر کے stop کریں اور tick time کو monitor کریں تاکہ معلوم ہو سکے کہ مسئلہ کس resource کی وجہ سے ہے۔

دیگر game servers کے مقابلے میں اس کی sizing

قابلِ کھیل FiveM server کے لیے تیز رفتار single core اور اتنی memory درکار ہوتی ہے جتنی آپ کی چلائی ہوئی resource list کے لیے کافی ہو۔ Slot count انہی دونوں عوامل سے طے ہوتا ہے، اور vCPUs کی کوئی بھی تعداد سست core کی تلافی نہیں کر سکتی۔ game servers کے لیے VPS کا انتخاب مختلف game servers کے مجموعے کے لیے اسی trade-off کی وضاحت کرتا ہے، جبکہ VPS پر Minecraft server چلانا بھی بنیادی طور پر اسی طرز پر کام کرتا ہے: ایک main tick loop ہوتا ہے، اس لیے وہاں بھی فی core رفتار ہی زیادہ سے زیادہ حد طے کرتی ہے۔

FAQ

FiveM سرور کو کتنے CPU اور RAM کی ضرورت ہوتی ہے؟

کئی سست cores کے مقابلے میں ایک تیز core زیادہ اہم ہوتا ہے، کیونکہ FXServer اپنی game logic ایک single main thread پر چلاتا ہے۔ CPU model کا شائع شدہ single thread score موازنہ کریں، پھر sysbench cpu --threads=1 run سے سرور پر تصدیق کریں اور دیکھیں کہ vmstat میں steal time تقریباً صفر ہے۔ Memory کے لیے بنیادی Cfx.re server data چند سو megabytes میں چلتا ہے، جبکہ چالیس یا پچاس resources والے roleplay framework اور local database کے لیے 8 GB مناسب ہے اور 4 GB سے کم memory تنگ پڑتی ہے۔ یہ community کے عام اعداد و شمار ہیں، اس لیے ان پر بھروسا کرنے کے بجائے peak کے دوران free -m کو monitor کریں۔

کیا میرے FiveM سرور سے جڑنے کے لیے players کا GTA V خریدنا ضروری ہے؟

ہاں۔ ہر connecting player کے پاس Steam، Rockstar Games Launcher یا Epic Games پر GTA V کی جائز، licensed copy اور ایک مفت Cfx.re account ہونا ضروری ہے۔ FiveM client connect کرنے سے پہلے game ownership کی جانچ کرتا ہے۔ اس شرط سے بچنے کا کوئی supported طریقہ نہیں ہے، اور ایسا server چلانا جو اس شرط کو bypass کرنے کی کوشش کرے، Cfx.re کی اجازت کے دائرے سے باہر ہے۔

FiveM سرور کے لیے کون سے ports کھلے ہونے چاہییں؟

Port 30120 TCP اور UDP، دونوں پر کھلا ہونا چاہیے۔ info.json جیسے HTTP endpoints اور resource downloads TCP استعمال کرتے ہیں، جبکہ client کا game traffic UDP استعمال کرتا ہے۔ صرف TCP کھولنے سے ایسی الجھن پیدا ہوتی ہے جس میں server browser کو جواب دیتا ہے، لیکن players کو Failed to get info from server نظر آتا ہے۔ txAdmin کو TCP 40120 درکار ہے، اور یہ port internet سے بند رہنا چاہیے۔

کیا txAdmin کو port 40120 پر قابل رسائی چھوڑنا محفوظ ہے؟

نہیں۔ txAdmin ایک remote console ہے جو server کو restart، configuration کو edit اور commands کو run کر سکتا ہے، اس لیے exposed panel پورے game server کے exposed control plane کے برابر ہے۔ Default password موجود نہیں ہے، لیکن public login page ایسے credential attacks کی دعوت دیتا ہے جنہیں آپ دیکھ نہیں سکتے۔ Firewall میں 40120 بند رکھیں اور ssh -N -L 40120:127.0.0.1:40120 user@server کے ذریعے SSH tunnel سے panel تک رسائی حاصل کریں، پھر http://127.0.0.1:40120 کھولیں۔ TXHOST_INTERFACE کے ساتھ txAdmin کو 127.0.0.1 پر bind نہ کریں، کیونکہ یہ setting game server کو بھی loopback پر منتقل کر دیتی ہے اور کوئی player connect نہیں کر سکے گا۔

Numbered build folder کو pin کریں۔ Recommended label باقاعدگی سے نئی build پر منتقل ہوتا ہے، اس لیے recommended build حاصل کرنے والی script ہر rebuild پر مختلف binary دے سکتی ہے، اور کل کام کرنے والا server redeploy کے وقت آپ کی تبدیلیوں سے غیر متعلق وجوہات کی بنا پر fail ہو سکتا ہے۔ جس build number اور commit hash کو test کیا ہو، اسے record کریں، upgrade جان بوجھ کر کریں، اور پچھلا folder disk پر محفوظ رکھیں تاکہ systemd unit میں صرف ایک path edit کرکے واپس switch کیا جا سکے۔ تاہم pin کو بہت پرانا نہ ہونے دیں: Cfx.re کی policy کے مطابق تین ماہ سے پرانے unsupported artifacts کو server browser سے join نہیں کیا جا سکتا، اس لیے support window کے اندر upgrade کریں۔

کیا یہ مضمون مفید تھا؟

#fivem#game-server#txadmin#single-thread#vps