SSD Nodes Learn Hosting plans →
راهنماها Matt Connorتوسط Matt Connor

آموزش راه اندازی سرور FiveM روی VPS لینوکس

نصب FXServer روی Ubuntu، تنظیم لایسنس Cfx.re و باز کردن پورت 30120 برای TCP و UDP. این راهنما نحوه اجرای ایمن سرور و محدود کردن دسترسی txAdmin را آموزش می‌دهد.

نیازمندی‌های سرور FiveM روی یک VPS

یک سرور FiveM روی VPS شامل یک کاربر Linux بدون دسترسی ریشه (unprivileged)، یک نسخه از artifactهای Cfx.re، یک لایسنس کی (licence key) و یک پورت باز روی پروتکل‌های TCP و UDP است. نصب این موارد حدود 10 دقیقه زمان می‌برد. باقی این راهنما به بخش‌هایی می‌پردازد که تعیین‌کننده قابلیت بازی‌کردن در سرور هستند: سرعت یک هسته CPU، حافظه مورد نیاز برای resourceها و یک پنل مدیریتی که هرگز نباید روی یک آدرس عمومی در دسترس باشد.

سه پیش‌نیاز ثابت هستند. باینری‌های سرور که artifact نامیده می‌شوند، از لیست رسمی buildهای Cfx.re دریافت می‌شوند. لایسنس کی از پورتال Cfx.re در portal.cfx.re تهیه می‌شود؛ سرویسی که در راهنماهای قدیمی‌تر با نام keymaster شناخته می‌شد. این کلید به آدرس IP ماشینی که از آن استفاده می‌کند، متصل است. هر بازیکنی که متصل می‌شود، باید نسخه قانونی بازی GTA V (Grand Theft Auto V) را در Steam، Rockstar Games Launcher یا Epic Games به همراه یک حساب کاربری رایگان Cfx.re داشته باشد. کلاینت در زمان اجرا مالکیت بازی را بررسی می‌کند، بنابراین سروری که بر پایه هر چیز دیگری ساخته شده باشد کار نخواهد کرد و هیچ‌گونه محتوای دور زدن (workaround) در اینجا پوشش داده نمی‌شود.

میزبانی سرور با بازی‌کردن روی همان ماشین متفاوت است، که این موضوع به اینکه آیا می‌توانید خود بازی را روی یک VPS اجرا کنید مربوط می‌شود و پرسشی جداگانه با پاسخی متفاوت است.

چرا سرعت تک‌هسته‌ای تعیین‌کننده کیفیت عملکرد سرور FiveM است

FXServer، فایل باینری سرور FiveM، منطق بازی را روی یک ترد (thread) اصلی اجرا می‌کند. هر اسکریپت منبع (resource script)، هر هندلر رویداد و هر به‌روزرسانی وضعیت از همین حلقه واحد عبور می‌کند. هسته‌های اضافی به کرنل، دیتابیس و پشته شبکه کمک می‌کنند، اما حلقه بازی را تقسیم نمی‌کنند. بنابراین، یک سرور با 4 vCPU که هسته‌های کندی دارد، تحت فشار دچار لگ می‌شود، در حالی که یک سرور با 2 vCPU که هسته سریعی دارد، عملکرد روانی ارائه می‌دهد.

این موضوع عادت معمول خرید VPS را که در آن تعداد هسته عدد اصلی است، تغییر می‌دهد. پیش از پرداخت هزینه، سرعت هر هسته را بررسی کنید. با مدل CPU شروع کنید:

lscpu | grep -E 'Model name|MHz'

سپس امتیاز تک‌رشته‌ای (single thread score) منتشرشده برای آن مدل را جستجو کنید. امتیاز تک‌رشته‌ای PassMark و امتیاز تک‌هسته‌ای Geekbench هر دو عمومی هستند و هر دو میزان کارایی یک هسته را اندازه‌گیری می‌کنند؛ این همان عددی است که در اینجا اهمیت دارد. پس از آن، سروری که واقعاً به شما تحویل داده شده است را بسنجید:

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

