SSD Nodes Learn Hosting plans →
تعلیمی Matt Connorتحریر: Matt Connor · اپ ڈیٹ شدہ 2026-08-07

Ubuntu VPS پر Minecraft server کیسے چلائیں

Ubuntu 24.04 VPS پر Paper Minecraft server چلائیں: RAM، Java 21، systemd، port 25565 کے دونوں firewalls، محفوظ world backups اور عام errors کی درست تفصیل۔

آپ کیا بنا رہے ہیں

ایک ایسا Minecraft Java Edition سرور جو مسلسل چلتا رہے: Ubuntu 24.04 پر Paper، dedicated minecraft user کے طور پر systemd کے تحت، Restart=on-failure کے ساتھ چل رہا ہو، whitelist فعال ہو، اور آپ کے players اور JVM کے درمیان موجود دونوں firewalls میں port 25565 کھلا ہو۔ Backups ایسے طریقے سے لیے جائیں جو اس world کو corrupt نہ کرے جس کے تحفظ کے لیے یہ backups بنائے گئے ہیں۔ سرور خود ایک jar اور ایک java command ہے؛ آپ کے دوست جس سرور پر ایک سال کھیل سکیں اور جو پہلے weekend میں بند ہو جائے، ان دونوں کے درمیان تمام فرق اسی command کے گرد موجود انتظامات سے پیدا ہوتا ہے، اور یہی اس guide کا موضوع ہے۔

پیسے خرچ کرنے سے پہلے دو واضح تنبیہات۔ اول، Minecraft بہت زیادہ memory استعمال کرتا ہے اور زیادہ تر single-threaded ہے: 1 GB VPS playable server نہیں چلا سکے گا، اور چار سست cores کے مقابلے میں ایک تیز core بہتر ہے۔ دوم، یہ Java Edition ہے۔ Bedrock players، consoles، phones اور Windows Bedrock app، Java server سے connect نہیں ہو سکتے؛ Bedrock کے لیے UDP 19132 پر مختلف server software یا Geyser plugin درکار ہے، جو اس guide کے scope میں شامل نہیں۔

آپ کو root یا sudo کے ساتھ ایک نیا Ubuntu 24.04 KVM VPS اور تقریباً تیس منٹ درکار ہیں۔

Sizing: دوستوں کے سرور کو درکار اصل وسائل

RAM ہی اہم عدد ہے، اور اصل ضرورت modpack forums میں بتائی گئی مقدار سے کم ہوتی ہے:

  • 2 GB معمولی view distance کے ساتھ 2–5 کھلاڑیوں کے لیے vanilla چلا لیتا ہے۔ کھیلنے کے قابل کارکردگی ملتی ہے، لیکن اضافی گنجائش نہیں رہتی۔
  • 4 GB دوستوں کے سرور کے لیے موزوں مقدار ہے: Paper پر تقریباً دس بیک وقت کھلاڑی، چند plugins، اور OS کے لیے کافی اضافی RAM۔
  • 8 GB اور اس سے زیادہ modpack اور 20 سے زیادہ کھلاڑیوں کے لیے مناسب ہے۔ اس صورت میں single-core CPU speed پر بھی توجہ دیں، کیونکہ گیم کا بنیادی loop ایک thread پر چلتا ہے۔

کھلاڑیوں کے explore کرنے کے ساتھ world بھی disk پر بڑھتی جاتی ہے۔ زیادہ استعمال ہونے والی survival world کئی gigabytes تک پہنچ سکتی ہے، اس لیے world اور اس کے backups دونوں کے لیے اضافی جگہ رکھیں۔

Vanilla یا Paper؟ Paper سرکاری jar کا براہ راست متبادل ہے: وہی worlds، وہی clients، اور client-side mods کی ضرورت نہیں۔ یہ سرور کے سست ترین حصوں، جیسے chunk loading، entity ticking اور hoppers کو بہتر بناتا ہے، اور plugin API فراہم کرتا ہے۔ vanilla چلانے کی واحد وجہ یہ ہے کہ آپ کو technical redstone farms کے لیے vanilla mechanics میں ہر جزو کی عین مطابقت درکار ہو، کیونکہ Paper کی optimisations ان mechanics کو تبدیل کر سکتی ہیں؛ باقی تمام صارفین کے لیے Paper فی gigabyte زیادہ کھلاڑیوں کو support کرتا ہے۔ ذیل کے تمام طریقے دونوں کے لیے کام کرتے ہیں۔

