SSD Nodes Learn Hosting plans →
নির্দেশিকা Matt Connorদ্বারা Matt Connor

কিভাবে একটি VPS-এ FiveM সার্ভার সেটআপ করবেন

Ubuntu-তে FXServer ইনস্টল, নির্দিষ্ট artifact build ব্যবহার, Cfx.re লাইসেন্স কি সেটআপ এবং 30120 পোর্ট খোলার নিয়ম জানুন। txAdmin পাবলিক ইন্টারনেটে না রাখার সতর্কতা দেখুন।

একটি VPS-এ FiveM server-এর জন্য যা প্রয়োজন

একটি VPS-এ FiveM server-এর জন্য একটি unprivileged Linux user, Cfx.re থেকে নেওয়া একটি artifact build, একটি licence key এবং TCP ও UDP উভয় ক্ষেত্রেই open থাকা একটি port প্রয়োজন। Installation সম্পন্ন হতে প্রায় দশ মিনিট লাগে। এই guide-এর বাকি অংশে সেই বিষয়গুলো আলোচনা করা হয়েছে, যেগুলো server-টি খেলার উপযোগী হবে কি না তা নির্ধারণ করে: একটি CPU core-এর speed, আপনার resources-এর প্রয়োজনীয় memory এবং এমন একটি management panel, যেটি কখনো public address-এ open রাখা উচিত নয়।

তিনটি prerequisite নির্দিষ্ট। Server binaries-কে artifacts বলা হয় এবং এগুলো official Cfx.re build listing থেকে আসে। Licence key আসে portal.cfx.re-এ থাকা Cfx.re portal থেকে। পুরোনো guide-গুলো এই service-কে keymaster বলে। যে machine এটি ব্যবহার করে, key-টি সেই machine-এর address-এর সঙ্গে যুক্ত থাকে। সংযোগকারী প্রতিটি player-এর Steam, Rockstar Games Launcher অথবা Epic Games-এ GTA V (Grand Theft Auto V)-এর নিজস্ব বৈধ copy এবং একটি free Cfx.re account প্রয়োজন। Client start হওয়ার সময় game ownership যাচাই করে। তাই অন্য কোনো কিছুর ওপর তৈরি server কাজ করে না, এবং এখানে কোনো ধরনের workaround content নিয়ে আলোচনা করা হয়নি।

Server host করা এবং একই machine-এ game খেলা আলাদা কাজ। VPS-এ আপনি নিজেই game চালাতে পারবেন কি না—এটি একটি পৃথক প্রশ্ন, যার উত্তরও ভিন্ন।

কেন সিঙ্গেল কোর স্পিড FiveM সার্ভারের পারফরম্যান্স নির্ধারণ করে

FXServer, যা FiveM সার্ভারের বাইনারি, গেমের লজিক একটি প্রধান থ্রেডে চালায়। প্রতিটি রিসোর্স স্ক্রিপ্ট, প্রতিটি ইভেন্ট হ্যান্ডলার এবং প্রতিটি স্টেট আপডেট এই একটি লুপের মধ্য দিয়ে যায়। অতিরিক্ত কোর কার্নেল, ডাটাবেস এবং নেটওয়ার্ক স্ট্যাকের জন্য সহায়ক হলেও, এগুলো গেম লুপকে বিভক্ত করতে পারে না। তাই ধীরগতির কোরের 4টি vCPU-এর সার্ভার লোডের সময় ল্যাগ করে, কিন্তু দ্রুতগতির কোরের 2টি vCPU-এর সার্ভার সাবলীল থাকে।

এটি VPS কেনার প্রচলিত অভ্যাসকে উল্টে দেয়, যেখানে কোরের সংখ্যাই মূল বিষয় হিসেবে দেখা হয়। টাকা খরচ করার আগে প্রতি কোরের গতি যাচাই করুন। প্রথমে CPU মডেলটি দেখুন:

lscpu | grep -E 'Model name|MHz'