خط events per second را بخوانید. همین دستور را روی دو سرویس‌دهنده کاندید اجرا کنید تا بتوانید آن‌ها را صادقانه مقایسه کنید، زیرا بار کاری یکسان است و به یک هسته محدود شده است. اجرای بنچمارک تکرارپذیر VPS نشان می‌دهد که چگونه این اعداد را بین سرورهای مختلف قابل مقایسه نگه دارید.

سپس بررسی کنید که آیا هسته واقعاً متعلق به شماست:

vmstat 1 5

ستون آخر، st، نشان‌دهنده steal time است: سهم زمانی که vCPU شما آماده اجرا بوده اما هایپروایزر آن را در حالت انتظار نگه داشته است. عدد ثابت بالای 1 یا 2 به این معنی است که شما یک هسته فیزیکی را با همسایگان پرمشغله به اشتراک می‌گذارید و حلقه بازی بلافاصله آن را به صورت rubber banding (پرش‌های ناگهانی) حس می‌کند. Steal time ناشی از همسایه پرسر و صدا توضیح می‌دهد که چگونه این ستون را بخوانید و در مورد آن چه کاری انجام دهید.

حافظه (RAM) با منابعی که اجرا می‌کنید مقیاس‌پذیر است، نه فقط با تعداد اسلات‌ها. داده‌های پایه سرور از Cfx.re در چند صد مگابایت اجرا می‌شوند. یک فریم‌ورک نقش‌آفرینی (roleplay) با چهل یا پنجاه منبع و یک دیتابیس MariaDB روی همان سرور، ماشین متفاوتی است: 4 گیگابایت یک حداقل منطقی است و 8 گیگابایت برای 32 تا 64 اسلات مناسب است. این‌ها ارقام معمولی منتشرشده توسط تنظیمات جامعه کاربری هستند، بنابراین آن‌ها را به عنوان نقطه شروع در نظر بگیرید و free -m را تحت بار واقعی بازیکنان مانیتور کنید.

ایجاد کاربر و نصب وابستگی‌ها

سرویس را به عنوان یک کاربر معمولی اجرا کنید و هرگز از root استفاده نکنید. دو دلیل برای این کار وجود دارد. استفاده از root در هر سرویسی که به اینترنت متصل است، یک عادت مخرب است. همچنین، artifact لینوکسی درون یک فایل‌سیستم root از نوع Alpine Linux بسته‌بندی شده است؛ بنابراین فایل‌هایی که توسط root استخراج شوند، توسط کاربران دیگر قابل اجرا نخواهند بود. این رایج‌ترین دلیل برای اجرا نشدن یک نصب تازه است.

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

تمام مراحل زیر با کاربر fivem انجام می‌شود. ابزار xz-utils برای استخراج فایل آرشیو .tar.xz ضروری است و از git برای کلون کردن داده‌های پایه سرور استفاده می‌شود.

دانلود یک نسخه (build) ثابت‌شده از artifact

نسخه لینوکس در کانال build_proot_linux از سرور artifact شرکت Cfx.re قرار دارد. صفحه دانلود سرور Cfx.re یک نسخه را به‌عنوان Recommended و نسخه‌ای جدیدتر را به‌عنوان Latest علامت‌گذاری می‌کند؛ این برچسب‌ها با انتشار نسخه‌های جدید جابه‌جا می‌شوند. به‌جای آن، پوشه شماره‌گذاری‌شده را ثابت (pin) کنید. با این کار، بازسازی سرور در ماه آینده همان باینری‌ای را به شما می‌دهد که در این ماه تست کرده‌اید و ارتقا به یک تصمیم آگاهانه تبدیل می‌شود.

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

نسخه 35245 در تاریخ 9 اکتبر 2026 که صفحه دانلود سرور Cfx.re را بررسی کردم، دارای برچسب Recommended بود. آن صفحه را باز کنید، Linux را انتخاب کرده و نام پوشه را از لینک fx.tar.xz فعلی کپی کنید که شامل شماره نسخه به‌علاوه یک commit hash است و آن را در URL قرار دهید. فهرست دایرکتوری قدیمی artifactها که بسیاری از راهنماها هنوز به آن لینک می‌دهند، اکنون به همین صفحه هدایت می‌شود.

