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

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

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

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

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

তিনটি পূর্বশর্ত অপরিবর্তনীয়। সার্ভারের বাইনারি, যাকে artifacts বলা হয়, তা অফিসিয়াল Cfx.re build listing থেকে সংগ্রহ করতে হয়। licence key পাওয়া যায় portal.cfx.re থেকে, যেটিকে পুরনো গাইডগুলোতে keymaster বলা হতো; এই key-টি যে মেশিনে ব্যবহৃত হবে তার IP address-এর সাথে যুক্ত থাকে। প্রতিটি খেলোয়াড় যারা সার্ভারে যুক্ত হতে চায়, তাদের Steam, Rockstar Games Launcher বা Epic Games-এ GTA V (Grand Theft Auto V)-এর একটি বৈধ কপি এবং একটি ফ্রি Cfx.re অ্যাকাউন্ট থাকতে হবে। ক্লায়েন্ট শুরু হওয়ার সময় গেমের মালিকানা যাচাই করে, তাই অন্য কোনো উপায়ে তৈরি করা সার্ভার কাজ করবে না এবং এখানে কোনো ধরনের workaround বা অবৈধ পদ্ধতি নিয়ে আলোচনা করা হয়নি।

সার্ভার হোস্ট করা এবং সেই মেশিনে গেম খেলা দুটি ভিন্ন বিষয়। একটি VPS-এ গেমটি চালানো সম্ভব কি না তা একটি আলাদা প্রশ্ন এবং এর উত্তরও ভিন্ন।

কেন সিঙ্গেল কোর স্পিড 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 ব্যবহার করা হয়।

একটি নির্দিষ্ট বিল্ডের আর্টিফ্যাক্ট ডাউনলোড করুন

Linux বিল্ডটি Cfx.re আর্টিফ্যাক্ট সার্ভারের build_proot_linux চ্যানেলে থাকে। তালিকাটিতে একটি বিল্ডকে সর্বশেষ প্রস্তাবিত (latest recommended) হিসেবে চিহ্নিত করা হয় এবং প্রতি কয়েক সপ্তাহ অন্তর এই লেবেলটি নতুন বিল্ডে স্থানান্তরিত হয়। এর পরিবর্তে সংখ্যাযুক্ত ফোল্ডারটি পিন করুন। এতে আগামী মাসে সার্ভার রিবিল্ড করলেও আপনি এই মাসে যে বাইনারিটি পরীক্ষা করেছেন সেটিই পাবেন এবং আপগ্রেড করার সিদ্ধান্তটি আপনার নিজের নিয়ন্ত্রণে থাকবে।

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 সালের আগস্ট মাসে তালিকাটি দেখার সময় Build 25770-এ প্রস্তাবিত লেবেলটি ছিল। ব্রাউজারে একই ডিরেক্টরি খুলুন এবং বর্তমান বিল্ডটি দেখুন, তারপর সেই ফোল্ডারের নাম—যা বিল্ড নম্বর এবং একটি কমিট হ্যাশ—URL-এ পেস্ট করুন।

ls এখন run.sh এবং একটি alpine ডিরেক্টরি প্রদর্শন করবে। এই ডিরেক্টরিটিই মূল কৌশল: Linux আর্টিফ্যাক্টটি তার নিজস্ব ছোট Alpine রুট ফাইলসিস্টেম বহন করে এবং proot ব্যবহার করে সার্ভারটি চালু করে। proot হলো একটি ইউজারস্পেস টুল যা রুট প্রিভিলেজ ছাড়াই chroot এমুলেট করে। এই কারণেই একটি ডাউনলোড Ubuntu, Debian এবং Rocky-তে কোনো ডিস্ট্রিবিউশন-নির্দিষ্ট প্যাকেজ ছাড়াই চলতে পারে।

এখন বেস সার্ভার ডেটা ক্লোন করুন, যাতে আপনার server.cfg চালু হওয়ার জন্য প্রয়োজনীয় ডিফল্ট রিসোর্সগুলো থাকে:

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

লাইসেন্স কি (licence key) সংগ্রহ করুন এবং server.cfg ফাইল লিখুন

portal.cfx.re-তে আপনার 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 হলো সার্ভারের স্টেট অ্যাওয়ারনেস মোড এবং এটিই সার্ভারকে বেস গেমের ছোট স্লট সংখ্যার চেয়ে বেশি স্লট ব্যবহারের সুযোগ দেয়। OneSync বন্ধ রেখে 128টি স্লট সেট করলে আপনি 128টি স্লট পাবেন না, বরং এমন একটি কনফিগারেশন পাবেন যা সার্ভার প্রত্যাখ্যান করবে।

sv_licenseKey-এ কোনো উদ্ধৃতি চিহ্ন (quotes) বা শেষে কোনো স্পেস ছাড়া কি-টি বসান। FXServer এই লাইনটিকে হোয়াইটস্পেস অনুযায়ী বিভক্ত করে, তাই একটি বাড়তি অক্ষরও ভ্যালিডেশন নষ্ট করে দেয় এবং সার্ভার চালু হতে অস্বীকার করে।

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 আসার অর্থ হলো এটি পোর্ট বাইন্ড করতে পারেনি, তাই অনুমান না করে কনসোল আউটপুট পড়ুন।

কি ছাড়া কোনো সার্ভার এই বার্তাটি দেখায় এবং বন্ধ হয়ে যায়:

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 সার্ভারের জন্য কোন পোর্টগুলো খোলা রাখা প্রয়োজন?

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 সার্ভারের জন্য কতটুকু CPU এবং RAM প্রয়োজন?

