SSD Nodes Learn
নির্দেশিকা Matt Connorদ্বারা Matt Connor · আপডেট করা হয়েছে 2026-07-25

VPS এ Minecraft সার্ভার হোস্ট করার নিয়ম

Ubuntu 24.04 VPS এ Paper Minecraft সার্ভার চালানোর পুরো গাইড। Java 21, systemd unit, port 25565 ফায়ারওয়াল কনফিগ, RAM সাইজিং ও ব্যাকআপ সব এখানে। 1 GB VPS এ চলবে না, কেন জানুন।

আপনি যা তৈরি করছেন

একটি Minecraft Java Edition সার্ভার যা চালু থাকে: Ubuntu 24.04-এ Paper, systemd-এর অধীনে একটি নিবেদিত minecraft ইউজার হিসেবে Restart=on-failure সহ চলবে, whitelist চালু থাকবে, আপনার খেলোয়াড় এবং JVM-এর মধ্যে থাকা উভয় ফায়ারওয়ালে port 25565 খোলা থাকবে, এবং ব্যাকআপ এমনভাবে নেওয়া হবে যা ব্যাকআপের উদ্দেশ্য রক্ষাকৃত ওয়ার্ল্ডটিকে নষ্ট করে না। সার্ভারটি নিজেই একটি jar এবং একটি java কমান্ড; আপনার বন্ধুরা যে সার্ভারে এক বছর ধরে খেলে এবং যে সার্ভারটি প্রথম সপ্তাহান্তেই বন্ধ হয়ে যায়, তাদের মধ্যে পার্থক্য এই কমান্ডের চারপাশের সাজানো ব্যবস্থায় নিহিত, আর এই গাইডটি সেটাই কভার করে।

টাকা খরচ করার আগে দুটি সৎ সতর্কতা। প্রথম, Minecraft মেমরি-নিবিড় এবং অধিকাংশক্ষেত্রে single-threaded: একটি 1 GB VPS দিয়ে খেলার যোগ্য সার্ভার চলবে না, এবং চারটি ধীর কোরের চেয়ে একটি দ্রুত কোর ভালো। দ্বিতীয়, এটি Java Edition। Bedrock খেলোয়াড়রা — কনসোল, ফোন, Windows Bedrock অ্যাপ — একটি Java সার্ভারে যুক্ত হতে পারে না; Bedrock-এর UDP 19132-এ ভিন্ন সার্ভার সফটওয়্যার লাগে, অথবা Geyser প্লাগইন লাগে, যা এই গাইডের আওতার বাইরে।

আপনার একটি নতুন Ubuntu 24.04 KVM VPS দরকার, root বা sudo সহ, এবং প্রায় ত্রিশ মিনিট সময় লাগবে।

সাইজিং: বন্ধুদের সার্ভারে আসলে কী প্রয়োজন

RAM হলো সবচেয়ে গুরুত্বপূর্ণ সংখ্যা, এবং বাস্তব চিত্রটি মডপ্যাক ফোরামের পরামর্শের চেয়ে কম:

  • 2 GB সামান্য ভিউ ডিস্ট্যান্সে 2–5 জন খেলোয়াড়ের জন্য ভ্যানিলা চালায়। খেলা চলবে, তবে কোনো বাড়তি সক্ষমতা থাকবে না।
  • 4 GB হলো বন্ধুদের সার্ভারের আরামদায়ক মাপ: Paper-এ প্রায় দশজন খেলোয়াড় একসাথে খেলতে পারবেন কয়েকটি প্লাগইন সহ, এবং OS-এর জন্যও পর্যাপ্ত জায়গা থাকবে।
  • 8 GB বা তার বেশি মডপ্যাক এবং 20 জনের বেশি খেলোয়াড়ের ক্ষেত্রে প্রযোজ্য, যেখানে আপনার সিঙ্গেল-কোর CPU স্পিডের দিকেও নজর দেওয়া উচিত, কারণ মূল গেম লুপ একটি থ্রেডে চলে।

খেলোয়াড়রা যত এলাকা ঘুরে বেড়াবেন, ডিস্কে ওয়ার্ল্ডের আকারও তত বাড়বে — একটি বেশি ঘোরা সারভাইভাল ওয়ার্ল্ড কয়েক গিগাবাইট পর্যন্ত পৌঁছায় — তাই ওয়ার্ল্ড এবং এর ব্যাকআপের জন্য অতিরিক্ত জায়গা রাখুন।

