SSD Nodes Learn Hosting plans →
गाइड Matt Connorलेखक: Matt Connor · अपडेट किया गया: 2026-08-01

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

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

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

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

पैसे खर्च करने से पहले दो ईमानदार चेतावनियाँ। पहली, Minecraft मेमोरी की अधिक खपत करता है और मुख्य रूप से सिंगल-थ्रेडेड है: 1 GB का VPS एक खेलने योग्य सर्वर नहीं चला पाएगा, और एक तेज़ कोर चार धीमे कोर से बेहतर होता है। दूसरी, यह 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 अधिक खिलाड़ियों को सपोर्ट करता है। नीचे दी गई हर चीज़ दोनों के लिए काम करती है।

Step 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

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

Step 2: एक समर्पित उपयोगकर्ता, कभी भी root नहीं

सर्वर प्लगइन कोड निष्पादित करता है और उस पोर्ट तक पहुँचने वाले किसी भी व्यक्ति से नेटवर्क इनपुट को पार्स करता है। यदि कभी कोई त्रुटि होती है, तो root के रूप में चल रहा समझौता आपके VPS का पूर्ण नियंत्रण ले लेगा; जबकि minecraft के रूप में चल रहा समझौता केवल एक गेम वर्ल्ड तक सीमित रहेगा।

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

--system एक बिना पासवर्ड वाला खाता बनाता है जो SSH के माध्यम से लॉगिन नहीं कर सकता है, जिसका होम और वर्किंग डायरेक्टरी /opt/minecraft है। यहाँ से सर्वर को प्रभावित करने वाला प्रत्येक कमांड इसी उपयोगकर्ता के रूप में चलाया जाएगा।

Step 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'

सही परिणाम: लगभग 50 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 के साथ खोजें और उस कॉपी को रोकें; एक पोर्ट पर कभी भी दो सर्वर न चलाएं।

Step 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 का उपयोग करें।

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 रहना चाहिए।

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

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

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 यूजर के रूप में चलता है।

सर्वर को अपग्रेड करने की प्रक्रिया इस प्रकार है: सर्वर को रोकें, बैकअप लें, server.jar को नए Minecraft वर्ज़न के बिल्ड से बदलें, और फिर सर्वर को स्टार्ट करें। दो सावधानियां बरतें। वर्ल्ड अपग्रेड एकतरफा होते हैं, एक नए वर्ज़न द्वारा खोला गया वर्ल्ड पुराने वर्ज़न में नहीं खुलेगा, जो कि बैकअप का उपयोग करने का एक और कारण है। और प्लगइन्स अक्सर नए Minecraft रिलीज़ के कुछ दिनों या हफ्तों बाद अपडेट होते हैं, इसलिए रिलीज़ के पहले दिन ही उसे अपनाने से पहले संगतता (compatibility) की जाँच कर लें।

यदि आप इन सभी को एक कंटेनर के रूप में प्रबंधित करना पसंद करते हैं, जिसमें वर्ज़न पिनिंग, EULA स्वीकृति, और मेमोरी फ्लैग्स को एनवायरनमेंट वेरिएबल्स के रूप में सेट करना शामिल है, तो व्यापक रूप से उपयोग की जाने वाली itzg/minecraft-server इमेज उसी Paper सर्वर को अपने VPS पर Docker Compose के माध्यम से चलाती है, जिसमें समान फ़ायरवॉल और बैकअप अनुशासन का पालन किया जाता है।

FAQ

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

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

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

Connection timed out: no further information पर समाप्त होने वाला क्लाइंट हैंग लगभग हमेशा फ़ायरवॉल की समस्या होती है, और इसके दो स्तर होते हैं: VPS पर ufw और कंट्रोल पैनल में आपके प्रदाता का नेटवर्क फ़ायरवॉल। TCP 25565 दोनों में खुला होना चाहिए। पुष्टि करें कि सर्वर वास्तव में sudo ss -tlnp | grep 25565 के साथ बॉक्स पर लिसन (listen) कर रहा है, फिर बाहर से nc -vz your.server.ip 25565 के साथ परीक्षण करें।

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

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

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

लगभग सभी के लिए, हाँ: Paper एक ड्रॉप-इन jar है जो vanilla वर्ल्ड्स को लोड करता है, बिना संशोधित क्लाइंट्स को स्वीकार करता है, एंटिटीज को टिक करता है और चंक्स को अधिक कुशलता से लोड करता है, और प्लगइन इकोसिस्टम को जोड़ता है। अपवाद वे तकनीकी-रेडस्टोन समुदाय हैं जिन्हें बिट-एक्ज़ैक्ट vanilla व्यवहार की आवश्यकता होती है, जिसे कुछ Paper ऑप्टिमाइज़ेशन बदल देते हैं। एक छोटे VPS पर, Paper की दक्षता प्रभावी रूप से मुफ्त अतिरिक्त RAM के समान है।

मैं Minecraft वर्ल्ड को करप्ट किए बिना उसका बैकअप कैसे लूँ?

जब सर्वर वर्ल्ड डायरेक्टरी में लिख रहा हो, तो कभी भी उसे आर्काइव न करें; एक कॉपी जो रीजन-फाइल राइट के साथ रेस करती है, वह करप्ट चंक्स बनाती है जिनका पता आपको केवल रिस्टोर करते समय चलता है। या तो सर्वर को रोकें, वर्ल्ड डायरेक्टरी को tar करें, और फिर से शुरू करें, या RCON के माध्यम से save-off, save-all flush, tar, और save-on का उपयोग करके इसे लाइव रखें। फिर आर्काइव को VPS से बाहर ले जाएँ।