এরপর সেই মডেলের প্রকাশিত সিঙ্গেল থ্রেড স্কোর দেখুন। 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 কাজ করার জন্য প্রস্তুত ছিল কিন্তু হাইপারভাইজার সেটিকে অপেক্ষা করিয়েছে। এই মান যদি 1 বা 2-এর উপরে স্থির থাকে, তার মানে আপনি ব্যস্ত প্রতিবেশীদের সাথে একটি ফিজিক্যাল কোর শেয়ার করছেন, যা গেম লুপে তাৎক্ষণিক রাবার ব্যান্ডিং (rubber banding) তৈরি করে। নয়েজি নেইবার থেকে steal time বিষয়টি এই কলামটি কীভাবে পড়তে হয় এবং এর প্রতিকার কী, তা ব্যাখ্যা করে।

মেমোরি ব্যবহারের পরিমাণ নির্ভর করে আপনি কী কী রিসোর্স চালাচ্ছেন তার ওপর, শুধু স্লটের সংখ্যার ওপর নয়। Cfx.re থেকে প্রাপ্ত বেস সার্ভার ডাটা কয়েকশ মেগাবাইটে চলে। কিন্তু চল্লিশ-পঞ্চাশটি রিসোর্স এবং একই বক্সে MariaDB ডাটাবেসসহ একটি রোলপ্লে ফ্রেমওয়ার্ক সম্পূর্ণ ভিন্ন বিষয়: 4 GB মেমোরি একটি যুক্তিসঙ্গত সর্বনিম্ন সীমা এবং 32 থেকে 64 স্লটের জন্য 8 GB মেমোরি বেশ আরামদায়ক। এগুলো কমিউনিটি সেটআপের সাধারণ পরিসংখ্যান, তাই এগুলোকে শুরুর পয়েন্ট হিসেবে ধরুন এবং প্রকৃত প্লেয়ার লোডের সময় free -m পর্যবেক্ষণ করুন।

একটি ইউজার তৈরি করুন এবং ডিপেন্ডেন্সিগুলো ইনস্টল করুন

সার্ভারটি সাধারণ ইউজার হিসেবে চালান, কখনোই root হিসেবে চালাবেন না। এর দুটি কারণ রয়েছে। যেকোনো ইন্টারনেট-মুখী সার্ভিসে root ব্যবহার করা একটি খারাপ অভ্যাস। এছাড়া, Linux artifact-টি একটি bundled Alpine Linux root filesystem-এর ভেতরে চলে, তাই 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 ব্যবহার করা হয়।

একটি নির্দিষ্ট artifact build ডাউনলোড করুন

Linux buildটি Cfx.re artifact server-এর build_proot_linux channel-এ থাকে। Cfx.re server download page-এ একটি build-কে Recommended এবং আরও নতুন একটি build-কে Latest হিসেবে দেখানো হয়। Release প্রকাশ হলে উভয় label-ই নতুন build-এ চলে যায়। তাই numbered folder-টি নির্দিষ্ট করে ব্যবহার করুন। পরের মাসে server পুনর্নির্মাণ করলেও এই মাসে পরীক্ষিত একই binary পাবেন। 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 ছিল। পেজটি খুলুন, Linux নির্বাচন করুন, এবং বর্তমান fx.tar.xz link থেকে folder name কপি করে URL-এ বসান। Folder name-এ build number এবং commit hash থাকে। অনেক guide-এ এখনো যে পুরোনো artifacts directory listing-এর link দেওয়া আছে, সেটি বর্তমানে একই পেজে redirect হয়।

নির্দিষ্ট করে রাখা build-এরও একটি ব্যবহারযোগ্য সময়সীমা আছে। পরবর্তী Recommended artifact প্রকাশের পর Cfx.re ছয় সপ্তাহ পর্যন্ত আগের Recommended artifact সমর্থন করে। তাদের policy অনুযায়ী, তিন মাসের বেশি পুরোনো এবং unsupported server artifact server browser থেকে join করা যাবে না। পুরোনো build চলতে থাকবে, কিন্তু player-রা browser থেকে আর এতে join করতে পারবে না। তাই চিরস্থায়ীভাবে pin না করে upgrade-এর জন্য calendar-এ সময় নির্ধারণ করুন।