ভ্যানিলা নাকি Paper? Paper হলো অফিসিয়াল jar-এর সরাসরি বিকল্প: একই ওয়ার্ল্ড, একই ক্লায়েন্ট, কোনো ক্লায়েন্ট-সাইড মড লাগে না। এটি সবচেয়ে ধীর সার্ভার পাথগুলো — চাঙ্ক লোডিং, এনটিটি টিকিং, হপার — নতুন করে লেখে এবং একটি প্লাগইন API যোগ করে। ভ্যানিলা চালানোর একমাত্র কারণ হলো যদি আপনার হুবহু ভ্যানিলা মেকানিক্স দরকার হয় এমন টেকনিক্যাল রেডস্টোন ফার্মের জন্য, যা Paper-এর অপ্টিমাইজেশন পরিবর্তন করতে পারে; অন্য সবার জন্য, Paper প্রতি গিগাবাইটে বেশি খেলোয়াড় ধরে। নিচের সবকিছু উভয়ের জন্যই প্রযোজ্য।

ধাপ 1: Java 21 ইনস্টল করুন

Minecraft 1.20.5 এবং এর পরবর্তী সব রিলিজ (সম্পূর্ণ 1.21.x) Java 21 প্রয়োজন। Ubuntu 24.04-এ এটি ডিফল্ট রিপোজিটরিতে রয়েছে। headless বিল্ডটি এড়িয়ে যায় সেই ডেস্কটপ লাইব্রেরিগুলো যা একটি সার্ভার কখনো ব্যবহার করবে না:

sudo apt update && sudo apt install -y openjdk-21-jre-headless
java -version

সঠিক ফলাফল: প্রথম লাইনে লেখা থাকবে openjdk version "21.0.x"। যদি সেখানে 17 বা 11 লেখা থাকে, তার মানে অন্য একটি JRE ইনস্টল হয়েছে এবং সেটিই প্রাধান্য পাচ্ছে। sudo update-alternatives --config java দিয়ে এটি ঠিক করুন এবং java-21 সম্বলিত এন্ট্রিটি নির্বাচন করুন।

এই যাচাই এড়িয়ে গেলে পরে সবচেয়ে বেশি গুগলে খোঁজা Minecraft সার্ভার ত্রুটিটি দেখা দেবে। Java 17 দিয়ে সার্ভার jar তাৎক্ষণিকভাবে বন্ধ হয়ে যাবে এই ত্রুটির সাথে:

Error: LinkageError occurred while loading main class net.minecraft.bundler.Main
	java.lang.UnsupportedClassVersionError: net/minecraft/bundler/Main has been
	compiled by a more recent version of the Java Runtime (class file version 65.0),
	this version of the Java Runtime only recognizes class file versions up to 61.0

এই সংখ্যাগুলো ভার্সনের অমিল নির্দেশ করে: class file version 65.0 হলো Java 21, 61.0 হলো Java 17, 60.0 হলো Java 16। আপনি যে জোড়াই দেখুন না কেন, সমাধান একই — নতুন JRE ইনস্টল করুন এবং update-alternatives পুনরায় চালান।

ধাপ 2: একটি নিবেদিত ব্যবহারকারী, কখনো root নয়

সার্ভার প্লাগইন কোড চালায় এবং যে কেউ পোর্টে পৌঁছাতে পারলে তার নেটওয়ার্ক ইনপুট পার্স করে। এতে কোনো সমস্যা হলে, root হিসেবে চলা একটি আক্রমণ আপনার পুরো VPS নিয়ন্ত্রণ করে নেয়; minecraft হিসেবে চলা একটি আক্রমণ শুধু একটি গেম ওয়ার্ল্ড নিয়ন্ত্রণ করে।

sudo adduser --system --group --home /opt/minecraft minecraft

--system একটি পাসওয়ার্ডহীন অ্যাকাউন্ট তৈরি করে যা SSH-এ লগইন করতে পারে না, এর হোম এবং ওয়ার্কিং ডিরেক্টরি হলো /opt/minecraft। এখান থেকে সার্ভারে সংশ্লিষ্ট প্রতিটি কমান্ড এই ব্যবহারকারী হিসেবে চলবে।

ধাপ 3: অফিশিয়াল উৎস থেকে server jar ডাউনলোড করুন