مرحلہ 1: Java 21 انسٹال کریں

Minecraft 1.20.5 اور اس کے بعد کی ہر release، یعنی تمام 1.21.x releases، کے لیے Java 21 درکار ہے۔ Ubuntu 24.04 اسے default repositories میں فراہم کرتا ہے، جبکہ headless build وہ desktop libraries انسٹال نہیں کرتا جنہیں server کبھی استعمال نہیں کرے گا:

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 سے درست کریں اور وہ entry منتخب کریں جس میں java-21 شامل ہو۔

اس check کو چھوڑنے سے بعد میں Minecraft server کی سب سے زیادہ تلاش کی جانے والی error سامنے آتی ہے۔ Java 17 کے ساتھ server 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

یہ numbers incompatibility واضح کرتے ہیں: class file version 65.0 کا مطلب Java 21، 61.0 کا مطلب Java 17، اور 60.0 کا مطلب Java 16 ہے۔ آپ کو جو بھی pair نظر آئے، حل ایک ہی ہے: نیا JRE انسٹال کریں اور update-alternatives دوبارہ چلائیں۔

مرحلہ 2: dedicated user، کبھی بھی root نہیں

سرور plugin code چلاتا ہے اور ہر اس شخص کے network input کو parse کرتا ہے جو port تک رسائی رکھتا ہو۔ اگر اس عمل میں کبھی خرابی پیدا ہو جائے تو root کے طور پر چلنے والا compromise آپ کے VPS پر مکمل اختیار حاصل کر لیتا ہے؛ جبکہ minecraft کے طور پر چلنے والا compromise صرف ایک game world پر اختیار رکھتا ہے۔

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

--system ایسا no-password account بناتا ہے جو SSH کے ذریعے login نہیں کر سکتا، اور /opt/minecraft کو اپنا home اور working directory استعمال کرتا ہے۔ اس کے بعد سرور سے متعلق ہر command اسی user کے طور پر چلائی جائے گی۔

مرحلہ 3: سرور jar کو سرکاری ماخذ سے download کریں

سرور jar آپ کو صرف دو مقامات سے حاصل کرنا چاہیے: vanilla کے لیے minecraft.net کا سرکاری server download page، اور Paper کے لیے papermc.io کا downloads page۔ تیسرے فریق کے "download hubs" سرور jar کو دوبارہ پیکج کر کے طویل عرصے سے malware پھیلانے کا ذریعہ بنے ہوئے ہیں۔ سرور jar ایسا arbitrary code ہے جسے آپ internet-facing مشین پر 24/7 چلانے والے ہیں۔

سرکاری page سے موجودہ build کا download link copy کریں۔ URL ہر version اور build کے ساتھ تبدیل ہوتا ہے، اس لیے یہاں کسی ایک URL کو hardcode کرنا قابلِ عمل نہیں رہے گا۔ پھر:

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 ہے۔ اس run نے jar کے ساتھ eula.txt لکھ دی ہے۔ اگر آپ نے EULA نہیں پڑھی تو linked EULA پڑھیں، پھر flag تبدیل کریں:

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

وہی java command دوبارہ چلائیں۔ اس بار یہ world بناتا ہے، اور پہلے boot پر اس میں ایک یا دو منٹ لگ سکتے ہیں۔ پھر یہ اس حالت میں آ جاتا ہے:

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

اب آپ کے پاس live console موجود ہے۔ اسے دوسرے کام کے لیے استعمال کریں: op YourMinecraftName ٹائپ کریں، جہاں op YourMinecraftName آپ کا عین in-game username ہے۔ سرور آپ کو ops.json میں لکھ دے گا۔ بعد میں، جب کوئی console attached نہ ہو، تو آپ game کے اندر سے ہر admin command چلا سکیں گے۔ پھر محفوظ طریقے سے save اور exit کرنے کے لیے stop ٹائپ کریں۔

مرحلہ 5: server.properties، اور online-mode کے true رہنے کی وجہ