یک نسخه ثابت‌شده نیز تاریخ انقضا دارد. Cfx.re از یک artifact نسخه Recommended تا شش هفته پس از انتشار نسخه بعدی پشتیبانی می‌کند و طبق سیاست آن‌ها، artifactهای سرور که پشتیبانی نمی‌شوند و بیش از سه ماه از عمرشان می‌گذرد، از طریق مرورگر سرور قابل اتصال نخواهند بود. یک نسخه قدیمی همچنان اجرا می‌شود، اما بازیکنان دیگر نمی‌توانند از طریق مرورگر به آن متصل شوند؛ بنابراین به‌جای ثابت نگه‌داشتن دائمی، ارتقاها را در تقویم خود برنامه‌ریزی کنید.

ls اکنون باید run.sh و یک دایرکتوری alpine را نشان دهد. آن دایرکتوری تمام ماجراست: artifact لینوکس، فایل‌سیستم ریشه Alpine کوچک خود را به همراه دارد و سرور را درون آن با استفاده از proot اجرا می‌کند؛ ابزاری در فضای کاربری (userspace) که chroot را بدون نیاز به دسترسی root شبیه‌سازی می‌کند. به همین دلیل است که یک فایل دانلودی روی Ubuntu، Debian و Rocky بدون نیاز به بسته‌های خاص توزیع اجرا می‌شود.

اکنون داده‌های پایه سرور را که شامل منابع پیش‌فرضی است که server.cfg شما با آن‌ها شروع می‌شود، clone کنید:

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

دریافت کلید مجوز و نوشتن server.cfg

با حساب کاربری Cfx.re خود در portal.cfx.re وارد شوید و یک کلید سرور ایجاد کنید. این پورتال آدرس IP ماشینی که از کلید استفاده می‌کند را می‌پرسد و کلید به همان آدرس متصل می‌شود. انتقال به یک VPS جدید به معنای ویرایش کلید در پورتال است، نه ایجاد یک کلید دوم. تغییرات بلافاصله اعمال می‌شوند، اما FXServer تنها هنگام راه‌اندازی مجدد، اعتبار کلید را دوباره بررسی می‌کند.

فایل ~/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 را می‌پذیرد. مقادیر 32 یا بیشتر نیاز دارند که onesync روی on یا legacy تنظیم شود و مقادیر بالای 64 به on نیاز دارند. OneSync حالت آگاهی از وضعیت سرور است و همان قابلیتی است که اجازه می‌دهد سرور از تعداد اسلات‌های پیش‌فرض بازی فراتر رود. تنظیم 128 اسلات در حالی که OneSync خاموش است، به شما 128 اسلات نمی‌دهد، بلکه پیکربندی‌ای ایجاد می‌کند که سرور آن را رد می‌کند.

در sv_licenseKey کلید را بدون کوتیشن و بدون فاصله در انتها وارد کنید. FXServer آن خط را بر اساس فضای خالی (whitespace) جدا می‌کند، بنابراین یک کاراکتر اضافی باعث شکست در اعتبارسنجی شده و سرور از شروع کار خودداری می‌کند.

متغیر rcon_password عمداً در آن فایل قرار داده نشده است. RCON (کنسول از راه دور) تنها زمانی فعال می‌شود که این متغیر تنظیم شده باشد و پس از آن روی همان پورت UDP بازی گوش می‌دهد. رمز عبور RCON روی یک پورت عمومی، یک کانال اجرای دستور از راه دور به سرور شماست. مگر اینکه نیاز خاصی داشته باشید، آن را تنظیم نکنید و اگر مجبور به استفاده شدید، رمزی طولانی و تصادفی انتخاب کنید.

مقدار sv_scriptHookAllowed را روی false نگه دارید. مستندات رسمی آن را توصیه نمی‌کنند، زیرا اجازه دادن به کلاینت‌های Script Hook V، سرور را در معرض سوءاستفاده‌های سمت کلاینت قرار می‌دهد.

متغیر add_principal identifier.fivem:1 حقوق مدیریت را به شناسه کاربری Cfx.re با شماره 1 اعطا می‌کند. 1 را با شناسه عددی خود جایگزین کنید، در غیر این صورت دسترسی مدیریت را به حساب شخص دیگری داده‌اید و خودتان دسترسی نخواهید داشت.

یک بار سرور را به‌صورت دستی اجرا کنید:

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

از یک نشست SSH دوم، وضعیت سرور را بررسی کنید:

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