আপনাকে server jar কেবল দুটি জায়গা থেকেই নেওয়া উচিত: vanilla-এর জন্য minecraft.net-এর অফিশিয়াল সার্ভার ডাউনলোড পেজ, আর Paper-এর জন্য papermc.io-এর ডাউনলোড পেজ। থার্ড-পার্টি "ডাউনলোড হাব" যারা server jar পুনরায় প্যাকেজ করে, তারা দীর্ঘদিন ধরে ম্যালওয়্যার ছড়ানোর মাধ্যম — কারণ একটি server jar হলো এমন একটি কোড যা আপনি ইন্টারনেট-সংযুক্ত একটি মেশিনে 24/7 চালাতে চলেছেন।

অফিশিয়াল পেজ থেকে বর্তমান বিল্ডের ডাউনলোড লিঙ্কটি কপি করুন (প্রতিটি ভার্সন এবং বিল্ডের সাথে URL পরিবর্তিত হয়, তাই এখানে একটি নির্দিষ্ট লিঙ্ক দিলে তা পুরোনো হয়ে যাবে), এরপর:

cd /opt/minecraft
sudo -u minecraft wget -O server.jar 'PASTE-THE-COPIED-URL-HERE'

সঠিক ফলাফল: minecraft-এর মালিকানাধীন প্রায় 50 MB আকারের একটি server.jar, যা ls -lh /opt/minecraft/server.jar দিয়ে যাচাই করা হবে।

ধাপ 4: প্রথম চালানো, EULA, এবং নিজেকে op করা

systemd নিয়ে কাজ করার আগে একবার ইন্টারঅ্যাক্টিভভাবে সার্ভার চালান — প্রথম চালানোর দুটি কাজ শুধু একটি লাইভ কনসোলেই ভালোভাবে সম্পন্ন হয়।

cd /opt/minecraft
sudo -u minecraft java -Xms1G -Xmx1G -jar server.jar nogui

এটি কয়েক সেকেন্ডের মধ্যে বন্ধ হয়ে যায় — Paper প্রথমে তার প্যাচগুলো প্রয়োগ করতে কিছু সময় নেয় — এবং লগটি সেই লাইনে শেষ হয় যা সবাই দেখে:

[ServerMain/INFO]: You need to agree to the EULA in order to run the server. Go to eula.txt for more info.

এটি কোনো ত্রুটি নয়; এটি একটি লাইসেন্স গেট। এই চালানো jar-এর পাশে eula.txt লিখেছে। আপনি যদি সংযুক্ত EULA পড়ে না থাকেন, তবে পড়ে নিন, তারপর ফ্ল্যাগটি পরিবর্তন করুন:

sudo -u minecraft sed -i 's/eula=false/eula=true/' /opt/minecraft/eula.txt

একই java কমান্ড আবার চালান। এবার এটি ওয়ার্ল্ড তৈরি করে — প্রথম বুটে এক বা দুই মিনিট সময় লাগে — এবং এখানে এসে স্থির হয়:

[Server thread/INFO]: Done (9.204s)! For help, type "help"

আপনার এখন একটি লাইভ কনসোল আছে। দ্বিতীয় কাজের জন্য এটি ব্যবহার করুন: op YourMinecraftName (আপনার সঠিক in-game ইউজারনেম) টাইপ করুন এবং সার্ভার আপনাকে ops.json-এ লিখে দেয়, যাতে পরে — যখন কোনো কনসোল যুক্ত থাকবে না — আপনি গেমের ভেতর থেকে প্রতিটি অ্যাডমিন কমান্ড চালাতে পারেন। তারপর পরিষ্কারভাবে সেভ করে বের হতে stop টাইপ করুন।

ধাপ 5: server.properties, এবং কেন online-mode সত্য থাকে

প্রথম রানটি server.properties ফাইলটিও তৈরি করেছে। বেশিরভাগ ডিফল্ট মান ঠিক আছে; শুধুমাত্র এই লাইনগুলো নিয়ে সচেতনভাবে সিদ্ধান্ত নেওয়া উচিত:

online-mode=true
white-list=true
enforce-whitelist=true
view-distance=8
max-players=10
motd=A private server for people I actually know