پہلی بار چلانے پر server.properties بھی لکھ دی گئی۔ زیادہ تر default settings مناسب ہیں؛ تاہم، ان lines کے بارے میں دانستہ فیصلہ کرنا ضروری ہے:

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 سرور کو ہر شامل ہونے والے username کی Mojang کے session servers سے تصدیق کرنے پر مجبور کرتا ہے، جس سے ثابت ہوتا ہے کہ player اس account کا مالک ہے۔ اسے false پر set کرنے، یعنی "cracked server" toggle فعال کرنے، کا مطلب ہے کہ سرور client کے شناخت سے متعلق دعوے کو بغیر تصدیق قبول کرتا ہے: کوئی بھی شخص کسی بھی name سے join کر سکتا ہے، آپ کے name سے بھی۔ چونکہ ops اور whitelists name کی بنیاد پر مقرر ہوتے ہیں، اس لیے نقال آپ کی operator permissions کے ساتھ سرور میں داخل ہو سکتا ہے۔ اسے false کرنے کی واحد جائز وجہ کسی ایسے authenticating proxy، مثلاً Velocity، کے پیچھے ہونا ہے جو players کی خود تصدیق کرتا ہو۔ عام سرور پر یہ ہر صورت true رہتا ہے۔

view-distance اس file میں performance پر سب سے زیادہ اثر ڈالنے والی setting ہے؛ CPU اور RAM کی لاگت تقریباً اس کے square کے تناسب سے بڑھتی ہے۔ VPS کے لیے 8 ایک مناسب default ہے؛ 10 vanilla default ہے اور اس پر noticeably زیادہ وسائل خرچ ہوتے ہیں۔

white-list=true اور enforce-whitelist=true سرور کو اجنبی users کے لیے بند کر دیتے ہیں، اور ذیل کا security section واضح کرتا ہے کہ یہ اختیاری نہیں ہے۔ players کو in-game، بطور op، /whitelist add TheirName کے ذریعے شامل کریں۔

مرحلہ 6: memory flags، اور کیوں -Xms اور -Xmx یکساں ہونے چاہییں

JVM اپنے heap کو -Xms (ابتدائی سائز) اور -Xmx (زیادہ سے زیادہ حد) کے درمیان allocate کرتا ہے۔ Dedicated game server پر دونوں کو ایک ہی value پر set کریں: heap بہرحال زیادہ سے زیادہ حد تک پہنچ جائے گا، اور اسے مرحلہ وار بڑھانے سے صرف gameplay کے دوران garbage collector پر اضافی بوجھ پڑتا ہے۔ 4 GB VPS پر درست جوڑا یہ ہے:

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

-Xmx process کی مجموعی memory نہیں ہے۔ JVM off-heap overhead، thread stacks، JIT caches اور direct buffers کے لیے تقریباً نصف gigabyte یا اس سے زیادہ memory استعمال کرتا ہے، جبکہ Ubuntu کو بھی memory درکار ہوتی ہے۔ عملی اصول یہ ہے: -Xmx زیادہ سے زیادہ VPS RAM میں سے 1 GB کم رکھیں۔ حد سے تجاوز کی صورت میں دو میں سے ایک failure ہوتا ہے۔ اگر allocation ابتدا ہی میں ناکام ہو جائے تو server اس پیغام کے ساتھ start ہونے سے انکار کر دیتا ہے:

Error: Could not reserve enough space for object heap

یہ failure واضح اور فوری ہوتا ہے۔ زیادہ خطرناک صورت میں server ٹھیک start ہوتا ہے اور کئی گھنٹے بعد بند ہو جاتا ہے۔ یہ اس وقت ہوتا ہے جب load کے دوران heap بھر جاتا ہے اور kernel کا OOM killer system پر موجود سب سے بڑے process، یعنی JVM، کو ختم کر دیتا ہے۔ Server log میں کچھ ظاہر نہیں ہوتا؛ ثبوت sudo dmesg | grep -i oom میں موجود ہوتا ہے، جہاں Out of memory: Killed process 1234 (java) جیسی line نظر آتی ہے۔ اگر آپ کی service "randomly" restart ہوتی ہے تو پہلے یہیں چیک کریں اور -Xmx کم کریں۔

Paper کے لیے project Aikar's flags دستاویز کرتا ہے۔ یہ G1GC کے لیے tuned flags کا set ہے (-XX:+UseG1GC -XX:MaxGCPauseMillis=200 اور اس کے درجن بھر ساتھی)، جو بڑے heaps پر garbage-collection pauses کو ہموار کرتا ہے۔ مکمل line Paper کی documentation سے generate کریں؛ 2–4 GB heap پر فائدہ محدود ہوتا ہے، لیکن یہ flags بے ضرر ہیں۔