ls-এ এখন run.sh এবং একটি alpine directory দেখা উচিত। এই directory-ই মূল বিষয়। Linux artifact-এর সঙ্গে একটি ছোট Alpine root filesystem থাকে। এটি root privilege ছাড়াই chroot-এর আচরণ অনুকরণকারী userspace tool proot ব্যবহার করে এর ভেতরে server চালু করে। তাই distribution-specific package ছাড়াই একই download Ubuntu, Debian এবং Rocky-তে চলে।

এখন base server data clone করুন। এতে আপনার server.cfg চালু করার জন্য প্রয়োজনীয় default resource থাকে:

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

লাইসেন্স কী সংগ্রহ করুন এবং server.cfg লিখুন

আপনার Cfx.re account দিয়ে portal.cfx.re-এ sign in করুন এবং একটি server key তৈরি করুন। Portal যে মেশিন এটি ব্যবহার করবে, সেই মেশিনের IP address চায় এবং key-টি ওই address-এর সঙ্গে bind করা থাকে। নতুন VPS-এ স্থানান্তর করলে দ্বিতীয় key তৈরি করবেন না; portal-এ key-টির তথ্য edit করুন। পরিবর্তনটি সঙ্গে সঙ্গে কার্যকর হয়, কিন্তু FXServer restart না হওয়া পর্যন্ত আবার validation করে না।

~/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 সেট করতে হয়, আর 64-এর বেশি value-এর জন্য on প্রয়োজন। OneSync হলো server-এর state awareness mode। এটি server-কে base game-এর ছোট slot count অতিক্রম করতে দেয়। OneSync বন্ধ রেখে 128 slot সেট করলে 128 slot পাওয়া যায় না; বরং এমন একটি config তৈরি হয় যা server প্রত্যাখ্যান করে।

sv_licenseKey-এ quotes ছাড়া এবং শেষে কোনো space না দিয়ে key বসে। FXServer whitespace-এ ওই line ভাগ করে। তাই একটি অতিরিক্ত character থাকলেও validation ব্যর্থ হয় এবং server start হতে অস্বীকার করে।

rcon_password ইচ্ছাকৃতভাবে ওই file-এ নেই। RCON (remote console) variable সেট করা হলেই চালু হয় এবং তখন 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 client অনুমোদন করলে client-side abuse-এর সুযোগ তৈরি হয়।

শেষের দুটি line একসঙ্গে কাজ করে। add_ace group.admin command allow group.admin group-কে সব command চালানোর অনুমতি দেয়, আর add_principal identifier.fivem:1 group.admin Cfx.re account ID 1-কে ওই group-এর permission inherit করায়। এভাবেই account-টি admin rights পায়। Documented syntax হলো add_principal [child_principal] [parent_principal]। তাই দুটি অংশই প্রয়োজন: শুধু account-এর নাম থাকা একটি add_principal line-এ inherit করার মতো কোনো group থাকে না এবং এটি কোনো permission দেয় না। 1-এর জায়গায় আপনার নিজের numeric ID বসান। তা না হলে অন্য কারও account-কে admin access দিয়ে ফেলবেন এবং নিজের account-এ কোনো access থাকবে না।

একবার হাতে করে 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 হয়েছে এবং response দিচ্ছে। Connection refused মানে server port-এ bind করতে পারেনি। তাই অনুমান না করে console output পড়ুন।

কোনো key না থাকলে server এটি দেখিয়ে থেমে যায়:

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 সেট করা থাকা সত্ত্বেও server চলতে অস্বীকার করলে সাধারণত কারণ হলো key-এর সঙ্গে নিবন্ধিত IP address আর এই মেশিনের IP address এক নয়।