online-mode=true সার্ভারকে প্রতিটি যুক্ত হওয়া ইউজারনেম Mojang-এর সেশন সার্ভারে যাচাই করতে বাধ্য করে, যাতে প্রমাণিত হয় যে খেলোয়াড়টি অ্যাকাউন্টের প্রকৃত মালিক। এটি false এ সেট করলে — যা "cracked server" টগল — সার্ভার যেকোনো ক্লায়েন্টের পরিচয় নিজ দায়িত্বে মেনে নেয়: যে কেউ যেকোনো নামে যুক্ত হতে পারে, আপনার নাম সহ, এবং যেহেতু op এবং whitelist নামের ভিত্তিতে কাজ করে, তাই কেউ আপনার নাম ধারণ করে আপনার অপারেটর অনুমতি নিয়ে ঢুকে পড়তে পারে। এটি মিথ্যা রাখার একমাত্র বৈধ কারণ হলো Velocity-এর মতো একটি প্রমাণীকরণ প্রক্সির পেছনে ব্যবহার, যা নিজে খেলোয়াড়দের যাচাই করে। একটি সাধারণ সার্ভারে এটি সত্য থাকবে, কোনো ছাড় নেই।

view-distance ফাইলের সবচেয়ে বড় পারফরম্যান্স নিয়ন্ত্রক — CPU এবং RAM খরচ এর বর্গের সাথে তুলনামূলকভাবে বাড়ে। 8 একটি যৌক্তিক VPS ডিফল্ট; 10 হলো vanilla ডিফল্ট এবং এটি লক্ষণীয়ভাবে বেশি ভারী।

white-list=true এবং enforce-whitelist=true অপরিচিতদের জন্য সার্ভার বন্ধ করে দেয়, যা নিচের নিরাপত্তা বিভাগে ব্যাখ্যা করা হয়েছে যে এটি কোনো ঐচ্ছিক বিষয় নয়। একজন op হিসেবে খেলোয়াড়দের গেমের ভেতরে /whitelist add TheirName কমান্ড দিয়ে যোগ করুন।

ধাপ 6: মেমরি ফ্ল্যাগ — কেন -Xms এবং -Xmx একই হওয়া উচিত

JVM তার হিপ -Xms (শুরুর আকার) এবং -Xmx (সর্বোচ্চ সীমা) এর মধ্যে বরাদ্দ করে। একটি নিবেদিত গেম সার্ভারে, এগুলো একই মানে সেট করুন: হিপ যাইহোক সর্বোচ্চ সীমায় পৌঁছাবে, এবং ধাপে ধাপে এটি বাড়ালে খেলার সময় কেবল গারবেজ-কালেক্টরের অতিরিক্ত কাজ বাড়ে। একটি 4 GB VPS-এ সঠিক জোড়া হলো:

/usr/bin/java -Xms3G -Xmx3G -jar server.jar nogui

-Xmx প্রসেস যে মোট মেমরি ব্যবহার করে তা নয়। JVM হিপের বাইরের ওভারহেড যোগ করে — থ্রেড স্ট্যাক, JIT ক্যাশে, ডাইরেক্ট বাফার — প্রায় অর্ধ গিগাবাইট বা তার বেশি, এবং Ubuntu নিজেও জায়গা প্রয়োজন। কার্যকর নিয়ম: -Xmx সর্বোচ্চ VPS RAM থেকে 1 GB কম। এর চেয়ে বেশি দিলে আপনি দুটি ব্যর্থতার একটি পাবেন। যদি শুরুতেই বরাদ্দ ব্যর্থ হয়, সার্ভার চালু হতে অস্বীকার করে এই বার্তা সহ:

Error: Could not reserve enough space for object heap

এটি সরাসরি এবং তাৎক্ষণিক। আরও ক্ষতিকারক সংস্করণটি ঠিকঠাক শুরু হয় এবং কয়েক ঘণ্টা পরে বন্ধ হয়ে যায়, যখন লোডের অধীনে হিপ পূর্ণ হয় এবং কার্নেলের OOM killer বক্সের সবচেয়ে বড় প্রসেসটি বেছে নেয় — JVM। সার্ভার লগে কিছুই দেখা যায় না; প্রমাণ পাওয়া যায় sudo dmesg | grep -i oom এ, Out of memory: Killed process 1234 (java) এর মতো একটি লাইন। আপনার পরিষেবা "এলোমেলোভাবে" পুনরায় চালু হলে, প্রথমে সেখানে দেখুন, এবং -Xmx কমান।