مرحلہ 7: Restart=on-failure کے ساتھ systemd unit

ہاتھ سے شروع کیا گیا server آپ کے SSH session کے ساتھ بند ہو جاتا ہے اور reboot کے بعد بھی دوبارہ شروع نہیں ہوتا۔ /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) دکھائی دیتا ہے، اور journal، جس میں اب server console output بھی شامل ہے، دوبارہ Done والی سطر پر ختم ہوتا ہے۔

اس unit میں دو انتخاب جان بوجھ کر کیے گئے ہیں۔ Restart=on-failure crash کے بعد server دوبارہ شروع کرتا ہے، لیکن صاف طور پر کیے گئے stop کے بعد نہیں، اس لیے maintenance ممکن رہتی ہے۔ اور TimeoutStopSec=120 کی اہمیت بظاہر زیادہ محسوس نہیں ہوتی: systemctl stop، SIGTERM بھیجتا ہے؛ Minecraft server اسے وصول کر کے بند ہونے سے پہلے ہر world کو save کرتا ہے، اور بڑے world میں یہ save ہونے میں وقت لگتا ہے۔ systemd کا default timeout save کے دوران JVM کو SIGKILL بھیج سکتا ہے، جس سے region files خراب ہو جاتی ہیں۔ اسے دو منٹ دیں۔

اگر service بار بار بند اور شروع ہو اور 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?

تو port 25565 پہلے ہی کسی process کے زیرِ استعمال ہے۔ تقریباً ہمیشہ اس کی وجہ یہ ہوتی ہے کہ آپ کا پہلے چلایا گیا foreground run کسی دوسرے SSH session میں اب بھی فعال ہے۔ اسے sudo ss -tlnp | grep 25565 سے تلاش کریں اور اس copy کو روک دیں؛ ایک ہی port پر کبھی دو servers نہ چلائیں۔

مرحلہ 8: دونوں firewalls پر 25565 کھولیں

Minecraft Java صرف TCP 25565 استعمال کرتا ہے۔ UDP صرف اختیاری query protocol کے لیے ہے اور default طور پر بند ہوتا ہے۔ VPS پر:

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

یہ پہلا firewall ہے۔ زیادہ تر VPS providers control panel میں دوسرا، network-level firewall بھی چلاتے ہیں، اور لوگ عموماً اسی کو بھول جاتے ہیں۔ وہاں بھی TCP 25565 کھولیں۔ دونوں میں سے صرف ایک firewall کھلا ہونے کی علامت واضح نہیں ہوتی: client "Connecting to the server..." پر رک جاتا ہے اور Connection timed out: no further information کے ساتھ ناکام ہو جاتا ہے۔ کوئی refusal نہیں ہوتا، server error نہیں آتا، اور journal میں کچھ درج نہیں ہوتا، کیونکہ packets سرور تک پہنچے ہی نہیں۔ VPS کے باہر موجود کسی machine سے nc -vz your.server.ip 25565 کے ذریعے تصدیق کریں۔ succeeded کا مطلب ہے کہ دونوں firewalls کھلے ہیں۔ اگر connection رک جائے تو کم از کم ایک firewall ابھی بند ہے۔

جب آپ ufw میں موجود ہیں، تو یہی box public IP پر SSH بھی چلا رہا ہے، اور چند گھنٹوں میں brute-force logs کا شور شروع ہو جاتا ہے۔ بھولنے سے پہلے Ubuntu 24.04 پر SSH کے لیے Fail2ban ترتیب دیں۔

اب connect کریں: Multiplayer، Direct Connection، پھر server IP درج کریں۔ چونکہ آپ نے step 4 میں خود کو op کیا تھا، اس لیے in-game commands فوراً کام کریں گے، ہر player کے لیے /whitelist add FriendName، اور اگر یہی منصوبہ ہے تو /gamemode creative۔

مرحلہ 9: whitelist، کیونکہ انٹرنیٹ port 25565 تلاش کرتا ہے

