SSD Nodes Learn Hosting plans →
गाइड Matt Connorलेखक: Matt Connor

Ubuntu 24.04 पर Minecraft Server कैसे होस्ट करें

Ubuntu 24.04 VPS पर Paper Minecraft सर्वर सेटअप करने का तरीका जानें। Java 25 इंस्टॉलेशन, systemd कॉन्फ़िगरेशन, 25565 पोर्ट फायरवॉल और सुरक्षित बैकअप की पूरी जानकारी यहाँ उपलब्ध है।

आप क्या बना रहे हैं

Minecraft Java Edition का एक ऐसा सर्वर जो हमेशा चालू रहे: Ubuntu 24.04 पर Paper, जिसे systemd के अंतर्गत एक समर्पित minecraft user के रूप में चलाया जाएगा, साथ ही Restart=on-failure का उपयोग, whitelist चालू, ufw में port 25565 खुला (और यदि आपके प्रदाता का नेटवर्क फायरवॉल सक्रिय है तो उसमें भी), और बैकअप लेने की ऐसी प्रक्रिया जो world को सुरक्षित रखे और उसे corrupt न होने दे। सर्वर स्वयं एक jar फाइल और एक java कमांड है; जो चीज एक ऐसे सर्वर को, जिस पर आपके दोस्त एक साल तक खेलते हैं, उस सर्वर से अलग करती है जो पहले ही सप्ताहांत में बंद हो जाता है, वह सब इसी कमांड के इर्द-गिर्द है, और यह गाइड उसी के बारे में है।

पैसे खर्च करने से पहले दो ईमानदार चेतावनियाँ। पहली, Minecraft को बहुत अधिक मेमोरी की आवश्यकता होती है और यह मुख्य रूप से single-threaded है: 1 GB का VPS एक खेलने योग्य सर्वर नहीं चला पाएगा, और एक तेज़ core चार धीमे cores से बेहतर प्रदर्शन करता है। दूसरी, यह Java Edition है। Bedrock खिलाड़ी, कंसोल, फोन, और Windows Bedrock ऐप, Java सर्वर से नहीं जुड़ सकते; Bedrock को UDP 19132 पर अलग सर्वर सॉफ़्टवेयर की आवश्यकता होती है, या Geyser प्लगइन की, जो इस गाइड के दायरे से बाहर है।

आपको root या sudo एक्सेस के साथ एक नए Ubuntu 24.04 KVM VPS की आवश्यकता होगी, और इसे पूरा करने में लगभग तीस मिनट लगेंगे।

Sizing: दोस्तों के सर्वर को वास्तव में क्या चाहिए

RAM वह संख्या है जो मायने रखती है, और वास्तविक आंकड़े modpack फ़ोरम के सुझावों से कम हैं:

  • 2 GB vanilla को 2–5 खिलाड़ियों के लिए सामान्य view distance पर चलाता है। यह खेलने योग्य है, लेकिन इसमें अतिरिक्त क्षमता नहीं है।
  • 4 GB दोस्तों के सर्वर के लिए उपयुक्त आकार है: Paper पर लगभग दस सक्रिय खिलाड़ी और कुछ plugins, साथ ही OS के लिए पर्याप्त जगह।
  • 8 GB और उससे अधिक modpack और 20 से अधिक खिलाड़ियों के लिए है। यहाँ आपको single-core CPU की गति पर भी ध्यान देना चाहिए, क्योंकि मुख्य game loop एक ही thread पर चलता है।

जैसे-जैसे खिलाड़ी दुनिया का अन्वेषण करते हैं, डिस्क पर world का आकार भी बढ़ता है। एक अधिक उपयोग की गई survival world कई gigabytes तक पहुँच जाती है, इसलिए world और उसके backups के लिए अतिरिक्त जगह छोड़ें।

Vanilla या Paper? Paper आधिकारिक jar का एक सीधा विकल्प है: वही worlds, वही clients, और किसी client-side mods की आवश्यकता नहीं है। यह सबसे धीमे server paths, chunk loading, entity ticking, और hoppers को फिर से लिखता है, और एक plugin API जोड़ता है। Vanilla चलाने का एकमात्र कारण यह है कि यदि आपको तकनीकी redstone farms के लिए बिल्कुल सटीक vanilla mechanics की आवश्यकता है, जिन्हें Paper के optimisations बदल सकते हैं; बाकी सभी के लिए, Paper प्रति gigabyte अधिक खिलाड़ियों को सपोर्ट करता है। नीचे दी गई हर चीज़ दोनों के लिए काम करती है।