FiveM সার্ভারের জন্য কোন পোর্টগুলো খোলা রাখা প্রয়োজন?

TCP (transmission control protocol) এবং UDP (user datagram protocol) উভয় প্রোটোকলেই 30120 পোর্টটি খোলা রাখতে হবে। 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 সেশন খোলা রাখুন। VPS-এর জন্য ufw-এর প্রাথমিক বিষয়াবলি ডিফল্ট 'deny' পলিসি সম্পর্কে ব্যাখ্যা করে, যা উপরের রুলগুলোকে কার্যকর করার জন্য যথেষ্ট।

অধিকাংশ প্রোভাইডার গেস্ট সার্ভারের বাইরেও একটি নেটওয়ার্ক ফায়ারওয়াল চালায়, যা শেল থেকে নয় বরং তাদের কন্ট্রোল প্যানেল থেকে নিয়ন্ত্রিত হয়। ufw রুল সেই স্তরের নিরাপত্তার কোনো নিশ্চয়তা দেয় না। যখন বাইরে থেকে TCP সাড়া দেয় কিন্তু খেলোয়াড়রা তবুও সংযোগ করতে পারে না, তখন কেউ সংযোগ করার চেষ্টা করলে নেটওয়ার্ক ট্রাফিক পর্যবেক্ষণ করুন:

sudo tcpdump -ni any udp port 30120

প্যাকেট পৌঁছানোর অর্থ হলো বাইরের ফায়ারওয়াল ঠিক আছে এবং সমস্যাটি সার্ভারের ভেতরেই। কোনো সাড়া না পাওয়ার অর্থ হলো সার্ভারের সামনে থাকা কোনো কিছু প্যাকেটগুলোকে ড্রপ করছে, তাই পরবর্তী ধাপে প্রোভাইডারের প্যানেলটি পরীক্ষা করুন।

txAdmin ব্যবহার করে সার্ভার পরিচালনা করুন কিন্তু একে উন্মুক্ত করবেন না

txAdmin আপনার ডাউনলোড করা artifact-এর মধ্যেই থাকে। কোনো +exec আর্গুমেন্ট ছাড়া run.sh শুরু করলে এটি TCP port 40120-এ একটি ওয়েব প্যানেল চালু করে এবং কনসোলে প্যানেলের URL ও একটি স্বল্পমেয়াদী PIN প্রদর্শন করে। আপনার Cfx.re অ্যাকাউন্ট লিঙ্ক করার জন্য এই PIN একবার ব্যবহার করতে হয়, এরপর থেকে আপনি আপনার তৈরি করা অ্যাডমিন অ্যাকাউন্ট দিয়ে লগইন করবেন।

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 কোন ইন্টারফেসে bind হবে তা নির্ধারণ করতে TXHOST_INTERFACE (ডিফল্ট 0.0.0.0) পড়ে এবং ডকুমেন্টেশনে স্পষ্টভাবে বলা আছে যে একই মান FXServer-এর ওপরও প্রয়োগ করা হয়। প্যানেলটি লুকানোর জন্য এটিকে 127.0.0.1-এ সেট করলে গেম সার্ভারটিও loopback-এ bind হয়ে যাবে, ফলে কোনো খেলোয়াড়ই সার্ভারে যুক্ত হতে পারবে না। প্যানেলের পোর্টটি ফায়ারওয়াল দিয়ে বন্ধ করুন, এই ভেরিয়েবল দিয়ে নয়। প্যানেলটিকে অন্য পোর্টে সরাতে TXHOST_TXA_PORT সেট করুন, যা 30120 ছাড়া যেকোনো পোর্ট গ্রহণ করে। পুরোনো +set txAdminPort convar-টি অনেক গাইডে দেখা যায়; txAdmin-এর নিজস্ব ডকুমেন্টেশনে এটিকে deprecated হিসেবে চিহ্নিত করা হয়েছে এবং বলা হয়েছে যে ভবিষ্যতের কোনো রিলিজে এটি কাজ করা বন্ধ করে দেবে।