Minecraft server کو انٹرنیٹ پر کھلا چھوڑنا محض نظری خطرہ نہیں ہے: mass scanners مسلسل پورے IPv4 space میں port 25565 تلاش کرتے ہیں، شوقیہ griefing projects نے اسی طریقے سے لاکھوں کھلے servers کا نقشہ تیار کیا ہے، اور whitelist کے بغیر server پر چند دن، اور کبھی چند گھنٹوں میں، غیر مدعو visitors آ جاتے ہیں۔ step 5 کی whitelist اس کا حل ہے: online-mode=true شناخت ثابت کرتا ہے، جبکہ whitelist داخلے کو ان شناختوں تک محدود رکھتی ہے جنہیں آپ نے منتخب کیا ہے۔ یہی جوڑا مکمل security model ہے، اور friends server کے لیے کافی ہے۔

Game کے بغیر console access، scripted backups اور cron job کے لیے server.properties میں RCON فعال کریں (enable-rcon=true، مضبوط rcon.password، port 25575) اور VPS پر ہی اس کا چھوٹا mcrcon client، اس کے GitHub source سے، build کریں؛ یہ Ubuntu کے repos میں موجود نہیں ہے۔ کسی بھی firewall میں 25575 کو ہرگز نہ کھولیں: RCON password کو cleartext میں بھیجتا ہے، اس لیے اسے صرف loopback تک محدود رکھیں۔

مرحلہ 10: ایسی backups جو دنیا کو خراب نہ کریں

بنیادی اصول یہ ہے: world directory کو اس وقت کبھی copy نہ کریں جب server اس میں لکھ رہا ہو۔ کھیل کے دوران region files مسلسل دوبارہ لکھی جاتی ہیں؛ اگر کوئی tar لکھنے کے عمل کے ساتھ بیک وقت چلے تو archive میں آدھے لکھے ہوئے chunks شامل ہو جاتے ہیں۔ بعد میں restore کرنے پر، یعنی عین اس وقت جب backup کو کام کرنا چاہیے، log chunk-loading errors سے بھر جاتا ہے اور terrain میں سوراخ بن جاتے ہیں۔ دو طریقے اس مسئلے سے بچاتے ہیں۔

Stop-copy-start آسان طریقہ ہے، لیکن اس میں ایک منٹ کا downtime ہوتا ہے:

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 dimensions کو world، world_nether، اور world_the_end میں تقسیم کرتا ہے؛ vanilla server میں سب کچھ world میں رہتا ہے، اس لیے باقی دونوں کو وہاں رکھیں۔)

Save-off چلتے ہوئے server کا backup بناتا ہے: RCON کے ذریعے save-off جاری کریں (autosaver روکنے کے لیے)، پھر save-all flush جاری کریں (ہر چیز disk پر لکھنے پر مجبور کرنے اور انتظار کرنے کے لیے)، tar بنائیں، پھر save-on جاری کریں۔ 5 a.m. پر cron میں رکھنے کے لیے یہی طریقہ استعمال کریں۔

دونوں صورتوں میں، server کے اسی VPS پر موجود backup، backup نہیں ہوتا۔ scp یا rclone کے ذریعے archives کو server سے باہر منتقل کریں، اور ایک سے زیادہ copies رکھیں۔ چونکہ خرابی کے وقت آپ console کو دیکھ نہیں رہے ہوں گے، اس لیے port پر external check بھی لگائیں: دوسرے box پر Uptime Kuma سے 25565 پر TCP check چلائیں، تاکہ players سے پہلے آپ کو معلوم ہو جائے کہ server down ہے۔

پلگ اِنز اور اپ گریڈز

Paper میں پلگ اِن انسٹال کرنے کے لیے /opt/minecraft/plugins/ میں ایک jar فائل رکھیں اور پھر restart کریں۔ یہی مکمل installation ہے۔ پلگ اِنز صرف ان کے official project pages، یعنی Hangar، Modrinth یا SpigotMC، سے حاصل کریں۔ اس کی وجہ وہی ہے جو server jar کے لیے ہے: ہر پلگ اِن minecraft user کے طور پر چلنے والا arbitrary code ہوتا ہے۔

Server upgrade کرنے کا طریقہ یہ ہے: stop کریں، backup لیں، server.jar کو نئی Minecraft version کے build سے replace کریں، اور start کریں۔ دو احتیاطیں ضروری ہیں۔ World upgrades یک طرفہ ہوتے ہیں۔ نئی version میں کھولی گئی world پرانی version میں نہیں کھلے گی۔ اسی لیے backups اس کام کے لیے بھی ضروری ہیں۔ مزید یہ کہ plugins کو نئی Minecraft release کے ساتھ compatible ہونے میں اکثر کئی دن یا ہفتے لگتے ہیں۔ اس لیے پہلے دن release حاصل کرنے کی کوشش سے پہلے compatibility check کریں۔