Paper-এর জন্য, প্রকল্পটি Aikar's flags নথিভুক্ত করে — একটি টিউন করা G1GC সেট (-XX:+UseG1GC -XX:MaxGCPauseMillis=200 এবং আরও এক ডজন) যা বড় হিপে গারবেজ-কালেকশন বিরতি কমায়। Paper ডকুমেন্টেশন থেকে সম্পূর্ণ লাইনটি তৈরি করুন; 2–4 GB হিপে লাভ সামান্য কিন্তু ফ্ল্যাগগুলো ক্ষতিকর নয়।

ধাপ 7: Restart=on-failure সহ একটি systemd unit

ম্যানুয়ালি শুরু করা একটি সার্ভার আপনার SSH সেশনের সাথে বন্ধ হয়ে যায় এবং রিবুটের পরেও বন্ধ থাকে। /etc/systemd/system/minecraft.service লিখুন:

[Unit]
Description=Minecraft server (Paper)
After=network-online.target
Wants=network-online.target

[Service]
User=minecraft
Group=minecraft
WorkingDirectory=/opt/minecraft
ExecStart=/usr/bin/java -Xms3G -Xmx3G -jar server.jar nogui
Restart=on-failure
RestartSec=10
TimeoutStopSec=120

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now minecraft
systemctl status minecraft
journalctl -u minecraft -f

সঠিক ফলাফল: status দেখায় active (running), এবং জার্নাল — যেখানে এখন সার্ভার কনসোলের আউটপুট সংরক্ষিত থাকে — আবার Done লাইনে শেষ হয়।

এই unit-এ দুটি ইচ্ছাকৃত পছন্দ রয়েছে। Restart=on-failure ক্র্যাশের পরে সার্ভারকে ফিরিয়ে আনে কিন্তু একটি পরিষ্কার stop-এর পরে নয়, যাতে রক্ষণাবেক্ষণ সম্ভব থাকে। আর TimeoutStopSec=120 দেখে মনে হয় তার চেয়ে বেশি গুরুত্বপূর্ণ: systemctl stop SIGTERM পাঠায়, Minecraft সার্ভার এটি গ্রহণ করে এবং প্রস্থানের আগে প্রতিটি ওয়ার্ল্ড সংরক্ষণ করে, এবং বড় ওয়ার্ল্ডে সেই সংরক্ষণে সময় লাগে। Systemd-এর ডিফল্ট টাইমআউট সংরক্ষণের মাঝখানে JVM-কে SIGKILL করতে পারে, যা ঠিক এভাবেই region ফাইলগুলি নষ্ট হয়। এটি দুই মিনিট সময় দিন।

সার্ভিসটি যদি বারবার চালু ও বন্ধ হয় এবং জার্নালে যদি দেখা যায়:

[Server thread/WARN]: **** FAILED TO BIND TO PORT!
[Server thread/WARN]: The exception was: io.netty.channel.unix.Errors$NativeIoException: bind(..) failed: Address already in use
[Server thread/WARN]: Perhaps a server is already running on that port?

তাহলে 25565 পোর্ট ইতিমধ্যেই অন্য কিছু দখল করে আছে — প্রায়শই এটি আপনার আগের ফোরগ্রাউন্ড চালু করা সার্ভার, যা অন্য একটি SSH সেশনে এখনও চলছে। sudo ss -tlnp | grep 25565 দিয়ে এটি খুঁজে বের করুন এবং সেই কপিটি বন্ধ করুন; একই পোর্টে কখনো দুটি সার্ভার চালাবেন না।

ধাপ 8: উভয় ফায়ারওয়ালে 25565 খুলুন

Minecraft Java শুধুমাত্র TCP 25565 ব্যবহার করে (UDP হলো কেবল একটি ঐচ্ছিক কোয়েরি প্রোটোকল, যা ডিফল্টভাবে বন্ধ থাকে)। VPS-এ:

sudo ufw allow OpenSSH
sudo ufw allow 25565/tcp
sudo ufw enable