خروجی JSON که متغیرها و منابع سرور شما را نام می‌برد، به این معناست که FXServer متصل شده و پاسخ می‌دهد. خطای Connection refused به این معناست که سرور نتوانسته پورت را bind کند؛ بنابراین به جای حدس زدن، خروجی کنسول را بخوانید.

سروری که کلید ندارد، این پیام را چاپ کرده و متوقف می‌شود:

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

این پیام همچنان به آدرس قدیمی keymaster اشاره دارد. آن آدرس به همان پورتال Cfx.re منتهی می‌شود. اگر کلید تنظیم شده و سرور همچنان از اجرا خودداری می‌کند، دلیل معمول این است که IP ثبت‌شده برای آن کلید، دیگر با این ماشین مطابقت ندارد.

یک سرور FiveM به باز بودن کدام پورت‌ها نیاز دارد؟

پورت 30120، روی پروتکل‌های TCP (پروتکل کنترل انتقال) و UDP (پروتکل دیتاگرام کاربر). FiveM از یک شماره پورت برای هر دو پروتکل استفاده می‌کند و به هر دوی آن‌ها نیاز دارد. اگر فقط TCP را باز کنید، با نشانه‌ای گیج‌کننده مواجه می‌شوید: http://your.ip:30120/info.json در مرورگر پاسخ می‌دهد، بنابراین سرور سالم به نظر می‌رسد، در حالی که کلاینت بازی روی Failed to get info from server متوقف می‌شود و هرگز متصل نمی‌شود، زیرا کوئری کلاینت و ترافیک بازی آن از طریق UDP انجام می‌شود.

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

هنگام فعال‌سازی هر نوع فایروال، یک نشست SSH دوم را باز نگه دارید. اصول ufw برای VPS سیاست پیش‌فرض deny را توضیح می‌دهد که باعث می‌شود قوانین بالا به تنهایی کافی باشند.

بیشتر ارائه‌دهندگان، یک فایروال شبکه نیز خارج از سیستم‌عامل مهمان اجرا می‌کنند که به جای shell، از طریق پنل کنترل می‌شود. یک قانون ufw هیچ چیزی را در مورد آن لایه اثبات نمی‌کند. زمانی که TCP از بیرون پاسخ می‌دهد اما بازیکنان همچنان نمی‌توانند متصل شوند، در حالی که شخصی تلاش می‌کند متصل شود، ترافیک شبکه را مانیتور کنید:

sudo tcpdump -ni any udp port 30120

رسیدن بسته‌ها به این معنی است که فایروال بیرونی مشکلی ندارد و خطا در داخل سرور است. سکوت به این معنی است که چیزی در جلوی دستگاه آن‌ها را مسدود می‌کند، بنابراین در مرحله بعد پنل ارائه‌دهنده را بررسی کنید.

مدیریت سرور با txAdmin بدون در معرض دید قرار دادن آن

ابزار txAdmin درون آرتیفکتی که دانلود کرده‌اید قرار دارد. اگر run.sh را بدون هیچ آرگومان +exec اجرا کنید، یک پنل وب روی پورت TCP 40120 بالا می‌آید و سپس URL پنل و یک PIN کوتاه‌مدت را در کنسول چاپ می‌کند. شما از آن PIN یک‌بار برای متصل کردن حساب Cfx.re خود استفاده می‌کنید و پس از آن، با حساب مدیری که ایجاد می‌شود وارد می‌شوید.

ابزار txAdmin هیچ رمز عبور پیش‌فرضی ندارد، بنابراین ریسک موجود، یک اعتبارنامه فراموش‌شده نیست. ریسک اصلی ماهیت خود پنل است: یک کنسول از راه دور. این ابزار سرور را ری‌استارت می‌کند، فایل server.cfg را ویرایش می‌کند، داده‌های سرور را مستقر می‌سازد و دستورات را با کاربر سرور شما اجرا می‌کند. باز گذاشتن پورت 40120 برای اینترنت، یک صفحه ورود به تمام این قابلیت‌ها را در یک آدرس عمومی قرار می‌دهد و اسکنرها پورت‌های باز پنل را در عرض چند ساعت پیدا می‌کنند. پورت 40120 را در فایروال باز نکنید. از طریق یک SSH tunnel از دستگاه خود به آن دسترسی پیدا کنید:

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