লগ আউট করার পরেও সার্ভার চালু রাখা

bash run.sh আপনার SSH সেশনের সাথে বন্ধ হয়ে যায়। পরীক্ষার সময় tmux ব্যবহার করা সুবিধাজনক: tmux new -s fivem চালান, সার্ভার শুরু করুন, ডিটাচ (detach) করতে Ctrl-b চেপে d চাপুন এবং ফিরে আসতে tmux attach -t fivem ব্যবহার করুন। একটি tmux সেশন রিবুট-এর পরে টিকে থাকে না, তাই গুরুত্বপূর্ণ যেকোনো কিছু একটি 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 দুটি কাজ করে: এটি অবিলম্বে সার্ভিসটি শুরু করে এবং রিবুট-এর পরে সার্ভিসটিকে পুনরায় চালু করে। ম্যানুয়ালি শুরু করা সার্ভার পরবর্তী কার্নেল আপডেটের পর আর থাকে না। journalctl -u fivem -f এখন আপনার কনসোল, কারণ একটি systemd সার্ভিসের কোনো টার্মিনাল নেই যেখানে আপনি টাইপ করতে পারেন। যদি আপনি এর পরিবর্তে txAdmin-এর মাধ্যমে সার্ভার পরিচালনা করেন, তবে ExecStart থেকে +exec server.cfg সরিয়ে ফেলুন এবং WorkingDirectory-কে /home/fivem/FXServer/server-এর দিকে নির্দেশ করুন, কারণ txAdmin নিজেই গেম সার্ভার শুরু করে এবং এর ডেটা ফোল্ডারটিকে run.sh-এর পাশে রাখে।

কী কী ব্যাকআপ নিতে হবে এবং সেগুলো কোথায় থাকে

আর্টিফ্যাক্টগুলোর ব্যাকআপ নেওয়ার প্রয়োজন নেই, কারণ আপনি চাইলে যেকোনো সময় পিন করা বিল্ডটি পুনরায় ডাউনলোড করে নিতে পারেন। তবে নিচের চারটি বিষয় শুধুমাত্র আপনার নিজস্ব।

  • ~/FXServer/server-data/resources: আপনার ইনস্টল করা, কেনা বা লেখা প্রতিটি রিসোর্স।
  • server.cfg: এটি যেখানেই থাকুক না কেন, আপনার অ্যাডমিন প্রিন্সিপালসহ পুরো সার্ভার কনফিগারেশন।
  • ~/FXServer/server/txData: txAdmin-এর কনফিগারেশন, অ্যাডমিন তালিকা এবং লগ। লিনাক্স আর্টিফ্যাক্টের ক্ষেত্রে এই ফোল্ডারটি run.sh-এর পাশেই তৈরি হয়।
  • MariaDB বা MySQL ডেটাবেস, যদি আপনার ফ্রেমওয়ার্ক এটি ব্যবহার করে। চরিত্র, অর্থ, যানবাহন এবং ইনভেন্টরি শুধুমাত্র এখানেই থাকে, তাই ডেটাবেস ডাম্প ছাড়া রিসোর্সের ব্যাকআপ নিলে একটি খালি ওয়ার্ল্ড রিস্টোর হবে।
mkdir -p ~/backups
mysqldump -u fivem -p --single-transaction fivem_db > ~/backups/fivem-$(date +%F).sql

সার্ভারের একই ডিস্কে রাখা কোনো ডাম্পকে ব্যাকআপ বলা যায় না, কারণ ডিস্ক নষ্ট হয়ে গেলে সেটিও হারিয়ে যাবে। একটি নির্দিষ্ট সময়সূচী অনুযায়ী এগুলোকে সার্ভারের বাইরে সরিয়ে নিন, যার জন্য restic backups from a VPS ব্যবহার করা হয়।