এটি প্রথম ফায়ারওয়াল। বেশিরভাগ VPS প্রোভাইডার তাদের কন্ট্রোল প্যানেলে দ্বিতীয় একটি নেটওয়ার্ক-লেভেল ফায়ারওয়াল চালায়, এবং এটিই মানুষ ভুলে যায়। সেখানেও TCP 25565 খুলুন। এই দুটির মধ্যে যেকোনো একটি বন্ধ থাকলে যে লক্ষণ দেখা যায় তা অত্যন্ত অস্পষ্ট: ক্লায়েন্ট "Connecting to the server..."-এ আটকে যায় এবং Connection timed out: no further information ত্রুটির সাথে ব্যর্থ হয় — কোনো প্রত্যাখ্যান নেই, কোনো সার্ভার ত্রুটি নেই, জার্নালে কিছু নেই, কারণ প্যাকেটগুলো কখনোই পৌঁছায়নি। VPS-এর বাইরের একটি মেশিন থেকে nc -vz your.server.ip 25565 দিয়ে যাচাই করুন; succeeded মানে উভয় ফায়ারওয়ালই খোলা, আটকে যাওয়া মানে অন্তত একটি বন্ধ আছে।

আপনি ufw-এ যতক্ষণ আছেন, একই মেশিনটি একটি পাবলিক IP-এ SSH চালাচ্ছে, এবং ব্রুট-ফোর্স লগের শব্দ কয়েক ঘণ্টার মধ্যেই শুরু হয়ে যাবে — ভুলে যাওয়ার আগেই Ubuntu 24.04-এ SSH-এর জন্য Fail2ban সেট আপ করুন

এখন সংযুক্ত হোন: Multiplayer, Direct Connection, সার্ভারের IP। যেহেতু আপনি ধাপ 4-এ নিজেকে op করেছেন, ইন-গেম কমান্ডগুলো অবিলম্বে কাজ করবে — প্রতিটি প্লেয়ারের জন্য /whitelist add FriendName, এবং যদি সেটাই পরিকল্পনা হয় তবে /gamemode creative

ধাপ 9: whitelist সক্রিয় করুন, কারণ ইন্টারনেট port 25565 খুঁজে পায়

Minecraft সার্ভারকে ইন্টারনেটের জন্য উন্মুক্ত রাখা কোনো তাত্ত্বিক ঝুঁকি নয়: গণ স্ক্যানার অবিরতভাবে সম্পূর্ণ IPv4 স্পেসে port 25565 অনুসন্ধান করে — শখের griefing প্রকল্পগুলো এই পদ্ধতিতে কয়েক লক্ষ উন্মুক্ত সার্ভার ম্যাপ করেছে — এবং whitelist ছাড়া একটি সার্ভারে কয়েক দিনের মধ্যে, কখনো কয়েক ঘণ্টার মধ্যেই অনামন্ত্রিত দর্শক প্রবেশ করে। ধাপ 5 এর whitelist এটির সমাধান: online-mode=true পরিচয় প্রমাণ করে, whitelist আপনার নির্বাচিত পরিচয়গুলোতে প্রবেশ সীমাবদ্ধ রাখে। এই জুটিই সম্পূর্ণ নিরাপত্তা মডেল, এবং বন্ধুদের জন্য একটি সার্ভারে এটি যথেষ্ট।

খেলা ছাড়া কনসোল অ্যাক্সেসের জন্য — স্ক্রিপ্টেড ব্যাকআপ, একটি cron job — server.properties এ RCON সক্রিয় করুন (enable-rcon=true, একটি শক্তিশালী rcon.password, port 25575) এবং VPS-এ নিজেই এর GitHub সোর্স থেকে ছোট mcrcon ক্লায়েন্ট তৈরি করুন; এটি Ubuntu-এর রেপোজিটরিতে নেই। কোনো ফায়ারওয়ালে 25575 খুলবেন না: RCON পাসওয়ার্ড ক্লিয়ারটেক্সটে পাঠায়, তাই এটি শুধুমাত্র loopback-এ সীমাবদ্ধ থাকে।

ধাপ 10: এমন ব্যাকআপ যা ওয়ার্ল্ড নষ্ট করে না

একটিমাত্র নিয়ম: সার্ভার লেখার সময় কখনোই ওয়ার্ল্ড ডিরেক্টরি কপি করবেন না। খেলার সময় রিজিন ফাইল ক্রমাগত পুনরায় লেখা হয়; একটি tar যদি লেখার সাথে প্রতিযোগিতা করে, তবে এটি অর্ধেক লেখা চাঙ্ক সহ একটি আর্কাইভ তৈরি করে। আপনি যখন এটি পুনরুদ্ধার করবেন — ঠিক সেই মুহূর্তে যখন একটি ব্যাকআপ কাজ করতেই হবে — লগ চাঙ্ক-লোডিং ত্রুটিতে ভরে যায় এবং ভূখণ্ডে গর্ত দেখা দেয়। দুটি পদ্ধতি এটি এড়ায়।