سپس http://127.0.0.1:40120 را در مرورگر خود باز کنید. ترافیک پنل از درون اتصال SSH عبور می‌کند و پورت برای دیگران بسته باقی می‌ماند.

یک نکته مهم وجود دارد که پیش از تلاش برای حل این موضوع به روشی دیگر باید بدانید. ابزار txAdmin فایل TXHOST_INTERFACE (پیش‌فرض 0.0.0.0) را می‌خواند تا تصمیم بگیرد به کدام اینترفیس متصل (bind) شود و مستندات به‌صراحت بیان می‌کنند که همین مقدار به FXServer نیز تحمیل می‌شود. اگر آن را روی 127.0.0.1 تنظیم کنید تا پنل مخفی شود، سرور بازی را نیز به loopback محدود می‌کنید و در نتیجه هیچ بازیکنی نمی‌تواند به سرور دسترسی پیدا کند. پورت پنل را با فایروال ببندید، نه با آن متغیر. برای انتقال پنل به پورتی دیگر، TXHOST_TXA_PORT را تنظیم کنید که هر مقداری به‌جز 30120 را می‌پذیرد. متغیر قدیمی +set txAdminPort در بسیاری از راهنماها دیده می‌شود؛ مستندات خود txAdmin آن را منسوخ (deprecated) اعلام کرده و ذکر کرده است که در نسخه‌های آینده از کار خواهد افتاد.

تداوم اجرای سرور پس از خروج از سیستم

bash run.sh با بستن نشست SSH شما متوقف می‌شود. استفاده از tmux هنگام تست کردن مناسب است: tmux new -s fivem را اجرا کنید، سرور را استارت بزنید، کلیدهای Ctrl-b و سپس d را برای detach کردن فشار دهید و از tmux attach -t fivem برای بازگشت استفاده کنید. نشست tmux پس از reboot باقی نمی‌ماند، بنابراین هر چیزی که برایتان اهمیت دارد باید در یک unit مربوط به systemd قرار بگیرد.

فایل /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 از بین می‌رود. journalctl -u fivem -f اکنون کنسول شماست، زیرا سرویس systemd ترمینالی ندارد که بتوانید در آن تایپ کنید. اگر سرور را از طریق txAdmin مدیریت می‌کنید، +exec server.cfg را از ExecStart حذف کنید و WorkingDirectory را به /home/fivem/FXServer/server ارجاع دهید، زیرا txAdmin خودِ سرور بازی را استارت می‌زند و پوشهٔ داده‌های آن را در کنار run.sh نگه می‌دارد.

چه چیزی را پشتیبان‌گیری کنیم و محل ذخیره آن کجاست

نیازی به پشتیبان‌گیری از artifactها نیست، چرا که می‌توانید build پین‌شده را در عرض یک دقیقه دوباره دانلود کنید. چهار مورد زیر منحصراً متعلق به شما هستند.

  • ~/FXServer/server-data/resources: تمام منابعی که نصب، خریداری یا نوشته‌اید.
  • server.cfg، در هر کجا که قرار دارد: کل پیکربندی سرور، شامل principalهای مدیریتی شما.
  • ~/FXServer/server/txData: پیکربندی، لیست مدیران و لاگ‌های txAdmin. در نسخه Linux artifact، این پوشه در کنار run.sh ایجاد می‌شود.
  • دیتابیس MariaDB یا MySQL، اگر framework شما از آن استفاده می‌کند. کاراکترها، پول، وسایل نقلیه و موجودی‌ها فقط در آنجا ذخیره می‌شوند و جای دیگری نیستند؛ بنابراین پشتیبان‌گیری از منابع بدون dump دیتابیس، منجر به بازیابی یک دنیای خالی می‌شود.
mkdir -p ~/backups
mysqldump -u fivem -p --single-transaction fivem_db > ~/backups/fivem-$(date +%F).sql

فایلی که روی همان دیسکی ذخیره شده که سرور روی آن قرار دارد، پشتیبان محسوب نمی‌شود، زیرا دیسک همان قطعه‌ای است که ممکن است خراب شود. طبق یک زمان‌بندی مشخص، فایل‌ها را به خارج از سرور منتقل کنید؛ این همان کاری است که پشتیبان‌گیری restic از یک VPS برای آن طراحی شده است.