चरण 1: Java 25 इंस्टॉल करें

Minecraft 26.1 और इसके बाद के प्रत्येक release के लिए Java 25 की आवश्यकता होती है; Java 21 केवल पुराने 1.20 से 1.21.11 लाइन को ही सपोर्ट करता है। Ubuntu 24.04 अपने अपडेट और सुरक्षा रिपॉजिटरी के माध्यम से Java 25 प्रदान करता है। पूर्ण JRE इंस्टॉल करें, न कि -headless बिल्ड: Paper की Java इंस्टॉल गाइड headless वेरिएंट के खिलाफ चेतावनी देती है क्योंकि उनमें उन dependencies की कमी होती है जिनकी Paper को आवश्यकता होती है।

sudo apt update && sudo apt install -y openjdk-25-jre
java -version

सही परिणाम: पहली पंक्ति openjdk version "25.0.x" पढ़नी चाहिए। यदि यह 21, 17 या 11 दिखाती है, तो कोई अन्य JRE इंस्टॉल है और वही सक्रिय है; इसे sudo update-alternatives --config java के साथ ठीक करें और java-25 युक्त प्रविष्टि चुनें।

इस जाँच को छोड़ने पर बाद में Minecraft सर्वर की सबसे अधिक खोजी जाने वाली त्रुटि उत्पन्न होती है। Java 21 के साथ, सर्वर 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 69.0),
	this version of the Java Runtime only recognizes class file versions up to 65.0

ये संख्याएँ बेमेल (mismatch) को दर्शाती हैं: class file version 69.0 का अर्थ Java 25 है, 65.0 का अर्थ Java 21 है, और 61.0 का अर्थ Java 17 है। आप जो भी जोड़ा देखें, समाधान वही है: नया JRE इंस्टॉल करें और update-alternatives को पुनः चलाएँ।

Step 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 को repackage करते हैं, वे लंबे समय से malware फैलाने का जरिया रहे हैं। एक server jar मनमाना कोड (arbitrary code) होता है जिसे आप इंटरनेट से जुड़े सर्वर पर 24/7 चलाने वाले हैं।

आधिकारिक पेज से वर्तमान build का डाउनलोड लिंक कॉपी करें (URL हर version और build के साथ बदलता है, इसलिए यहाँ एक लिंक देना पुराना हो जाएगा), फिर:

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

सही परिणाम: लगभग 60 MB की एक server.jar फाइल, जिसका स्वामी minecraft है, और जिसकी पुष्टि 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 (अपना सटीक इन-गेम उपयोगकर्ता नाम) टाइप करें और सर्वर आपको ops.json में लिख देगा। इससे बाद में, जब कोई कंसोल अटैच नहीं होगा, तो आप गेम के अंदर से हर एडमिन कमांड चला सकेंगे। फिर सुरक्षित रूप से सेव करने और बाहर निकलने के लिए 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 know

online-mode=true सर्वर को यह सुनिश्चित करने के लिए मजबूर करता है कि जुड़ने वाला प्रत्येक उपयोगकर्ता नाम Mojang के सेशन सर्वर के साथ सत्यापित हो, जिससे यह साबित होता है कि खिलाड़ी के पास वह अकाउंट है। इसे false पर सेट करना, जिसे "cracked server" टॉगल कहा जाता है, का अर्थ है कि सर्वर किसी भी क्लाइंट के दावे को स्वीकार कर लेता है: कोई भी किसी भी नाम से जुड़ सकता है, आपके नाम सहित, और चूंकि ops और whitelists नाम के आधार पर काम करते हैं, इसलिए एक प्रतिरूपक (impersonator) आपके ऑपरेटर अनुमतियों के साथ सर्वर में प्रवेश कर सकता है। इसे false रखने का एकमात्र वैध कारण Velocity जैसे प्रमाणीकरण प्रॉक्सी के पीछे होना है, जो स्वयं खिलाड़ियों को सत्यापित करता है। एक सामान्य सर्वर पर इसे true ही रहना चाहिए, बस।