ব্যর্থতার ধরন এবং যে বার্তাগুলো আপনি দেখবেন

লোডার (loader)-এ 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 সেটিকে একটি ত্রুটিপূর্ণ আর্কাইভ হিসেবে রিপোর্ট করে।

সার্ভার চলে কিন্তু কেউ জয়েন করতে পারে না। প্রথমে পোর্টগুলো চেক করুন, এই ক্রমে: 30120 পোর্টে TCP এবং UDP উভয়ের জন্যই ufw রুল, এরপর প্রোভাইডারের নিজস্ব নেটওয়ার্ক ফায়ারওয়াল, এবং সবশেষে লাইসেন্স কি (licence key)-তে নিবন্ধিত IP। সার্ভারের বাইরে থেকে curl এর বিপরীতে info.json কমান্ডটি চালালে নেটওয়ার্ক সমস্যা নাকি সার্ভার সমস্যা তা এক কমান্ডেই আলাদা করা যায়।

প্লেয়ার আসার সাথে সাথে টিক টাইম (tick time) বাড়তে থাকে। txAdmin-এর পারফরম্যান্স প্যানেলে সার্ভারের টিক টাইম দেখা যায়। যখন প্লেয়ার সংখ্যা বাড়ার সাথে সাথে এটি বৃদ্ধি পায় কিন্তু সামগ্রিক CPU ব্যবহার কম দেখায়, তখন বুঝতে হবে কোনো একটি রিসোর্স মেইন থ্রেডকে স্যাচুরেট করে ফেলছে। হিসাবটি মনে রাখুন: একটি 4 vCPU বক্সে, একটি পূর্ণ লোড হওয়া কোর top-তে মোট CPU-এর প্রায় 25 শতাংশ হিসেবে দেখায়, যা দেখে মনে হতে পারে সার্ভারটি অলস (idle) অবস্থায় আছে, কিন্তু আসলে তা নয়। একটি একটি করে রিসোর্স বন্ধ করুন এবং টিক টাইম পর্যবেক্ষণ করে দেখুন কোনটি আপনার সার্ভারের পারফরম্যান্স কমিয়ে দিচ্ছে।

অন্যান্য গেম সার্ভারের সাথে এর তুলনা

একটি খেলার উপযোগী FiveM সার্ভারের জন্য দ্রুতগতির সিঙ্গেল কোর এবং আপনার চালানো রিসোর্স তালিকার জন্য পর্যাপ্ত মেমোরি প্রয়োজন। স্লট সংখ্যা এই দুটি বিষয়ের ওপর নির্ভর করে, এবং vCPU-এর সংখ্যা বাড়িয়ে ধীরগতির কোরের সীমাবদ্ধতা দূর করা সম্ভব নয়। গেম সার্ভারের জন্য VPS নির্বাচন বিষয়টি মিশ্র সার্ভারের ক্ষেত্রে এই ভারসাম্য নিয়ে আলোচনা করে, এবং VPS-এ Minecraft সার্ভার চালানো-র ক্ষেত্রেও একই মূলনীতি কাজ করে: এখানে একটি প্রধান টিক লুপ থাকে, তাই প্রতিটি কোরের গতিই সার্ভারের সক্ষমতার সর্বোচ্চ সীমা নির্ধারণ করে।

FAQ

FiveM server-এর কত CPU এবং RAM প্রয়োজন?

একাধিক ধীর core-এর চেয়ে একটি দ্রুত core বেশি গুরুত্বপূর্ণ, কারণ FXServer তার game logic একটি প্রধান thread-এ চালায়। CPU model-এর প্রকাশিত single-thread score তুলনা করুন। এরপর sysbench cpu --threads=1 run দিয়ে সার্ভারে তা নিশ্চিত করুন এবং দেখুন vmstat-এ steal time প্রায় শূন্য দেখাচ্ছে কি না। Memory-এর ক্ষেত্রে, মূল Cfx.re server data কয়েকশ megabyte-এ চলে। তবে চল্লিশ বা পঞ্চাশটি resource-সহ roleplay framework এবং একটি local database চালাতে 8 GB আরামদায়ক, আর 4 GB-এর নিচে তা সংকটপূর্ণ হয়ে যায়। এগুলো community-এর সাধারণ পরিসংখ্যান। তাই শুধু এগুলোর ওপর নির্ভর না করে peak সময়ে free -m monitor করুন।