حالت‌های شکست و پیام‌هایی که مشاهده خواهید کرد

خطای Permission denied در لودر. سرور بلافاصله با خطی مشابه این متوقف می‌شود:

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

این اتفاق به این دلیل رخ می‌دهد که آرشیو با sudo استخراج شده است، بنابراین تمام محتویات تحت alpine/ متعلق به root هستند و کاربر fivem نمی‌تواند لودر موجود در آن را اجرا کند. مالکیت فایل‌ها را با sudo chown -R fivem:fivem /home/fivem/FXServer اصلاح کنید، یا پوشه را حذف کرده و دوباره آن را به عنوان کاربر fivem استخراج کنید.

عدم باز شدن فایل دانلود شده توسط tar. خطای tar (child): xz: Cannot exec: No such file or directory به این معنی است که بسته xz-utils نصب نیست، بنابراین tar نمی‌تواند آرشیو .tar.xz را از حالت فشرده خارج کند. آن را نصب کرده و دوباره استخراج کنید. دانلودی که بسیار سریع تمام می‌شود معمولاً یک صفحه خطای HTML است که به عنوان fx.tar.xz ذخیره شده است و tar آن را به عنوان یک آرشیو خراب گزارش می‌کند.

سرور اجرا می‌شود اما کسی نمی‌تواند متصل شود. ابتدا پورت‌ها را به این ترتیب بررسی کنید: قانون ufw برای هر دو پروتکل TCP و UDP روی پورت 30120، سپس فایروال شبکه خودِ ارائه‌دهنده سرور، و در نهایت IP ثبت‌شده برای لایسنس. اجرای دستور curl در برابر info.json از خارج از سرور، مشکل شبکه را از مشکل سرور در یک دستور تفکیک می‌کند.

افزایش زمان Tick با ورود بازیکنان. پنل عملکرد txAdmin زمان tick سرور را نمایش می‌دهد. وقتی این زمان با افزایش تعداد بازیکنان بالا می‌رود در حالی که مصرف کلی CPU پایین به نظر می‌رسد، یک منبع (resource) در حال اشباع کردن ترد اصلی است. این محاسبات را به یاد داشته باشید: در یک سرور با 4 vCPU، یک هسته که کاملاً درگیر است به صورت تقریباً 25 درصد از کل CPU در top نمایش داده می‌شود، که ممکن است در ظاهر بیکار به نظر برسد اما این‌طور نیست. منابع را یکی‌یکی متوقف کنید و زمان tick را زیر نظر بگیرید تا منبعی که باعث ایجاد هزینه پردازشی می‌شود را پیدا کنید.

مقایسه ابعاد این سرور با سایر سرورهای بازی

یک سرور FiveM قابل بازی، به یک هسته پردازشی سریع و حافظه کافی برای لیست ریسورس‌هایی که واقعاً اجرا می‌کنید نیاز دارد. تعداد اسلات‌ها از این دو فاکتور تبعیت می‌کند و افزایش تعداد vCPUها، کندی یک هسته را جبران نمی‌کند. مطلب انتخاب VPS برای سرورهای بازی این موازنه را برای مجموعه‌ای از سرورهای مختلف بررسی می‌کند و اجرای سرور Minecraft روی VPS نیز در زیرساخت خود همین الگو را دارد: یک حلقه اصلی پردازش (tick loop) وجود دارد، بنابراین سرعت هر هسته، سقف عملکرد را در آنجا نیز تعیین می‌کند.

FAQ

سرور FiveM به چه میزان CPU و RAM نیاز دارد؟

یک هسته سریع اهمیت بیشتری نسبت به چندین هسته کند دارد، زیرا FXServer منطق بازی خود را روی یک ترد اصلی واحد اجرا می‌کند. امتیاز تک‌هسته (single thread) مدل CPU خود را مقایسه کنید، سپس آن را روی سرور با sysbench cpu --threads=1 run تایید کنید و مطمئن شوید که vmstat مقدار steal time نزدیک به صفر را نشان می‌دهد. از نظر حافظه، داده‌های پایه سرور Cfx.re با چند صد مگابایت اجرا می‌شوند، در حالی که یک فریم‌ورک نقش‌آفرینی (roleplay) با چهل یا پنجاه منبع (resource) به همراه یک دیتابیس محلی، با 8 گیگابایت رم عملکرد مطلوبی دارد و زیر 4 گیگابایت با محدودیت مواجه می‌شود. این‌ها ارقام معمول در جامعه کاربری هستند، بنابراین به جای تکیه بر آن‌ها، در زمان اوج ترافیک free -m را مانیتور کنید.