اگر آپ یہ سب container کے طور پر manage کرنا چاہتے ہیں، جس میں version pinning، EULA acceptance اور memory flags environment variables کے طور پر مقرر ہوں، تو وسیع پیمانے پر استعمال ہونے والی itzg/minecraft-server image، اپنے VPS پر Docker Compose کے ذریعے اسی Paper server کو چلاتی ہے۔ Firewall اور backup کا طریقہ بھی وہی رہتا ہے۔

FAQ

Minecraft server کے لیے کتنی RAM درکار ہوتی ہے؟

2 GB RAM سے 2–5 کھلاڑیوں کے لیے vanilla چل جاتا ہے؛ 4 GB RAM Paper پر چند plugins کے ساتھ تقریباً 10 دوستوں کے server کے لیے کافی ہے؛ modpacks اور 20 سے زیادہ کھلاڑیوں کے لیے 8 GB یا اس سے زیادہ RAM درکار ہوتی ہے۔ VPS کا سائز کچھ بھی ہو، -Xmx کو کل RAM میں سے 1 GB کم کے برابر یا اس سے کم رکھیں، کیونکہ JVM heap کے علاوہ بھی memory استعمال کرتا ہے، اور حد سے تجاوز کرنے پر Error: Could not reserve enough space for object heap یا خاموش OOM kill ہو سکتا ہے۔

میرے دوست Minecraft server سے connect کیوں نہیں کر سکتے؟

Connection timed out: no further information پر ختم ہونے والا client hang تقریباً ہمیشہ firewall کی طرف اشارہ کرتا ہے، اور یہاں دو firewalls ہوتے ہیں: VPS پر ufw اور control panel میں provider کا network firewall۔ دونوں میں TCP 25565 کھلا ہونا چاہیے۔ `sudo ss -tlnp | grep 25565 سے server پر تصدیق کریں کہ service واقعی listening کر رہی ہے، پھر nc -vz your.server.ip 25565` سے باہر کے network سے test کریں۔

کیا مجھے server.properties میں online-mode=false سیٹ کرنا چاہیے؟

نہیں۔ online-mode=false کے ساتھ server Mojang authentication مکمل طور پر چھوڑ دیتا ہے، اس لیے کوئی بھی شخص کسی بھی username سے join کر سکتا ہے، حتیٰ کہ کسی op کا نام بھی استعمال کر سکتا ہے، اور اس کی permissions حاصل کر سکتا ہے۔ اس سے skins اور مستقل UUIDs بھی درست طور پر کام نہیں کرتے۔ اس کا واحد جائز استعمال Velocity جیسے authenticating proxy کے پیچھے ہے، جو خود players کی تصدیق کرتا ہے۔ عام server میں اسے true ہی رہنا چاہیے۔

کیا Paper، vanilla Minecraft server سے بہتر ہے؟

تقریباً ہر صارف کے لیے، ہاں۔ Paper ایک drop-in jar ہے جو vanilla worlds load کرتا ہے، unmodified clients قبول کرتا ہے، entities کو tick کرتا ہے اور chunks کو کہیں زیادہ مؤثر طریقے سے load کرتا ہے، اور plugin ecosystem بھی فراہم کرتا ہے۔ استثنا وہ technical-redstone communities ہیں جنہیں vanilla behaviour میں bit-exact مطابقت درکار ہوتی ہے، کیونکہ Paper کی بعض optimisations اس behaviour کو تبدیل کرتی ہیں۔ چھوٹے VPS پر Paper کی efficiency عملاً اضافی RAM کے برابر فائدہ دیتی ہے۔

میں Minecraft world کو corrupt کیے بغیر اس کا backup کیسے بناؤں؟

World directory کو اس وقت archive نہ کریں جب server اس میں لکھ رہا ہو، کیونکہ region-file write کے دوران بنائی گئی copy سے ایسے corrupted chunks پیدا ہو سکتے ہیں جن کا پتا صرف restore کے وقت چلتا ہے۔ یا تو server روکیں، world directories کا tar archive بنائیں، اور server دوبارہ start کریں، یا save-off، save-all flush، tar اور save-on کو RCON کے ذریعے استعمال کرتے ہوئے server کو چلتا رہنے دیں۔ اس کے بعد archive کو VPS سے باہر منتقل کریں۔