একাধিক ধীরগতির কোরের চেয়ে একটি দ্রুতগতির কোর বেশি গুরুত্বপূর্ণ, কারণ FXServer তার গেম লজিক একটি মাত্র মেইন থ্রেডে চালায়। CPU মডেলের প্রকাশিত সিঙ্গেল থ্রেড স্কোর তুলনা করুন, তারপর sysbench cpu --threads=1 run দিয়ে সার্ভারে নিশ্চিত করুন এবং দেখুন vmstat-এ steal time শূন্যের কাছাকাছি কি না। মেমরির ক্ষেত্রে, বেস Cfx.re সার্ভার ডেটা কয়েকশ মেগাবাইটে চলে, তবে 40-50টি রিসোর্স এবং লোকাল ডেটাবেসসহ একটি রোলপ্লে ফ্রেমওয়ার্ক 8 GB RAM-এ স্বাচ্ছন্দ্যে চলে এবং 4 GB-এর নিচে হিমশিম খায়। এগুলো কমিউনিটির সাধারণ পরিসংখ্যান, তাই এগুলোর ওপর পুরোপুরি নির্ভর না করে পিক আওয়ারে free -m পর্যবেক্ষণ করুন।

আমার FiveM সার্ভারে যোগ দিতে খেলোয়াড়দের কি GTA V কেনা থাকতে হবে?

হ্যাঁ। প্রতিটি খেলোয়াড়ের Steam, Rockstar Games Launcher বা Epic Games-এ GTA V-এর একটি বৈধ এবং লাইসেন্সকৃত কপি থাকতে হবে, সাথে একটি ফ্রি Cfx.re অ্যাকাউন্ট। FiveM ক্লায়েন্ট সংযোগ স্থাপনের আগে গেমের মালিকানা যাচাই করে। এটি এড়িয়ে যাওয়ার কোনো সমর্থিত উপায় নেই এবং এটি এড়িয়ে চলার চেষ্টা করে এমন কোনো সার্ভার চালানো Cfx.re-এর নীতিমালার পরিপন্থী।

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

TCP এবং UDP উভয় প্রোটোকলেই 30120 পোর্টটি খোলা রাখতে হবে। info.json-এর মতো HTTP এন্ডপয়েন্ট এবং রিসোর্স ডাউনলোডের জন্য TCP ব্যবহৃত হয়, আর ক্লায়েন্টের গেম ট্রাফিকের জন্য UDP ব্যবহৃত হয়। শুধুমাত্র TCP খুললে এমন বিভ্রান্তিকর পরিস্থিতি তৈরি হয় যেখানে সার্ভার ব্রাউজারে সাড়া দেয় কিন্তু খেলোয়াড়রা Failed to get info from server দেখতে পায়। txAdmin-এর জন্য TCP 40120 পোর্ট প্রয়োজন, এবং এই পোর্টটি ইন্টারনেটের জন্য বন্ধ রাখা উচিত।

40120 পোর্টে txAdmin খোলা রাখা কি নিরাপদ?

না। txAdmin একটি রিমোট কনসোল যা সার্ভার রিস্টার্ট করতে, কনফিগারেশন এডিট করতে এবং কমান্ড চালাতে পারে, তাই একটি উন্মুক্ত প্যানেল মানে পুরো গেম সার্ভারের নিয়ন্ত্রণ অন্যের হাতে তুলে দেওয়া। এতে ডিফল্ট কোনো পাসওয়ার্ড নেই, কিন্তু একটি পাবলিক লগইন পেজ এমন সব ক্রেডেনশিয়াল অ্যাটাককে আমন্ত্রণ জানায় যা আপনি দেখতে পাবেন না। ফায়ারওয়ালে 40120 পোর্ট বন্ধ রাখুন এবং ssh -N -L 40120:127.0.0.1:40120 user@server ব্যবহার করে SSH টানেলের মাধ্যমে প্যানেলটি অ্যাক্সেস করুন, তারপর http://127.0.0.1:40120-এ ব্রাউজ করুন। txAdmin-কে TXHOST_INTERFACE ব্যবহার করে 127.0.0.1-এ বাইন্ড করবেন না, কারণ এই সেটিংটি গেম সার্ভারকেও লুপব্যাকে পাঠিয়ে দেয় এবং কোনো খেলোয়াড় সার্ভারে সংযোগ করতে পারবে না।

আমার কি একটি নির্দিষ্ট আর্টিফ্যাক্ট বিল্ড ব্যবহার করা উচিত নাকি সবসময় লেটেস্ট রিকমেন্ডেড ভার্সন নেওয়া উচিত?

নম্বরযুক্ত বিল্ড ফোল্ডারটি ব্যবহার করুন। রিকমেন্ডেড লেবেলটি নিয়মিত নতুন বিল্ডে পরিবর্তিত হয়, তাই যে স্ক্রিপ্টটি রিকমেন্ডেড বিল্ড ডাউনলোড করে সেটি প্রতিবার রিবিল্ডের সময় ভিন্ন বাইনারি দিতে পারে। ফলে গতকাল যে সার্ভারটি ঠিকঠাক চলছিল, সেটি আপনার কোনো পরিবর্তন ছাড়াই নতুন করে ডেপ্লয় করার সময় ভেঙে যেতে পারে। আপনি যে বিল্ড নম্বর এবং কমিট হ্যাশ পরীক্ষা করেছেন তা রেকর্ড করে রাখুন, সচেতনভাবে আপগ্রেড করুন এবং আগের ফোল্ডারটি ডিস্কে রেখে দিন যাতে আপনার systemd ইউনিটে একটি পাথ পরিবর্তন করেই আপনি আগের ভার্সনে ফিরে যেতে পারেন।

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