আমার FiveM server-এ যোগ দিতে খেলোয়াড়দের কি GTA V কিনতে হবে?

হ্যাঁ। সংযোগকারী প্রতিটি খেলোয়াড়ের Steam, Rockstar Games Launcher অথবা Epic Games-এ GTA V-এর বৈধ, licensed copy এবং একটি free Cfx.re account থাকতে হবে। FiveM client সংযোগ করার আগে game ownership যাচাই করে। এটি এড়ানোর কোনো supported উপায় নেই। এই যাচাই এড়ানোর চেষ্টা করে এমন server চালানো Cfx.re-এর অনুমোদিত ব্যবহারের বাইরে।

FiveM server-এর কোন port খোলা থাকতে হবে?

TCP এবং UDP উভয় protocol-এ port 30120 খুলতে হবে। info.json-এর মতো HTTP endpoint এবং resource download TCP ব্যবহার করে। Client-এর game traffic UDP ব্যবহার করে। শুধু TCP খুললে এমন বিভ্রান্তিকর পরিস্থিতি তৈরি হয় যেখানে server browser-এর অনুরোধের উত্তর দেয়, কিন্তু খেলোয়াড়েরা Failed to get info from server দেখতে পায়। txAdmin-এর জন্য TCP 40120 প্রয়োজন। এই port Internet-এর জন্য বন্ধ রাখা উচিত।

port 40120-এ txAdmin reachable রাখা কি নিরাপদ?

না। txAdmin একটি remote console। এটি server restart করে, configuration সম্পাদনা করে এবং command চালায়। তাই exposed panel পুরো game server-এর control plane প্রকাশ করে। কোনো default password নেই। তবে public login page এমন credential attack-এর সুযোগ দেয় যা আপনি দেখতে নাও পারেন। Firewall-এ 40120 বন্ধ রাখুন। ssh -N -L 40120:127.0.0.1:40120 user@server দিয়ে SSH tunnel-এর মাধ্যমে panel-এ প্রবেশ করুন। এরপর http://127.0.0.1:40120-এ browse করুন। TXHOST_INTERFACE দিয়ে txAdmin-কে 127.0.0.1-এ bind করবেন না। কারণ এই setting game server-কেও loopback-এ চালায় এবং কোনো খেলোয়াড় সংযোগ করতে পারবে না।

সংখ্যাযুক্ত build folder নির্দিষ্ট করে রাখুন। Recommended label নিয়মিত নতুন build-এ পরিবর্তিত হয়। তাই recommended build আনার script প্রতিটি rebuild-এ ভিন্ন binary দিতে পারে। এর ফলে গতকাল কাজ করা server আপনার পরিবর্তনের সঙ্গে সম্পর্কহীন কারণে redeploy-এর পরে নষ্ট হতে পারে। আপনি যে build number এবং commit hash পরীক্ষা করেছেন, তা লিখে রাখুন। ইচ্ছাকৃতভাবে upgrade করুন। আগের folder disk-এ রেখে দিন, যাতে systemd unit-এ একটি path সম্পাদনা করেই আগের build-এ ফিরে যেতে পারেন। তবে pin-কে stale হতে দেবেন না। Cfx.re-এর policy অনুযায়ী, 3 মাসের বেশি পুরোনো unsupported artifact server browser থেকে join করা যায় না। তাই support window-এর মধ্যে upgrade করুন।

এই লেখাটি কি কাজে লেগেছে?

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