Ubuntu 24.04 VPS پر Minecraft سرور کیسے بنائیں
Ubuntu 24.04 VPS پر Paper Minecraft سرور چلائیں: RAM کا صحیح سائز، Java 21، systemd سروس، پورٹ 25565 پر دونوں فائر والز، محفوظ بیک اپ، اور عام errors کا حل۔ 1 GB VPS playable نہیں ہے۔
آپ کیا بنا رہے ہیں
ایک Minecraft Java Edition سرور جو چلتا رہے: Ubuntu 24.04 پر Paper، جو systemd کے تحت ایک مخصوص minecraft یوزر کے طور پر چلے گا، Restart=on-failure کے ساتھ، وائٹ لسٹ آن ہوگی، پورٹ 25565 آپ کے کھلاڑیوں اور JVM کے درمیان موجود دونوں فائر والز میں کھلا ہوگا، اور بیک اپس ایسے لیے جائیں گے کہ وہ دنیا کو خراب نہ کریں جس کی حفاظت کے لیے وہ موجود ہیں۔ سرور خود ایک jar اور ایک java کمانڈ ہے۔ جو چیزیں ایک ایسے سرور کو، جس پر آپ کے دوست ایک سال کھیلیں، اس سرور سے مختلف بناتی ہیں جو پہلے ہیفتے ہی بند ہو جائے، وہ اس کمانڈ کے ارد گرد ہیں، اور اسی پر یہ گائیڈ بحث کرتی ہے۔
پیسے خرچ کرنے سے پہلے دو صاف الفاظ میں تنبیہات۔ پہلی، Minecraft میں میموری زیادہ درکار ہوتی ہے اور یہ زیادہ تر سنگل تھریڈڈ ہے: ایک 1 GB VPS playable سرور نہیں چلا سکے گا، اور ایک تیز کور چار سست کورز سے بہتر ہے۔ دوسری، یہ Java Edition ہے۔ Bedrock کھلاڑی — کنسولز، فونز، Windows Bedrock ایپ — Java سرور میں شامل نہیں ہو سکتے؛ Bedrock کو UDP 19132 پر مختلف سرور سافٹ ویئر درکار ہے، یا Geyser پلگ ان درکار ہے، جس کا ذکر یہاں نہیں کیا جائے گا۔
آپ کو ایک نیا Ubuntu 24.04 KVM VPS درکار ہے جس میں root یا sudo ہو، اور تقریباً 30 منٹ کا وقت۔
سائز: ایک دوستوں والے سرور کو دراصل کیا درکار ہوتا ہے
RAM وہ عدد ہے جس کا اہمیت ہے، اور حقیقی اعداد modpack فورمز کی تجویز کردہ حدود سے کم ہیں:
- 2 GB vanilla کو 2 سے 5 کھلاڑیوں کے لیے ایک معمولی view distance پر چلاتا ہے۔ کھیلنے کے قابل ہے، کوئی اضافی گنجائش نہیں۔
- 4 GB دوستوں والے سرور کا مناسب سائز ہے: Paper پر تقریباً دس بیک وقت آن لائن کھلاڑی چند plugins کے ساتھ، اور OS کے لیے بھی کافی مقدار بچ جاتی ہے۔
- 8 GB اور اس سے زیادہ modpack اور 20 سے زائد کھلاڑیوں کا دائرہ ہے، جہاں آپ کو single-core CPU کی رفتار کا بھی خیال رکھنا چاہیے، کیونکہ اہم گیم لوپ ایک ہی thread پر چلتا ہے۔
جیسے جیسے کھلاڑی دریافت کرتے ہیں، دنیا ڈسک پر بھی بڑھتی ہے — ایک خوب گھومی پھرا survival دنیا کئی گیگابائٹس تک پہنچ جاتی ہے — اس لیے دنیا اور اس کے backups کے لیے اضافی جگہ چھوڑیں۔
Vanilla یا Paper؟ Paper سرکاری jar کی براہ راست متبادل ہے: وہی دنیا، وہی کلائنٹس، کلائنٹ سائیڈ mods کی ضرورت نہیں۔ یہ سب سے سست سرور راستوں — chunk loading، entity ticking، hoppers — کو دوبارہ بہتر بناتا ہے اور ایک plugin API شامل کرتا ہے۔ vanilla چلانے کی واحد وجہ یہ ہے اگر آپ کو technical redstone فارمز کے لیے بائٹس کے حساب سے بالکل درست vanilla میکانکس درکار ہوں جو 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یہ نمبر اس بے میل کی وضاحت کرتے ہیں: کلاس فائل ورژن 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: سرور jar کو سرکاری ذریعے سے ڈاؤن لوڈ کریں
آپ کو سرور jar صرف دو جگہوں سے ملنا چاہیے: vanilla کے لیے minecraft.net پر سرکاری سرور ڈاؤن لوڈ پیج، اور Paper کے لیے papermc.io پر ڈاؤن لوڈ پیج۔ تیسری پارٹی "ڈاؤن لوڈ ہب" جو سرور jar کو دوبارہ پیکیج کرتے ہیں، وہ ملویئر کا مستقل ذریعہ ہیں — سرور jar دراصل وہ کوڈ ہے جسے آپ انٹرنیٹ سے جڑے ہوئے سسٹم پر 24/7 چلانے والے ہیں۔
سرکاری پیج سے موجودہ بلڈ کا ڈاؤن لوڈ لنک کاپی کریں (URL ہر ورژن اور بلڈ کے ساتھ تبدیل ہوتا ہے، اس لیے یہاں کوئی مستقل لنک دیا گیا تو وہ پرانا ہو جائے گا)، پھر:
cd /opt/minecraft
sudo -u minecraft wget -O server.jar 'PASTE-THE-COPIED-URL-HERE'درست نتیجہ: تقریباً 50 MB کا ایک server.jar جو minecraft کی ملکیت ہے، جس کی تصدیق ls -lh /opt/minecraft/server.jar سے ہوتی ہے۔
مرحلہ 4: پہلی چلان، EULA، اور خود کو op بنانا
systemd کو چھونے سے پہلے سرور کو ایک بار interactive طریقے سے چلائیں — پہلی چلان کے دو کام ہیں جو صرف ایک live console ہی اچھی طرح کرتا ہے۔
cd /opt/minecraft
sudo -u minecraft java -Xms1G -Xmx1G -jar server.jar noguiیہ چند سیکنڈ میں ختم ہو جاتا ہے — Paper پہلے اپنے patches لگانے میں کچھ اضافی لمحے صرف کرتا ہے — اور log اس لائن پر ختم ہوتا ہے جس پر سبھی پہنچتے ہیں:
[ServerMain/INFO]: You need to agree to the EULA in order to run the server. Go to eula.txt for more info.یہ کوئی error نہیں ہے؛ یہ ایک license gate ہے۔ چلانے نے jar کے ساتھ eula.txt لکھ دیا۔ اگر آپ نے پہلے نہیں پڑھا تو منسلک EULA پڑھیں، پھر flag تبدیل کریں:
sudo -u minecraft sed -i 's/eula=false/eula=true/' /opt/minecraft/eula.txtوہی java کمانڈ دوبارہ چلائیں۔ اس بار یہ دنیا بناتا ہے — پہلی boot پر ایک دو منٹ — اور اس مقام پر آ جاتا ہے:
[Server thread/INFO]: Done (9.204s)! For help, type "help"اب آپ کے پاس ایک live console ہے۔ دوسرے کام کے لیے اسے استعمال کریں: op YourMinecraftName (آپ کا exact in-game username) ٹائپ کریں اور سرور آپ کو ops.json میں لکھ دیتا ہے، تاکہ بعد میں — جب کوئی console منسلک نہ ہو — آپ کھیل کے اندر سے ہر admin کمانڈ چلا سکیں۔ پھر صاف طریقے سے save اور exit کرنے کے لیے stop ٹائپ کریں۔
مرحلہ 5: server.properties، اور online-mode کی true رہنے کی وجہ
پہلی مرتبہ چلنے پر 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 knowonline-mode=true سرور کو ہر شامل ہونے والے صارف نام کو Mojang کے سیشن سرورز پر تصدیق کرواتا ہے، یہ ثابت کرتے ہوئے کہ کھلاڑی اکاؤنٹ کا حقیقی مالک ہے۔ اسے false پر مقرر کرنا — یعنی "cracked server" والا ٹوگل — کا مطلب ہے کہ سرور ہر کلائنٹ کے بیان پر بھروسا کرتا ہے کہ وہ کون ہے: کوئی بھی کسی بھی نام سے شامل ہو سکتا ہے، آپ کے نام سمیت، اور چونکہ ops اور whitelists نام کی بنیاد پر کام کرتے ہیں، ایسا شخص آپ کے آپریٹر کی اجازتوں کے ساتھ داخل ہو جاتا ہے۔ اسے false رکھنے کی واحد جائز وجہ Velocity جیسے تصدیق کرنے والے پراکسی کے پیچھے ہے، جو خود کھلاڑیوں کی تصدیق کرتا ہے۔ ایک عام سرور پر یہ true ہی رہتا ہے، بس۔
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: ایک systemd unit جس میں Restart=on-failure ہو
ایک سرور جسے دستی طور پر چلایا جائے وہ آپ کے 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.targetsudo systemctl daemon-reload
sudo systemctl enable --now minecraft
systemctl status minecraft
journalctl -u minecraft -fدرست نتیجہ: status میں active (running) نظر آتا ہے، اور journal — جو اب سرور کنسول آؤٹ پٹ رکھتا ہے — دوبارہ Done لائن پر ختم ہوتا ہے۔
اس unit میں دو جان بوجھ کر کی گئی انتخاب ہیں۔ Restart=on-failure کریش کے بعد سرور کو واپس لاتا ہے لیکن ایک صاف stop کے بعد نہیں، تاکہ دیکھ بھال ممکن رہے۔ اور TimeoutStopSec=120 جتنا دکھتا ہے اس سے کہیں زیادہ اہم ہے: systemctl stop SIGTERM بھیجتا ہے، Minecraft سرور اسے پکڑتا ہے اور ہر ورلڈ کو محفوظ کرتا ہے، اور بڑے ورلڈ پر وہ محفوظ کرنے کا عمل وقت لیتا ہے۔ Systemd کا ڈیفالٹ ٹائم آؤٹ JVM کو محفوظ کرنے کے دوران SIGKILL کر سکتا ہے، اور اسی طرح region فائلیں خراب ہوتی ہیں۔ اسے دو منٹ دیں۔
اگر سروس فلپ کرتی ہے اور journal میں نظر آتا ہے:
[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 پر قابض ہے — تقریباً ہمیشہ آپ کا پچھلا foreground چلانا جو کسی دوسرے SSH سیشن میں ابھی زندہ ہے۔ اسے sudo ss -tlnp | grep 25565 سے تلاش کریں اور اس کاپی کو روکیں؛ ایک پورٹ پر کبھی دو سرور نہ چلائیں۔
مرحلہ 8: دونوں فائر وال پر 25565 کھولیں
Minecraft Java صرف TCP 25565 استعمال کرتا ہے (UDP صرف ایک اختیاری query پروٹوکول ہے، جو بطور ڈیفالٹ بند رہتا ہے)۔ 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 چلا رہی ہے، اور brute-force لاگ کا شور چند گھنٹوں میں شروع ہو جاتا ہے — بھولنے سے پہلے Ubuntu 24.04 پر SSH کے لیے Fail2ban سیٹ اپ کریں۔
اب کنیکٹ کریں: Multiplayer، Direct Connection، سرور کا IP۔ چونکہ آپ نے مرحلہ 4 میں اپنے آپ کو op دیا تھا، اس لیے ان-گیم کمانڈز فوراً کام کریں گی — ہر کھلاڑی کے لیے /whitelist add FriendName، /gamemode creative اگر یہ منصوبہ ہے۔
مرحلہ 9: whitelist کا اہتمام کریں، کیونکہ انٹرنیٹ port 25565 کو تلاش کر لیتا ہے
Minecraft سرور کو انٹرنیٹ پر کھلا چھوڑنا کوئی فرضی خطرہ نہیں ہے: بڑے پیمانے کے اسکینرز پورے IPv4 سپیس میں مسلسل port 25565 کو تلاش کرتے رہتے ہیں — شوقیہ گریفنگ پروجیکٹس نے اس طرح لاکھوں کھلے سرورز کو میپ کر لیا ہے — اور بغیر 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 جو لکھنے کے ساتھ دوڑ لگائے، وہ آدھے لکھے ہوئے چنکس کے ساتھ ایک آرکائیو تیار کرتا ہے، اور جب آپ بالآخر اسے بحال کریں گے — وہ واحد لمحہ جب بیک اپ کو کام کرنا چاہیے — لاگ میں چنک لوڈنگ کی خرابیاں بھر جائیں گی اور زمین میں سوراخ ہو جائیں گے۔ دو طریقے اس سے بچتے ہیں۔
بند کریں-کاپی کریں-چلائیں آسان طریقہ ہے، ایک منٹ کے ڈاؤن ٹائم کی قیمت پر:
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 کی ہے: ہر پلگ ان ایک arbirtary کوڈ ہے جو minecraft یوزر کے طور پر چلتا ہے۔
سرور کو اپ گریڈ کرنے کا طریقہ یہ ہے: روکیں، بیک اپ لیں، server.jar کو نئے Minecraft ورژن کے بلڈ سے بدلیں، چلائیں۔ دو احتیاطی تدابیر۔ ورلڈ اپ گریڈز ایک طرفہ ہیں — نئے ورژن سے کھولی گئی ورلڈ پرانے ورژن میں نہیں کھلے گی، جو بیک اپز کا ایک اور کام ہے۔ اور پلگ انز اکثر کسی نئے Minecraft ریلیز سے کئی دن یا ہفتے پیچھے رہ جاتے ہیں، اس لیے پہلے دن ریلیز کے پیچھے بھاگنے سے پہلے مطابقت چیک کریں۔
اگر آپ یہ سب ایک کنٹینر کے طور پر منظم کرنا چاہتے ہیں — ورژن پن کرنا، EULA قبول کرنا، اور میموری فلیگز کو ماحول کے متغیرات کے طور پر — تو بڑے پیمانے پر استعمال ہونے والا itzg/minecraft-server امیج اسی Paper سرور کو آپ کے VPS پر Docker Compose کے تحت چلاتا ہے، بالکل ایسے ہی فائر وال اور بیک اپ ڈسپلن کے ساتھ۔
FAQ
ایک Minecraft سرور کو کتنا RAM درکار ہوتا ہے؟
2 GB vanilla کو 2–5 کھلاڑیوں کے لیے چلاتا ہے؛ 4 GB تقریباً دس کھلاڑیوں کے دوستوں کے سرور کے لیے Paper پر چند پلگ ان کے ساتھ بہترین ہے؛ modpacks اور 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 کے نام کے، ان کی اجازتوں کے وارث بن کر — اور اسکن اور مستحکم UUIDs خراب ہو جاتے ہیں۔ واحد جائز استعمال Velocity جیسے تصدیق کرنے والے پراکسی کے پیچھے ہے جو خود کھلاڑیوں کی تصدیق کرتا ہے۔ ایک عام سرور کے لیے یہ true رہتا ہے۔
کیا Paper vanilla Minecraft سرور سے بہتر ہے؟
تقریباً ہر کسی کے لیے، ہاں: Paper ایک drop-in jar ہے جو vanilla دنیاؤں کو لوڈ کرتا ہے، غیر ترمیم شدہ کلائنٹس کو قبول کرتا ہے، entities کو tick کرتا اور chunks کو کہیں زیادہ مؤثر طریقے سے لوڈ کرتا ہے، اور پلگ ان ایکو سسٹم شامل کرتا ہے۔ استثنا ان technical-redstone کمیونٹیز کے لیے ہے جنہیں bit-exact vanilla رویے کی ضرورت ہوتی ہے، جسے Paper کی کچھ آپٹیمائزیشنز تبدیل کر دیتی ہیں۔ ایک چھوٹے VPS پر، Paper کی کارکردگی مؤثر طریقے سے مفت اضافی RAM ہے۔
میں ایک Minecraft دنیا کو بغیر خراب کیے کیسے بیک اپ کروں؟
جب سرور دنیا کی ڈائریکٹری میں لکھ رہا ہو تو اسے کبھی آرکائیو نہ کریں — ایک کاپی جو region-file write سے دوڑ کر سامنا کرے، خراب chunks پیدا کرتی ہے جو آپ صرف بحالی کے وقت دریافت کرتے ہیں۔ یا تو سرور کو روکیں، world ڈائریکٹریز کو tar کریں، اور اسے دوبارہ چلائیں، یا اسے save-off، save-all flush، tar، save-on کے ذریعے RCON پر برقرار رکھیں۔ پھر آرکائیو کو VPS سے باہر منتقل کریں۔