آیا بازیکنان برای پیوستن به سرور FiveM من باید مالک GTA V باشند؟

بله. هر بازیکنی که متصل می‌شود باید یک نسخه قانونی و دارای لایسنس از GTA V در Steam، Rockstar Games Launcher یا Epic Games داشته باشد، به علاوه یک اکانت رایگان Cfx.re. کلاینت FiveM پیش از برقراری اتصال، مالکیت بازی را بررسی می‌کند. هیچ روش پشتیبانی‌شده‌ای برای دور زدن این مورد وجود ندارد و اجرای سروری که سعی در دور زدن آن داشته باشد، خارج از چارچوب‌های مجاز Cfx.re است.

سرور FiveM به باز بودن چه پورت‌هایی نیاز دارد؟

پورت 30120 هم روی TCP و هم روی UDP. نقاط پایانی HTTP مانند info.json و دانلود منابع از TCP استفاده می‌کنند و ترافیک بازی کلاینت از UDP استفاده می‌کند. باز کردن تنها پورت TCP منجر به حالتی گیج‌کننده می‌شود که در آن سرور به مرورگر پاسخ می‌دهد اما بازیکنان با خطای Failed to get info from server مواجه می‌شوند. txAdmin به پورت TCP 40120 نیاز دارد و این پورت باید به روی اینترنت بسته بماند.

آیا امن است که txAdmin روی پورت 40120 در دسترس باشد؟

خیر. txAdmin یک کنسول از راه دور است که سرور را ری‌استارت می‌کند، تنظیمات را ویرایش کرده و دستورات را اجرا می‌کند؛ بنابراین یک پنل در دسترس عموم، به معنای در دسترس بودن کنترل پنل کل سرور بازی است. هیچ رمز عبور پیش‌فرضی وجود ندارد، اما یک صفحه ورود عمومی، حملات به اعتبارنامه‌ها را دعوت می‌کند که شما قادر به مشاهده آن‌ها نیستید. پورت 40120 را در فایروال بسته نگه دارید و از طریق یک تونل SSH با ssh -N -L 40120:127.0.0.1:40120 user@server به پنل دسترسی پیدا کنید، سپس به http://127.0.0.1:40120 بروید. txAdmin را با TXHOST_INTERFACE روی 127.0.0.1 بایند نکنید، زیرا این تنظیم سرور بازی را نیز مجبور به استفاده از loopback می‌کند و هیچ بازیکنی قادر به اتصال نخواهد بود.

آیا باید یک نسخه (build) خاص از artifact را پین کنم یا همیشه آخرین نسخه توصیه‌شده را بگیرم؟

پوشه نسخه شماره‌گذاری‌شده را پین کنید. برچسب "recommended" به‌طور مرتب به نسخه جدیدتری تغییر می‌کند، بنابراین اسکریپتی که نسخه توصیه‌شده را دریافت می‌کند ممکن است در هر بار بازسازی (rebuild)، باینری متفاوتی به شما بدهد و سروری که دیروز کار می‌کرد، ممکن است به دلایلی نامرتبط با تغییرات شما، در استقرار مجدد از کار بیفتد. شماره نسخه و commit hash تست‌شده را یادداشت کنید، ارتقا را به‌صورت هدفمند انجام دهید و پوشه قبلی را روی دیسک نگه دارید تا بتوانید با ویرایش یک مسیر در unit فایل systemd خود، به نسخه قبل برگردید. البته اجازه ندهید پین شما قدیمی شود: طبق سیاست Cfx.re، نسخه‌های قدیمی‌تر از سه ماه که پشتیبانی نمی‌شوند، از لیست مرورگر سرورها حذف می‌شوند، بنابراین در بازه زمانی پشتیبانی ارتقا دهید.

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