Stop-copy-start হলো সহজ পদ্ধতি, এর খরচ মাত্র এক মিনিট ডাউনটাইম:

sudo systemctl stop minecraft
sudo mkdir -p /opt/backups
sudo tar czf /opt/backups/world-$(date +%F-%H%M).tgz \
  -C /opt/minecraft world world_nether world_the_end
sudo systemctl start minecraft

(Paper ডাইমেনশনগুলোকে world, world_nether, এবং world_the_end-এ ভাগ করে; একটি vanilla সার্ভার সবকিছু world-এ রাখে, তাই সেখানে অন্য দুটি বাদ দিন।)

Save-off চালু অবস্থায় ব্যাকআপ নেয়: RCON-এর মাধ্যমে save-off দিন (অটোসেভার বন্ধ করতে), তারপর save-all flush দিন (সবকিছু ডিস্কে লিখে অপেক্ষা করতে), tar নিন, তারপর save-on দিন। এটি সেই সংস্করণ যা আপনি ভোর 5টায় cron-এ রাখবেন।

যেকোনো উপায়েই, সার্ভারের একই VPS-এ থাকা একটি ব্যাকআপ কোনো ব্যাকআপ নয় — আর্কাইভগুলো বক্সের বাইরে scp বা rclone করুন, এবং একাধিক কপি রাখুন। এবং যেহেতু কিছু নষ্ট হলে আপনি কনসোলে তাকিয়ে থাকবেন না, তাই পোর্টে একটি বাহ্যিক পরীক্ষা রাখুন: অন্য একটি বক্সে Uptime Kuma 25565-এর বিরুদ্ধে TCP পরীক্ষা চালায়, যা আপনার খেলোয়াড়দের আগেই জানিয়ে দেয় সার্ভার ডাউন হয়েছে।

প্লাগইন এবং আপগ্রেড

Paper-এ একটি প্লাগইন হলো একটি jar ফাইল যা /opt/minecraft/plugins/-এ রেখে সার্ভার রিস্টার্ট করতে হয় — এটাই পুরো ইনস্টল প্রক্রিয়া। প্লাগইন কেবল তাদের অফিসিয়াল প্রজেক্ট পেজ (Hangar, Modrinth, SpigotMC) থেকে সংগ্রহ করুন, সার্ভার jar-এর ক্ষেত্রে যে কারণ বলা হয়েছে সেই একই কারণে: প্রতিটি প্লাগইন হলো এমন কোনো কোড যা minecraft ইউজার হিসেবে চলে।

সার্ভার আপগ্রেড করার পদ্ধতি হলো: সার্ভার বন্ধ করুন, ব্যাকআপ নিন, নতুন Minecraft ভার্সনের জন্য প্রস্তুত করা বিল্ড দিয়ে server.jar প্রতিস্থাপন করুন, সার্ভার চালু করুন। দুটি সতর্কতা। ওয়ার্ল্ড আপগ্রেড একমুখী — নতুন ভার্সন দিয়ে খোলা একটি ওয়ার্ল্ড পুরোনো ভার্সনে আর খোলা যাবে না, যা ব্যাকআপের আরেকটি ব্যবহার। আর প্লাগইনগুলো প্রায়শই একটি নতুন Minecraft রিলিজের কয়েক দিন বা কয়েক সপ্তাহ পিছিয়ে থাকে, তাই প্রথম দিনেই কোনো রিলিজ ধরার আগে সামঞ্জস্যতা যাচাই করে নিন।

আপনি যদি এই সবকিছু একটি কন্টেইনার হিসেবে পরিচালনা করতে চান — ভার্সন পিন করা, EULA গ্রহণ এবং মেমরি ফ্ল্যাগগুলো এনভায়রনমেন্ট ভেরিয়েবল হিসেবে — তাহলে বহুল ব্যবহৃত itzg/minecraft-server ইমেজটি আপনার VPS-এ Docker Compose-এ আপনার VPS এর অধীনে একই Paper সার্ভার চালায়, অভিন্ন ফায়ারওয়াল এবং ব্যাকআপ নিয়ম মেনে।

