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

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

راهنمای گام به گام نصب FXServer روی Ubuntu. یاد بگیرید چگونه artifactها را مدیریت کنید، لایسنس Cfx.re را فعال کرده و پورت 30120 را برای اتصال بازیکنان باز کنید.

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

یک سرور FiveM روی VPS شامل یک کاربر Linux بدون دسترسی ریشه (unprivileged)، یک نسخه از artifactهای Cfx.re، یک لایسنس کی و یک پورت باز روی هر دو پروتکل 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 بسازد. کلاینت در هنگام شروع، مالکیت بازی را بررسی می‌کند، بنابراین سروری که بر پایه هر چیز دیگری ساخته شده باشد کار نخواهد کرد و هیچ‌گونه روش جایگزینی در اینجا پوشش داده نمی‌شود.

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

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

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

این موضوع عادت معمول خرید 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 است: سهمی از زمان که CPU مجازی شما آماده اجرا بوده اما هایپروایزر (hypervisor) آن را در انتظار نگه داشته است. عدد ثابت بالای 1 یا 2 به این معنی است که شما یک هسته فیزیکی را با همسایگان پرمشغله به اشتراک می‌گذارید و حلقه بازی بلافاصله آن را به صورت rubber banding (پرش‌های ناگهانی) حس می‌کند. Steal time ناشی از همسایه پرسر و صدا توضیح می‌دهد که چگونه این ستون را بخوانید و در مورد آن چه کاری انجام دهید.

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

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

سرویس را به‌عنوان یک کاربر معمولی اجرا کنید و هرگز از کاربر root استفاده نکنید. دو دلیل برای این کار وجود دارد. استفاده از root در هر سرویسی که به اینترنت متصل است، عادت بدی محسوب می‌شود. همچنین، artifact لینوکسی در داخل یک root filesystem بسته‌بندی‌شده از 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 قرار دارد. در لیست موجود، یک نسخه به عنوان نسخه توصیه‌شده (recommended) علامت‌گذاری شده است که این برچسب هر چند هفته یک‌بار به نسخه جدیدتری منتقل می‌شود. به جای آن، پوشه شماره‌دار را ثابت (pin) کنید. با این کار، اگر ماه آینده سرور خود را مجدداً بسازید، همان فایلی (binary) را دریافت می‌کنید که در این ماه تست کرده‌اید و ارتقا به یک تصمیم آگاهانه تبدیل می‌شود.

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
ls

در زمان بررسی لیست در اوت 2026، نسخه 25770 دارای برچسب توصیه‌شده بود. همان دایرکتوری را در مرورگر باز کنید تا نسخه فعلی را ببینید، سپس نام آن پوشه که شامل شماره نسخه و هش commit است را در URL جای‌گذاری کنید.

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 حالت آگاهی از وضعیت (state awareness) سرور است و همان چیزی است که اجازه می‌دهد سرور از تعداد اسلات‌های پیش‌فرض بازی فراتر رود. تنظیم 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 را توضیح می‌دهد که باعث می‌شود قوانین بالا به تنهایی کافی باشند.

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

sudo tcpdump -ni any udp port 30120

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

مدیریت سرور با 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) را می‌خواند تا تصمیم بگیرد به کدام اینترفیس متصل شود و مستندات به‌صراحت بیان می‌کنند که همین مقدار به 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، در هر مسیری که قرار دارد: کل پیکربندی سرور، شامل admin principalهای شما.
  • ~/FXServer/server/txData: پیکربندی، لیست مدیران و لاگ‌های txAdmin. در نسخه Linux، این پوشه در کنار 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)، یک هسته که کاملاً درگیر باشد در top حدود 25 درصد از کل CPU را نشان می‌دهد؛ این وضعیت ممکن است در ظاهر بیکار (idle) به نظر برسد اما در واقع این‌طور نیست. منابع را یکی‌یکی متوقف کنید و زمان tick را زیر نظر بگیرید تا منبعی که باعث این هزینه می‌شود را پیدا کنید.

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

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

FAQ

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

داشتن یک هسته سریع اهمیت بیشتری نسبت به تعداد زیاد هسته‌های کند دارد، زیرا FXServer منطق بازی خود را روی یک ترد اصلی واحد اجرا می‌کند. امتیاز تک‌هسته‌ای (single thread score) مدل CPU خود را مقایسه کنید، سپس آن را روی سرور با sysbench cpu --threads=1 run بررسی کرده و مطمئن شوید که vmstat مقدار steal time نزدیک به صفر را نشان می‌دهد. از نظر حافظه، داده‌های پایه سرور Cfx.re با چند صد مگابایت اجرا می‌شوند، در حالی که یک فریم‌ورک نقش‌آفرینی (roleplay) با چهل یا پنجاه ریسورس به همراه یک دیتابیس محلی، در 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 را ثابت (pin) کنم یا همیشه آخرین نسخه توصیه‌شده را دریافت کنم؟

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

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