view-distance फ़ाइल में प्रदर्शन को नियंत्रित करने वाला सबसे बड़ा कारक है, CPU और RAM की खपत लगभग इसके वर्ग (square) के अनुपात में बढ़ती है। 8 एक उचित VPS डिफ़ॉल्ट है; 10 वैनिला डिफ़ॉल्ट है और काफी अधिक भारी है।

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 यूनिट

हाथ से शुरू किया गया सर्वर आपके 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 लाइन पर समाप्त होता है।

उस यूनिट में दो जानबूझकर किए गए विकल्प हैं। Restart=on-failure क्रैश के बाद सर्वर को वापस लाता है लेकिन सामान्य stop के बाद नहीं, इसलिए रखरखाव संभव रहता है। और TimeoutStopSec=120 दिखने से कहीं अधिक महत्वपूर्ण है: systemctl stop SIGTERM भेजता है, Minecraft सर्वर इसे पकड़ लेता है और बाहर निकलने से पहले हर वर्ल्ड को सेव करता है, और एक बड़े वर्ल्ड पर उस सेव में समय लगता है। Systemd का डिफ़ॉल्ट टाइमआउट JVM को सेव के बीच में ही SIGKILL कर सकता है, जो कि रीजन फ़ाइलों के करप्ट होने का सटीक कारण है। इसे दो मिनट का समय दें।

यदि सर्विस बार-बार बंद और चालू (flap) हो रही है और जर्नल में यह दिखाई देता है:

[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 प्रदाता कंट्रोल पैनल में एक दूसरा, नेटवर्क-स्तरीय फायरवॉल भी प्रदान करते हैं, और जब एक सक्रिय होता है तो लोग अक्सर उसे भूल जाते हैं। SSD Nodes पर यह Advanced Firewall Groups ऐड-ऑन है, जो एक सशुल्क अतिरिक्त सुविधा है जिसे आप चेकआउट के समय या डैशबोर्ड से असाइन करते हैं; यदि आपके सर्वर में यह है, तो वहां भी TCP 25565 खोलें। किसी भी फायरवॉल में नियम न होने का लक्षण बहुत ही अस्पष्ट होता है: क्लाइंट "Connecting to the server..." पर अटक जाता है और Connection timed out: no further information के साथ विफल हो जाता है, कोई इनकार नहीं, कोई सर्वर त्रुटि नहीं, जर्नल में कुछ भी नहीं, क्योंकि पैकेट कभी पहुँचे ही नहीं। VPS के बाहर किसी मशीन से nc -vz your.server.ip 25565 के साथ जाँच करें; succeeded का मतलब है कि रास्ते में आने वाला हर फायरवॉल खुला है, और हैंग होने का मतलब आमतौर पर यह होता है कि कोई फायरवॉल अभी भी पैकेट ड्रॉप कर रहा है, हालाँकि कनेक्शन स्वीकार करने में बहुत व्यस्त होस्ट भी टाइम आउट हो सकता है, इसलिए बॉक्स पर ss के साथ पुष्टि करें कि सर्वर लिसन कर रहा है।

जब आप ufw में हों, तो उसी बॉक्स पर SSH एक पब्लिक IP पर चल रहा होता है, और ब्रूट-फोर्स लॉग का शोर कुछ ही घंटों में शुरू हो जाता है, इससे पहले कि आप भूल जाएं Ubuntu 24.04 पर SSH के लिए Fail2ban सेट करें।

अब कनेक्ट करें: Multiplayer, Direct Connection, और सर्वर IP डालें। चूंकि आपने चरण 4 में खुद को op बनाया था, इसलिए इन-गेम कमांड तुरंत काम करेंगे, प्रत्येक खिलाड़ी के लिए /whitelist add FriendName, और यदि योजना यही है तो /gamemode creative का उपयोग करें।

Step 9: whitelist, क्योंकि इंटरनेट port 25565 को ढूंढ लेता है

Minecraft सर्वर को इंटरनेट के लिए खुला छोड़ना केवल एक सैद्धांतिक जोखिम नहीं है: मास स्कैनर्स लगातार पूरे IPv4 स्पेस में port 25565 को स्कैन करते रहते हैं, हॉबीस्ट ग्रीफिंग प्रोजेक्ट्स ने इस तरह से लाखों खुले सर्वर्स को मैप किया है, और एक बिना whitelist वाले सर्वर पर कुछ दिनों या कभी-कभी कुछ घंटों के भीतर ही अनचाहे आगंतुक आ जाते हैं। step 5 की whitelist इसका समाधान है: online-mode=true पहचान सिद्ध करता है, और whitelist केवल आपके द्वारा चुनी गई पहचानों तक प्रवेश को सीमित करती है। यह जोड़ी ही पूरा सुरक्षा मॉडल है, और यह दोस्तों के सर्वर के लिए पर्याप्त है।

गेम के बिना कंसोल एक्सेस, स्क्रिप्टेड बैकअप, और cron job के लिए, server.properties (enable-rcon=true, एक मजबूत rcon.password, port 25575) में RCON सक्षम करें और VPS पर ही इसके GitHub सोर्स से छोटा mcrcon क्लाइंट बनाएं; यह Ubuntu के repos में उपलब्ध नहीं है। किसी भी firewall में 25575 को न खोलें: RCON पासवर्ड को cleartext में भेजता है, इसलिए इसे केवल loopback-only रहना चाहिए।

चरण 10: ऐसे बैकअप जो डेटा को करप्ट न करें

एक ही नियम है: सर्वर के लिखते समय कभी भी world डायरेक्टरी को कॉपी न करें। गेम के दौरान region फाइलें लगातार फिर से लिखी जाती हैं; एक tar जो राइट ऑपरेशन के साथ रेस करता है, वह आधी-अधूरी chunks वाली आर्काइव बनाता है। जब आप इसे रिस्टोर करते हैं—वही पल जब बैकअप का काम करना सबसे जरूरी होता है—तो लॉग chunk-loading एरर्स से भर जाता है और terrain में छेद हो जाते हैं। इससे बचने के दो तरीके हैं।

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
sudo systemctl start minecraft

(26.1 के बाद से, Paper सभी तीन dimensions को world/dimensions/ के अंदर रखता है, जैसा कि vanilla करता है, इसलिए world पूरा world है। 1.21.11 या उससे पुराने वर्जन पर चल रहा Paper सर्वर उन्हें world, world_nether, और world_the_end में विभाजित करता है; tar कमांड में उन दोनों को भी जोड़ें।)

Save-off लाइव बैकअप लेता है: RCON के माध्यम से, save-off जारी करें (autosaver को रोकने के लिए), फिर save-all flush (सब कुछ डिस्क पर फोर्स करने और प्रतीक्षा करने के लिए), tar लें, और फिर save-on चलाएं। इसे सुबह 5 बजे cron में डालने के लिए यही सही वर्जन है।

किसी भी स्थिति में, सर्वर वाले VPS पर ही रखा गया बैकअप, बैकअप नहीं होता है। आर्काइव्स को scp या rclone करके बॉक्स से बाहर भेजें, और एक से अधिक प्रतियां रखें। और चूंकि कुछ खराब होने पर आप कंसोल को देखते नहीं रहेंगे, इसलिए पोर्ट पर एक बाहरी चेक लगाएं: किसी अन्य बॉक्स पर Uptime Kuma का उपयोग करके 25565 पर TCP चेक करने से आपको खिलाड़ियों के पता चलने से पहले ही सर्वर डाउन होने की जानकारी मिल जाएगी।

Plugins और upgrades

Paper पर, एक plugin का मतलब है /opt/minecraft/plugins/ में डाली गई एक jar file, जिसके बाद एक restart की आवश्यकता होती है; बस इतना ही install करना होता है। Plugins को केवल उनके आधिकारिक project pages (Hangar, Modrinth, SpigotMC) से ही प्राप्त करें। इसका कारण वही है जो server jar के लिए है: प्रत्येक plugin एक arbitrary code है जो minecraft user के रूप में चलता है।

Server को upgrade करने की प्रक्रिया यह है: stop करें, backup लें, server.jar को नए Minecraft version के build से बदलें, और फिर start करें। दो सावधानियां बरतें। World upgrades एकतरफा होते हैं; एक नया version जिस world को खोल देता है, वह पुराने version में नहीं खुलेगा। इसके लिए backups का उपयोग करें। साथ ही, plugins अक्सर नए Minecraft release के कुछ दिनों या हफ्तों बाद ही update होते हैं, इसलिए release के पहले दिन ही उसे अपनाने से पहले compatibility की जाँच कर लें। 1.21.11 से 26.1 या उसके बाद के version पर जाने के लिए Java 25 (चरण 1) की भी आवश्यकता होती है और यह Paper के Nether और End folders को world/dimensions/ में स्थानांतरित कर देता है।

यदि आप इन सभी को एक container के रूप में manage करना पसंद करते हैं, जिसमें version pinning, EULA acceptance, और memory flags को environment variables के रूप में रखा जाए, तो व्यापक रूप से उपयोग की जाने वाली itzg/minecraft-server image उसी Paper server को Docker Compose on your VPS के तहत चलाती है, जिसमें firewall और backup के समान नियम लागू होते हैं।

FAQ

Minecraft server को कितनी RAM की आवश्यकता होती है?

2 GB RAM में 2–5 खिलाड़ियों के लिए vanilla server चल सकता है; 4 GB RAM लगभग दस खिलाड़ियों वाले Paper server और कुछ plugins के लिए पर्याप्त है; modpacks और 20 से अधिक खिलाड़ियों के लिए 8 GB या उससे अधिक RAM की आवश्यकता होती है। VPS का आकार चाहे जो भी हो, -Xmx को कुल RAM से कम से कम 1 GB कम पर सेट करें, क्योंकि JVM heap के अलावा भी मेमोरी का उपयोग करता है, और अधिक RAM आवंटित करने पर Error: Could not reserve enough space for object heap एरर आ सकता है या सिस्टम बिना किसी सूचना के OOM kill कर सकता है।

मेरे मित्र मेरे Minecraft server से कनेक्ट क्यों नहीं कर पा रहे हैं?

Connection timed out: no further information पर समाप्त होने वाला client hang आमतौर पर firewall की समस्या को दर्शाता है: VPS पर ufw, और यदि control panel में कोई network firewall सक्षम है तो उसे भी जाँचें। TCP 25565 को रास्ते में आने वाले प्रत्येक firewall में खुला होना चाहिए। यह सुनिश्चित करें कि server वास्तव में sudo ss -tlnp | grep 25565 के साथ listening मोड में है, फिर बाहर से nc -vz your.server.ip 25565 का उपयोग करके परीक्षण करें।

क्या मुझे server.properties में online-mode=false सेट करना चाहिए?

नहीं। online-mode=false के साथ server Mojang authentication को पूरी तरह से छोड़ देता है, जिससे कोई भी किसी भी username के साथ जुड़ सकता है, जिसमें op का नाम भी शामिल है, जिससे उन्हें सभी अनुमतियाँ मिल जाती हैं, और skins तथा स्थिर UUIDs काम करना बंद कर देते हैं। इसका एकमात्र वैध उपयोग Velocity जैसे authenticating proxy के पीछे है जो स्वयं खिलाड़ियों को सत्यापित करता है। सामान्य server के लिए इसे true ही रहने दें।

क्या Paper, vanilla Minecraft server से बेहतर है?

लगभग सभी के लिए, हाँ: Paper एक drop-in jar है जो vanilla worlds को लोड करता है, unmodified clients को स्वीकार करता है, entities को प्रोसेस करने और chunks को लोड करने में कहीं अधिक कुशल है, और plugin ecosystem को जोड़ता है। अपवाद केवल technical-redstone समुदाय हैं जिन्हें bit-exact vanilla व्यवहार की आवश्यकता होती है, जिसे कुछ Paper optimisations बदल देते हैं। एक छोटे VPS पर, Paper की दक्षता प्रभावी रूप से मुफ्त अतिरिक्त RAM के समान है।

मैं Minecraft world को corrupt किए बिना उसका बैकअप कैसे लूँ?

जब server world directory में लिख रहा हो, तो कभी भी उसका archive न बनाएँ; copy करते समय region-file लिखने की प्रक्रिया में दौड़ (race condition) होने से chunks corrupt हो सकते हैं, जिसका पता आपको केवल restore करते समय चलता है। या तो server को रोकें, world directories को tar करें और फिर से शुरू करें, या RCON के माध्यम से save-off, save-all flush, tar, save-on का उपयोग करके इसे live रखें। इसके बाद archive को VPS से बाहर कहीं और सुरक्षित रखें।