FAQ

একটি Minecraft সার্ভারে কত RAM প্রয়োজন?

2 GB RAM 2–5 জন খেলোয়াড়ের জন্য vanilla চালায়; 4 GB RAM কয়েকটি প্লাগইন সহ Paper-এ প্রায় দশজন বন্ধুর সার্ভারের জন্য যথেষ্ট; modpack এবং 20-এর বেশি খেলোয়াড়ের জন্য 8 GB বা তার বেশি দরকার। VPS-এর আকার যাই হোক না কেন, -Xmx সর্বোচ্চ মোট RAM থেকে 1 GB কম রাখুন — JVM হিপের বাইরেও মেমরি ব্যবহার করে, এবং সীমা ছাড়িয়ে গেলে Error: Could not reserve enough space for object heap বা নীরব OOM kill ঘটে।

আমার বন্ধুরা আমার Minecraft সার্ভারে কেন সংযোগ করতে পারছে না?

Connection timed out: no further information এ শেষ হওয়া ক্লায়েন্ট হ্যাং প্রায় সবসময় ফায়ারওয়ালের সমস্যা নির্দেশ করে, এবং এটি দুটি জায়গায় থাকে: VPS-এ ufw এবং কন্ট্রোল প্যানেলে আপনার প্রোভাইডারের নেটওয়ার্ক ফায়ারওয়াল। TCP 25565 অবশ্যই উভয় স্থানে খোলা থাকতে হবে। সার্ভার আসলেই শুনছে কিনা বক্সে sudo ss -tlnp | grep 25565 দিয়ে নিশ্চিত করুন, তারপর বাইরে থেকে nc -vz your.server.ip 25565 দিয়ে পরীক্ষা করুন।

আমার কি server.properties-এ online-mode=false সেট করা উচিত?

না। online-mode=false থাকলে সার্ভার Mojang অথেনটিকেশন সম্পূর্ণ এড়িয়ে যায়, ফলে যে কেউ যেকোনো ব্যবহারকারীর নামে যুক্ত হতে পারে — এমনকি একজন op-এর নাম ব্যবহার করে তাদের অনুমতি পেতে পারে — এবং স্কিন ও স্থিতিশীল UUID নষ্ট হয়ে যায়। একমাত্র বৈধ ব্যবহার হলো Velocity-এর মতো একটি অথেনটিকেটিং প্রক্সির পেছনে, যা নিজে খেলোয়াড়দের যাচাই করে। একটি সাধারণ সার্ভারের জন্য এটি true থাকে।

Paper কি vanilla Minecraft সার্ভারের চেয়ে ভালো?

প্রায় সবার জন্য, হ্যাঁ: Paper একটি drop-in jar যা vanilla ওয়ার্ল্ড লোড করে, অপরিবর্তিত ক্লায়েন্ট গ্রহণ করে, entity এবং chunk অনেক বেশি দক্ষতায় টিক ও লোড করে, এবং প্লাগইন ইকোসিস্টেম যোগ করে। ব্যতিক্রম হলো technical-redstone কমিউনিটি, যাদের bit-exact vanilla আচরণ প্রয়োজন, যা Paper-এর কিছু অপ্টিমাইজেশন পরিবর্তন করে। একটি ছোট VPS-এ, Paper-এর দক্ষতা কার্যত বিনামূল্যে অতিরিক্ত RAM।

আমি কীভাবে একটি Minecraft ওয়ার্ল্ড নষ্ট না করে ব্যাকআপ করব?

সার্ভার ওয়ার্ল্ডে লেখার সময় ওয়ার্ল্ড ডিরেক্টরি আর্কাইভ করবেন না — একটি region-file লেখার সময় কপি করলে দূষিত chunk তৈরি হয় যা আপনি শুধু রিস্টোর করার সময় আবিষ্কার করবেন। হয় সার্ভার বন্ধ করুন, ওয়ার্ল্ড ডিরেক্টরিগুলি tar করুন, এবং আবার চালু করুন, অথবা save-off, save-all flush, tar, save-on দিয়ে RCON-এর মাধ্যমে এটি চালু রাখুন। তারপর আর্কাইভটি VPS থেকে সরিয়ে ফেলুন।

#minecraft#game-server#java#ubuntu#self-hosting