এটি আমাদের একটি game server-এর জন্য VPS পেজের হাতে-কলমে সঙ্গী। ওটা কোন প্ল্যান মানায় তা নিয়ে; এটি আসলে সার্ভারটি দাঁড় করানো নিয়ে — Paper, একটি সঠিক systemd সার্ভিস, যে config আপনার RAM বাঁচায়, firewall, ও backup। শেষে আপনার একটি Minecraft সার্ভার হবে যা একটি ক্র্যাশ টেকায়, একটি reboot টেকায়, ও নীরবে আপনার পুরো বক্স খায় না।
শুরুর আগে একটি সৎ নোট: use-case পেজের CPU ও RAM সীমা তবুও প্রযোজ্য। একটি Small বা Medium প্ল্যানে Paper একটি বন্ধু-দলের জন্য দারুণ। একটি বড় কমিউনিটির জন্য একটি 150-mod প্যাক এই প্ল্যান যার জন্য নয়, আর কোনো পরিমাণ config তা ঠিক করে না। এটি পরিষ্কার হলে, চলুন বানাই।
1. Java ইনস্টল করুন
Paper Java-তে চলে। একটি headless JDK ইনস্টল করুন — একটি বর্তমান Minecraft সংস্করণের জন্য সেটি Java 21:
sudo apt update
sudo apt install -y openjdk-21-jre-headless
java -version
আপনার Minecraft সংস্করণ পুরনো হলে, এটি যে Java চায় তা ইনস্টল করুন (1.18-1.20 যুগের জন্য 17)। সংস্করণ ভুল হলে সার্ভার log জোরে নালিশ করবে।
2. সার্ভার directory ও Paper সেট করুন
root নয়, সার্ভারকে নিজের ব্যবহারকারী হিসেবে চালান — কখনও কিছু ভুল হলে, আপনি blast radius ছোট চান।
sudo adduser --system --group --home /opt/minecraft minecraft
sudo -u minecraft mkdir -p /opt/minecraft/server
cd /opt/minecraft/server
আপনার Minecraft সংস্করণের জন্য Paper jar ডাউনলোড করুন (তাদের downloads পেজ থেকে URL নিন) ও এটিকে server.jar হিসেবে সংরক্ষণ করুন:
sudo -u minecraft wget -O server.jar "PASTE_PAPER_DOWNLOAD_URL_HERE"
config ফাইল তৈরি করতে এটি একবার চালান, তারপর EULA গ্রহণ করুন:
sudo -u minecraft java -Xms1G -Xmx3G -jar server.jar --nogui
# এটি সাথে সাথে থামে ও আপনাকে EULA গ্রহণ করতে বলে
sudo -u minecraft sed -i 's/eula=false/eula=true/' eula.txt
-Xmx3G হলো JVM heap-এর সীমা। একটি 4 GB Small প্ল্যানে, JVM-এর জন্য ~3 GB OS-কে শ্বাস নেওয়ার জায়গা দেয়। এটিকে আপনার পুরো RAM-এ সেট করবেন না — JVM-এর heap-এর বাইরে overhead আছে, আর OOM killer আলোচনা করে না।
3. RAM বাঁচাতে server.properties tune করুন
এখানেই আপনি নিজেকে বিনামূল্যে পারফরম্যান্স কেনেন। server.properties খুলুন ও সেট করুন:
view-distance=8
simulation-distance=6
max-players=10
view-distance— প্রতিটি প্লেয়ারের চারপাশে load রাখা chunk। ডিফল্ট 10 উদার; 8 (বা এমনকি 6) RAM ও CPU লক্ষণীয়ভাবে কমায় আর প্রায় কেউ পার্থক্য টের পায় না।simulation-distance— entity, redstone, ও ফসল-বৃদ্ধি আসলে কতদূর tick করে। কম সস্তা। 6 একটি বিবেচ্য শুরুর বিন্দু।max-players— আপনি আসলে যা আশা করেন তা সেট করুন, যাতে একটি অপ্রত্যাশিত ভিড় আপনার RAM budget উড়িয়ে না দেয়।
single-thread বাস্তবতা মনে রাখুন: Minecraft-এর tick একটি core-এ ভর করে। TPS পড়লে, বেশি RAM সাহায্য করবে না — simulation-distance ও mob cap কমান।
4. এটিকে একটি systemd সার্ভিস হিসেবে চালান
এই অংশটাই "একটি jar যা আমি একবার চালিয়েছি"-কে "একটি সার্ভার"-এ পরিণত করে। /etc/systemd/system/minecraft.service তৈরি করুন:
[Unit]
Description=Minecraft Paper Server
After=network.target
[Service]
User=minecraft
Group=minecraft
WorkingDirectory=/opt/minecraft/server
ExecStart=/usr/bin/java -Xms1G -Xmx3G -jar server.jar --nogui
Restart=on-failure
RestartSec=10
SuccessExitStatus=0 143
[Install]
WantedBy=multi-user.target
Restart=on-failure সেই লাইন যা গুরুত্বপূর্ণ — JVM ক্র্যাশ করলে, systemd এটিকে দশ সেকেন্ডে ফিরিয়ে আনে। SuccessExitStatus=... 143 systemd-কে একটি স্বাভাবিক SIGTERM shutdown-কে একটি failure হিসেবে গণ্য করা থেকে থামায়। এটি enable ও start করুন:
sudo systemctl daemon-reload
sudo systemctl enable --now minecraft
sudo systemctl status minecraft
sudo journalctl -u minecraft -f # live log
এখন এটি boot-এ শুরু হয়, ক্র্যাশে restart হয়, ও log journald-তে যায়।
5. firewall পোর্ট খুলুন
Minecraft ডিফল্টে TCP 25565-এ listen করে। শুধু সেটি খুলুন:
sudo ufw allow 25565/tcp
sudo ufw enable
আপনার বন্ধুদের সার্ভারের IP দিন (আর পোর্ট বদলালে :25565)। যা লাগে না তা খুলবেন না — নিজের বক্স চালানোর পুরো উদ্দেশ্য যে আপনি ঠিক করেন কী পৌঁছানোযোগ্য।
6. world backup করুন
যেটা মানুষ এড়িয়ে যায় যতদিন না তারা আফসোস করে। একটি সরল script:
#!/bin/bash
cd /opt/minecraft/server
TS=$(date +%Y%m%d-%H%M)
tar czf /opt/minecraft/backups/world-$TS.tar.gz world world_nether world_the_end
এটি cron থেকে চালান, আর — এটাই গুরুত্বপূর্ণ অর্ধেক — আর্কাইভটি সার্ভার থেকে সরিয়ে কপি করুন, object storage বা অন্য মেশিনে। world-এর একই ডিস্কে একটি backup ডিস্কের সাথে মরে। আপনার world গুরুত্বপূর্ণ হলে, tar-এর আগে সার্ভার console-এ save-off ও save-all চালান যাতে আপনি কখনও একটি লেখার মাঝপথে snapshot না করেন।
এটাই পুরো ব্যাপার
Java, Paper, tune-করা config, একটি systemd সার্ভিস যা auto-restart করে, একটি firewall পোর্ট, ও backup যা অন্য কোথাও থাকে। এটাই একটি Minecraft সার্ভার যা একটির মতো আচরণ করে।
আপনার এখনও একটি বক্স না-থাকলে: একটি প্ল্যান বাছুন — একটি ছোট দলের জন্য Small ($8), দশজন প্লেয়ার ঠেলছেন হলে Medium ($12) — USDC বা USDT-তে পরিশোধ করুন (no KYC, কোনো নথি নয়), আর প্রায় 60 সেকেন্ডে root পাবেন। তারপর এই পেজ ধরে নামুন। আর শেষবার সৎ স্মরণ: এটি বন্ধুদের সাথে vanilla বা Paper-এর সঠিক সেটআপ। একটি বড় কমিউনিটির জন্য একটি ভারী modpack-এর ভিন্ন হার্ডওয়্যার দরকার, আর আমরা তা আপনাকে আগে আমাদের থেকে শোনাই ভালো মনে করি।
মন্তব্য
এখনো কোনো মন্তব্য নেই। প্রথম হোন।