SSD Nodes Learn 🎉 VPS $4.99/माह से
गाइड Matt Connorलेखक: Matt Connor

Game server के लिए सही VPS कैसे चुनें: पूरी गाइड

Game server के लिए VPS चुनते समय तेज़ single core CPU speed और पर्याप्त RAM पर ध्यान दें। latency कम करने के लिए server location, ports, systemd और backups की जानकारी लें।

आप किस प्रकार के gaming VPS की बात कर रहे हैं?

Game servers के लिए VPS एक काम के लिए अच्छा विकल्प है: एक dedicated server चलाना जिससे आप और आपके मित्र अपनी मशीनों से जुड़ सकें। यह उस दूसरे काम के लिए एक खराब विकल्प है जिसे लोग अक्सर इस वाक्यांश से समझते हैं, यानी remote desktop के माध्यम से VPS पर ही गेम खेलना। इन दोनों कार्यों के लिए विपरीत hardware की आवश्यकता होती है। एक dedicated server को एक तेज़ CPU core और world को लोड करने के लिए पर्याप्त RAM चाहिए होती है। गेम खेलने के लिए एक GPU (graphics processing unit) की आवश्यकता होती है, और एक मानक VPS plan में यह नहीं होता है।

नीचे दी गई हर जानकारी पहले कार्य के बारे में है। दूसरे कार्य के लिए अपना दो मिनट का समय देना उचित है, क्योंकि बहुत से लोग इसके लिए गलत सर्वर खरीद लेते हैं।

आप VPS पर गेम क्यों नहीं खेल सकते

एक सामान्य VPS आपको वर्चुअल CPU कोर देता है और इसमें कोई ग्राफिक्स कार्ड नहीं होता। फिजिकल होस्ट से कुछ भी पास-थ्रू नहीं किया जाता है, इसलिए गेम के उपयोग के लिए कोई हार्डवेयर रेंडरर मौजूद नहीं होता। आप देख सकते हैं कि आपको वास्तव में क्या मिला है:

sudo apt install -y pciutils
lspci | grep -iE "vga|3d"

इसका उत्तर एक वर्चुअल डिस्प्ले एडेप्टर है, जैसे कि Cirrus Logic या virtio GPU डिवाइस। यह इसलिए मौजूद होता है ताकि प्रोवाइडर का वेब कंसोल आपको स्क्रीन दिखा सके, और इसके पीछे कोई 3D एक्सेलेरेशन नहीं होता। इसके ऊपर एक डेस्कटॉप और VNC सर्वर इंस्टॉल करें, तो glxinfo -B अपने रेंडरर को llvmpipe के रूप में रिपोर्ट करेगा, जो कि CPU पर चलने वाला Mesa का सॉफ्टवेयर रेंडरर है। CPU द्वारा रचित एक आधुनिक 3D गेम कुछ फ्रेम प्रति सेकंड की गति से चलता है, इसलिए यह बॉक्स से बाहर निकलने से पहले ही खेलने योग्य नहीं रहता। Windows इंस्टेंस भी दूसरी तरफ से इसी बाधा का सामना करते हैं। कई गेम्स लॉन्च होते ही बंद हो जाते हैं और शिकायत करते हैं कि वे Direct3D डिवाइस नहीं बना सके, क्योंकि इसे बनाने के लिए कोई डिस्प्ले एडेप्टर मौजूद नहीं होता।

दूसरी समस्या आपके पास वापस आने की यात्रा है। एक रिमोट बॉक्स पर खेलने का मतलब है कि हर फ्रेम को वीडियो में एन्कोड किया जाता है, इंटरनेट पर भेजा जाता है, और आपकी स्क्रीन पर डिकोड किया जाता है। यह गेम के अपने इनपुट लैग के ऊपर एन्कोडिंग और डिकोडिंग का समय जोड़ देता है, और RDP तथा VNC को 60 फ्रेम प्रति सेकंड की गति के बजाय डेस्कटॉप के लिए डिज़ाइन किया गया था। क्लाउड गेमिंग सेवाएं इसे वास्तविक GPU हार्डवेयर और विशेष रूप से बनाए गए स्ट्रीमिंग प्रोटोकॉल के साथ हल करती हैं। एक साधारण VPS में इनमें से कुछ भी नहीं होता। यदि आप खेलना चाहते हैं, तो GPU समय किराए पर लें। यदि आप होस्ट करना चाहते हैं, तो आगे पढ़ना जारी रखें।

एक dedicated game server को वास्तव में किन चीजों की आवश्यकता होती है

Game server एक simulation loop है। यह world को memory में रखता है और इसे प्रति सेकंड एक निश्चित संख्या में आगे बढ़ाता है। इसके बाद प्रत्येक connected player को world का वह हिस्सा भेजा जाता है जिसे वे देख सकते हैं।

यह संरचना hardware का निर्धारण करती है। यह loop मुख्य रूप से एक thread पर चलती है, इसलिए core count की तुलना में core speed अधिक मायने रखती है। World memory में रहता है, इसलिए RAM आमतौर पर वह पहली सीमा है जिस तक आप पहुँचते हैं। खेल के दौरान disk शांत रहती है, लेकिन load और save के समय व्यस्त हो जाती है। आपका network path ping निर्धारित करता है, और कोई भी plan tier इसे बदल नहीं सकता है।

Single core speed, core count से बेहतर है

अधिकांश गेम सर्वर दुनिया को एक मुख्य थ्रेड पर आगे बढ़ाते हैं। Minecraft का tick loop और Source engine का सर्वर फ्रेम, दोनों इसी तरह काम करते हैं। उस tick के लिए एक समय सीमा होती है। Minecraft Java प्रति सेकंड 20 ticks पर चलता है, जो हर tick को 50 milliseconds का बजट देता है। जब काम इस समय में पूरा नहीं होता, तो सर्वर ठीक यह संदेश प्रिंट करता है:

[12:04:51] [Server thread/WARN]: Can't keep up! Is the server overloaded? Running 2547ms or 50 ticks behind

इस लाइन का अर्थ है कि एक थ्रेड का समय समाप्त हो गया। अधिक cores जोड़ने से उस थ्रेड को अधिक समय नहीं मिलता। 2 तेज vCPUs वाला प्लान उस tick rate को बनाए रखेगा जिसे 8 धीमी vCPUs वाला प्लान नहीं संभाल पाएगा, क्योंकि उन 8 में से केवल एक ही वह काम कर रही है जो मायने रखता है।

किसी भी प्लान को लेने से पहले single thread speed को मापें:

sudo apt install -y sysbench
sysbench cpu --cpu-max-prime=20000 --threads=1 run

events per second लाइन को पढ़ें। यह संख्या अपने आप में कुछ नहीं कहती, लेकिन तुलना के लिए बहुत महत्वपूर्ण है, इसलिए इसे दो संभावित प्लान्स पर चलाएं और परिणामों की तुलना करें। A full VPS benchmark run डिस्क और नेटवर्क को भी इसी तरह कवर करता है।

अतिरिक्त cores का भी अपना महत्व है। वे दूसरे गेम सर्वर, डेटाबेस, nightly backup और chunk pre-generator को मुख्य tick thread का समय चुराए बिना चला सकते हैं। सर्वर सॉफ्टवेयर ने भी अब काम को बांटना सीख लिया है, और Paper, जो एक लोकप्रिय Minecraft सर्वर fork है, कुछ काम को मुख्य tick thread से हटा देता है। इसलिए, आपको कम लेकिन तेज cores वाला प्लान खरीदना चाहिए, न कि बहुत सारे धीमे cores वाला।

एक संख्या कभी भी प्लान पेज पर नहीं दिखाई देती, और यही तय करती है कि जिस तेज core के लिए आपने भुगतान किया है, वह वास्तव में आपका है या नहीं:

vmstat 1 5

st कॉलम वह प्रतिशत है जब आपका virtual CPU चलने के लिए तैयार था, लेकिन physical host ने वह core किसी और को दे दिया। यदि st लगातार कुछ प्रतिशत से ऊपर रहता है, तो इसका मतलब है कि host oversold है। खिलाड़ी इसे stutter के रूप में महसूस करते हैं, जबकि आपके बॉक्स पर top अभी भी idle CPU दिखा रहा होता है, क्योंकि वह idle समय आपके उपयोग के लिए उपलब्ध नहीं है।

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

ChartCommon starting RAM per game server (published guidance, not a measurement)
The data behind this chart
[
  {
    "label": "Minecraft Java, vanilla",
    "players": 10,
    "ram_gb": 2
  },
  {
    "label": "Minecraft Java, large modpack",
    "players": 10,
    "ram_gb": 8
  },
  {
    "label": "Valheim",
    "players": 10,
    "ram_gb": 4
  },
  {
    "label": "Palworld",
    "players": 32,
    "ram_gb": 16
  }
]

ये वे शुरुआती आवंटन (allocations) हैं जिन्हें गेम और मॉडपैक के दस्तावेज़ों में अगस्त 2026 तक प्रकाशित किया गया है। ये केवल मार्गदर्शन हैं, न कि किसी एक बॉक्स पर मापी गई सटीक संख्या। Vanilla Minecraft Java लगभग 10 खिलाड़ियों के लिए 2 GB हीप (heap) के साथ सुचारू रूप से चलता है। एक बड़े मॉडपैक पर इतने ही खिलाड़ियों के लिए 8 GB की आवश्यकता होती है, क्योंकि मॉड कई entities और generated structures जोड़ते हैं जो सभी इसी हीप में रहते हैं। Valheim की न्यूनतम आवश्यकता 2 GB बताई गई है, जबकि छोटे वर्ल्ड वाले ऑपरेटर्स के अनुसार यह प्रक्रिया 3 GB के करीब स्थिर होती है, इसलिए 4 GB से शुरुआत करना उचित है। Palworld इस मामले में अपवाद है, जिसके 32 खिलाड़ियों के अधिकतम स्तर के लिए Pocketpair 16 GB की सिफारिश करता है।

RAM का उपयोग कनेक्शन की संख्या के साथ नहीं, बल्कि लोड किए गए वर्ल्ड के साथ बढ़ता है। प्रत्येक खिलाड़ी अपने आस-पास के क्षेत्र को लोड रखता है, इसलिए एक साथ खड़े दो खिलाड़ियों की तुलना में नक्शे के विपरीत कोनों में खोज कर रहे दो खिलाड़ियों पर अधिक संसाधन खर्च होते हैं। यही कारण है कि "प्रति खिलाड़ी RAM" केवल एक मोटा अनुमान है, जबकि "प्रति सक्रिय क्षेत्र RAM" ही वास्तविक कारक है। यही वजह है कि खोजबीन पसंद करने वाला एक छोटा समूह भी उस प्लान से बाहर निकल सकता है जो उनकी संख्या से दोगुने के लिए बनाया गया हो।

Java सर्वर के लिए दो अतिरिक्त नियम आवश्यक हैं। न्यूनतम और अधिकतम हीप को एक ही मान पर सेट करें ताकि JVM को इसे रीसाइज करने के लिए कभी रुकना न पड़े:

java -Xms4G -Xmx4G -jar server.jar nogui

इसके बाद, अतिरिक्त मेमोरी (headroom) छोड़ें। JVM आपके द्वारा दिए गए हीप के बाहर थ्रेड स्टैक और नेटिव बफ़र्स के लिए मेमोरी का उपयोग करता है, और वर्ल्ड फाइलों को तेज़ी से पढ़ने के लिए कर्नेल को पेज कैश की आवश्यकता होती है। 6 GB वाले बॉक्स पर 4 GB का हीप उचित है, लेकिन 6 GB का हीप नहीं।

मेमोरी की दो प्रकार की विफलताएं पूरी तरह अलग दिखती हैं, इसलिए दोनों स्ट्रिंग्स को पहचानना सीखें। यदि हीप बहुत छोटा है, तो Java के भीतर एरर आता है और सर्वर आमतौर पर धीमा होकर चलता रहता है:

java.lang.OutOfMemoryError: Java heap space

यदि हीप बॉक्स की क्षमता से बड़ा है, तो पूरी प्रक्रिया को बाहर से ही समाप्त (kill) कर दिया जाता है। कंसोल में केवल Killed दिखाई देता है, और इसका प्रमाण कर्नेल लॉग में मिलता है:

sudo dmesg -T | grep -i "out of memory"

स्वैप (swap) जोड़ने से प्रक्रिया का बंद होना तो रुक जाता है, लेकिन समस्या हल नहीं होती। यदि टिक लूप को अपना वर्ल्ड स्वैप से पढ़ना पड़े, तो वह हर डेडलाइन चूक जाएगा, जिससे खिलाड़ियों को क्रैश होने के बजाय एक फ्रीज हुआ सर्वर मिलेगा।

अगस्त 2026 के अनुसार एक संस्करण नोट: Minecraft Java 1.20.5 और उसके बाद के वर्जन्स के लिए Java 21 की आवश्यकता होती है। पुराना रनटाइम शुरू तो हो जाता है, लेकिन बाद में unsupported class file version एरर के साथ विफल हो जाता है। यह कंपाइलर मैसेज जैसा दिखता है और पहली बार देखने पर भ्रमित कर सकता है।

sudo apt install -y openjdk-21-jre-headless
java -version

क्या गेम सर्वर के लिए डिस्क की गति मायने रखती है?

खेल के दौरान लोगों की अपेक्षा से कम, लेकिन दो विशिष्ट क्षणों में यह बहुत मायने रखती है। स्टार्टअप पर वर्ल्ड को मेमोरी में लोड किया जाता है और ऑटोसेव के दौरान वापस डिस्क पर लिखा जाता है, इसलिए डिस्क की गति धीमी बूटिंग और सेव प्रक्रिया के दौरान आने वाले पॉज़ के रूप में दिखाई देती है। इनके बीच, अधिकांश रीड ऑपरेशंस RAM से पूरे किए जाते हैं।

दो चीजें डिस्क को इस संक्षिप्त विवरण से कहीं अधिक महत्वपूर्ण बनाती हैं। जब खिलाड़ी घूम रहे होते हैं, तो एक्सप्लोरेशन के दौरान डिस्क से नए चंक्स या ज़ोन लोड होते हैं, और यह रीड ऑपरेशन 'टिक बजट' के भीतर होना चाहिए। एक बड़े वर्ल्ड पर ऑटोसेव एक साथ बहुत सारा डेटा लिखता है, और धीमी वॉल्यूम पर यह राइट ऑपरेशन लूप को इतनी देर के लिए ब्लॉक कर देता है कि ऊपर दी गई "Can't keep up" चेतावनी दिखाई देने लगती है। ये दोनों थ्रूपुट की तुलना में लेटेंसी (latency) की समस्याएं हैं, इसीलिए VPS पर NVMe और SATA SSD के बीच का अंतर यहाँ हेडलाइन में दिए गए मेगाबाइट्स प्रति सेकंड से कहीं अधिक मायने रखता है। आपको इस बात की चिंता करनी चाहिए कि एक छोटा ऑपरेशन पूरा होने में कितना समय लेता है।

वॉल्यूम का आकार विकास (growth) को ध्यान में रखकर तय करें। हर बार जब कोई कहीं नया जाता है, तो वर्ल्ड का आकार बढ़ता है, और आपके बैकअप्स उस आकार को कई गुना बढ़ा देते हैं। एक महीने तक हर हफ्ते du -sh world चलाएं, इससे आपको अपनी वास्तविक विकास दर का पता चल जाएगा।

Tick rate, ping, और इनके बीच का अंतर

Tick rate यह है कि सर्वर प्रति सेकंड कितनी बार world को recalculate करता है। Minecraft Java 20 पर चलता है। Source engine सर्वर आमतौर पर 64 पर चलते हैं। Minecraft में आप इससे अधिक rate नहीं खरीद सकते, क्योंकि यह दर game के design का हिस्सा है, इसलिए लक्ष्य इसे 20 पर बनाए रखना है, न कि इससे आगे बढ़ाना।

Ping एक player और सर्वर के बीच का round trip समय है। ये दोनों अलग-अलग तरह की शिकायतें पैदा करते हैं, इसलिए पैसे खर्च करने से पहले इन्हें अलग-अलग समझें। जब सर्वर ticks miss करता है, तो सभी players एक ही समय पर rubber-banding महसूस करते हैं और सर्वर log में यह स्पष्ट रूप से लिखा होता है। जब किसी एक player का network path लंबा होता है, तो केवल वही player lag महसूस करता है और बाकी group ठीक रहता है। एक बेहतर CPU दूसरे मामले को कभी ठीक नहीं करेगा।

Latency का संबंध स्थान से है, न कि प्लान टियर से

फाइबर में प्रकाश लगभग 200 किलोमीटर प्रति मिलीसेकंड की गति से यात्रा करता है। एक राउंड ट्रिप में दूरी दो बार तय होती है, इसलिए खिलाड़ी और सर्वर के बीच प्रति 100 किमी की दूरी के लिए न्यूनतम समय (floor) लगभग 1 ms होता है। कोई भी प्रदाता इससे बेहतर प्रदर्शन नहीं कर सकता और कोई भी प्लान अपग्रेड इसे बदल नहीं सकता।

ChartRound trip floor by distance, fibre physics only
The data behind this chart
[
  {
    "label": "Toronto to New York",
    "distance_km": 550,
    "rtt_floor_ms": 5.5
  },
  {
    "label": "Dallas to Chicago",
    "distance_km": 1290,
    "rtt_floor_ms": 12.9
  },
  {
    "label": "Dallas to Los Angeles",
    "distance_km": 1990,
    "rtt_floor_ms": 19.9
  },
  {
    "label": "New York to London",
    "distance_km": 5570,
    "rtt_floor_ms": 55.7
  },
  {
    "label": "Los Angeles to Sydney",
    "distance_km": 12070,
    "rtt_floor_ms": 120.7
  }
]

ये मान ग्रेट सर्कल डिस्टेंस (great circle distance) से गणना किए गए न्यूनतम समय हैं। वास्तविक फाइबर सीधी रेखा में नहीं चलता है और रास्ते में आने वाला प्रत्येक राउटर थोड़ा विलंब जोड़ता है, इसलिए वास्तविक दुनिया का अच्छा परिणाम इस न्यूनतम समय के लगभग दोगुना होता है। टोरंटो में बैठा एक खिलाड़ी जो न्यूयॉर्क में स्थित सर्वर तक पहुँचता है, जिसकी दूरी 550 किमी है, उसका न्यूनतम समय 5.5 ms होता है और आमतौर पर उसे 10-20 ms के बीच का परिणाम मिलता है। लॉस एंजिल्स से सिडनी के बीच का न्यूनतम समय 120.7 ms है, और इसे पैसे खर्च करके भी कम नहीं किया जा सकता।

इसलिए सर्वर को उन लोगों के पास रखें जो उस पर खेलते हैं। यदि आपका समूह समुद्र के आर-पार बंटा हुआ है, तो किसी न किसी को लंबा रास्ता तय करना ही पड़ेगा, और इसका उचित समाधान आमतौर पर वह क्षेत्र है जहाँ अधिकांश खिलाड़ी मौजूद हैं।

अनुमान लगाने के बजाय रास्ते को मापें:

sudo apt install -y mtr-tiny
mtr -rwzc 100 203.0.113.10

सबसे पहले अंतिम पंक्ति पढ़ें। वह पंक्ति सर्वर को दर्शाती है, और उसका लॉस (loss) और लेटेंसी (latency) ही यह तय करते हैं कि गेम का अनुभव कैसा होगा। यदि बीच के किसी हॉप (hop) पर लॉस दिख रहा है लेकिन अंतिम हॉप बिल्कुल साफ है, तो यह लगभग हमेशा उस राउटर पर ICMP रेट लिमिटिंग के कारण होता है। ऐसा इसलिए है क्योंकि राउटर वास्तविक ट्रैफिक को सामान्य रूप से फॉरवर्ड करते समय प्रोब पैकेट (probe packets) के उत्तरों को कम प्राथमिकता देते हैं। प्रत्येक खिलाड़ी से सर्वर की ओर इसे रन करवाएं, क्योंकि उनमें से हर एक का रास्ता अलग होता है।

राउंड ट्रिप के न्यूनतम समय की गणना कैसे की जाती है

कांच में प्रकाश की गति निर्वात (vacuum) में उसकी गति की लगभग दो-तिहाई होती है, जो प्रति मिलीसेकंड लगभग 200 किमी के बराबर है। एक राउंड ट्रिप में दूरी दो बार तय होती है, इसलिए मिलीसेकंड में न्यूनतम समय, किलोमीटर में एक तरफ की दूरी को 100 से विभाजित करने पर प्राप्त होता है। न्यूयॉर्क से लंदन की दूरी 5,570 किमी है, और 5570 को 100 से विभाजित करने पर 55.7 ms प्राप्त होता है। मापा गया प्रत्येक नंबर इससे अधिक ही आता है, क्योंकि केबल तटरेखाओं का अनुसरण करती हैं और राउटर को प्रोसेस करने में समय लगता है।

केवल गेम के लिए आवश्यक पोर्ट्स खोलें

गेम सर्वर को केवल एक या दो पोर्ट्स खोलने की आवश्यकता होती है, अन्य कोई नहीं। सामान्य डिफॉल्ट्स इस प्रकार हैं:

  • Minecraft Java Edition: TCP 25565
  • Minecraft Bedrock Edition: UDP 19132
  • Valheim: UDP 2456 और UDP 2457
  • Palworld: UDP 8211
  • Source engine गेम्स जैसे Counter-Strike 2: UDP 27015

गेम के अपने डॉक्यूमेंटेशन की जाँच करें, क्योंकि कई गेम्स एक अतिरिक्त क्वेरी पोर्ट का उपयोग करते हैं। Valheim इसका सबसे स्पष्ट उदाहरण है: 2456 गेम ट्रैफिक ले जाता है और 2457 उस Steam सर्वर क्वेरी का उत्तर देता है जो आपके सर्वर को ब्राउज़र लिस्ट में दिखाता है। उन नंबर्स को TCP पर खोलने से कुछ हासिल नहीं होगा, क्योंकि Valheim केवल UDP का उपयोग करता है।

फायरवॉल सक्षम करने से पहले SSH को अनुमति दें, अन्यथा आप अपने ही सर्वर से बाहर हो जाएंगे:

sudo ufw allow 22/tcp
sudo ufw allow 25565/tcp
sudo ufw enable
sudo ufw status verbose

कई प्रोवाइडर्स बॉक्स पर मौजूद फायरवॉल से अलग, अपने कंट्रोल पैनल में भी एक नेटवर्क फायरवॉल चलाते हैं। जो पोर्ट ufw में खुला है लेकिन वहां बंद है, वह कनेक्शन को अस्वीकार कर देगा, और बाहर से इसका लक्षण बिल्कुल समान होता है, इसलिए कॉन्फ़िगरेशन फाइलों को एडिट करने से पहले दोनों जगहों की जाँच करें।

किसी अन्य मशीन से TCP पोर्ट की जाँच करना आसान है:

sudo apt install -y netcat-openbsd
nc -vz 203.0.113.10 25565

UDP का परीक्षण इस तरह नहीं किया जा सकता। एक बंद UDP पोर्ट सामान्यतः शांत रहता है, इसलिए जिस जांच (probe) का कोई उत्तर नहीं मिलता, वह आपको कुछ भी नहीं बताती। इसके बजाय सर्वर साइड से पुष्टि करें, और देखें कि गेम प्रोसेस आपके द्वारा अपेक्षित पोर्ट पर बाउंड है या नहीं:

sudo ss -lunp | grep 2456

RCON, यानी रिमोट कंसोल प्रोटोकॉल, को कभी भी इंटरनेट पर एक्सपोज़ न करें। यह एक प्लेनटेक्स्ट कनेक्शन पर भेजा जाने वाला एकल पासवर्ड है, जो डिफॉल्ट रूप से पोर्ट 25575 पर होता है। इसे 127.0.0.1 पर बाइंड करें और SSH टनल के माध्यम से एक्सेस करें। गेम सर्वर को भी अपने स्वयं के अनप्रिविलेज्ड यूजर के रूप में चलाएं, ताकि किसी मॉड में मौजूद बग मशीन के बाकी हिस्सों तक न पहुंच सके। नए VPS पर शुरुआती दस मिनट में उस यूजर अकाउंट और SSH हार्डनिंग को कवर किया गया है, जिसे यह सेक्शन पहले से पूरा मानकर चलता है।

सर्वर को systemd के अंतर्गत चलाएं ताकि वह रीस्टार्ट हो सके

SSH सत्र में हाथ से शुरू किया गया सर्वर सत्र बंद होने पर समाप्त हो जाता है, और रीबूट के बाद भी वह बंद ही रहता है। systemd इन दोनों समस्याओं को हल करता है। /etc/systemd/system/minecraft.service लिखें:

[Unit]
Description=Minecraft Java server
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=minecraft
WorkingDirectory=/opt/minecraft
ExecStart=/usr/bin/java -Xms4G -Xmx4G -jar server.jar nogui
Restart=on-failure
RestartSec=15
TimeoutStopSec=180

[Install]
WantedBy=multi-user.target

Restart=on-failure सर्वर के क्रैश होने के बाद उसे वापस लाता है और साफ-सुथरे शटडाउन के बाद उसे बंद रखता है, जो कि आप चाहते हैं। Restart=always हर बार जब आप जानबूझकर सर्वर को रोकते हैं, तो यह आपके काम में बाधा डालता है। TimeoutStopSec=180 जितना दिखता है, उससे कहीं अधिक महत्वपूर्ण है। systemctl stop SIGTERM भेजता है, vanilla Minecraft सर्वर उस सिग्नल को पकड़ता है और बाहर निकलने से पहले दुनिया (world) को सेव करता है, और जब टाइमआउट समाप्त हो जाता है तो systemd इसके बजाय SIGKILL भेजता है। एक बड़ी दुनिया को लिखने में डिफ़ॉल्ट 90 सेकंड से अधिक समय लग सकता है, और जो कुछ भी SIGKILL आने तक डिस्क पर नहीं पहुँचा है, वह खो जाता है।

sudo systemctl daemon-reload
sudo systemctl enable --now minecraft
sudo journalctl -u minecraft -f

एक सफल स्टार्टअप Done (12.345s)! For help, type "help" जैसी लाइन के साथ समाप्त होता है। यदि यूनिट activating और failed के बीच बदलती रहती है, तो journalctl -u minecraft -n 50 में इसका कारण होता है, और यह आमतौर पर WorkingDirectory में गलत पाथ या बॉक्स की क्षमता से बड़ा हीप (heap) होता है।

systemd आपको कोई इंटरैक्टिव कंसोल नहीं देता है, इसलिए पहले से ही इसकी योजना बनाएं। कमांड के लिए localhost पर RCON का उपयोग करें, या सर्वर को tmux सत्र के अंदर चलाएं, वही आदत जो लॉगिन के बीच VPS पर लंबे समय तक चलने वाले Claude Code सत्र को जीवित रखती है

Steam के माध्यम से वितरित गेम सर्वर को इन सबसे पहले SteamCMD की आवश्यकता होती है। Ubuntu पैकेज एक 32-बिट बाइनरी है, यही कारण है कि आर्किटेक्चर लाइन वहां है। उस लाइन को छोड़ दें तो apt रिपोर्ट करेगा कि उसके पास कोई इंस्टॉलेशन कैंडिडेट नहीं है:

sudo add-apt-repository multiverse
sudo dpkg --add-architecture i386
sudo apt update
sudo apt install -y steamcmd

कुछ गेम सर्वर जितना अधिक समय तक चलते हैं, उनकी मेमोरी का उपयोग उतना ही बढ़ता जाता है, और एक निर्धारित समय पर रीस्टार्ट करना ही इसका स्वीकृत समाधान है। systemctl restart को कॉल करने वाला एक systemd टाइमर cron एंट्री की तुलना में समझना आसान है, क्योंकि systemctl list-timers आपको ठीक-ठीक दिखाता है कि यह अगली बार कब चलेगा।

शेड्यूल के अनुसार वर्ल्ड का बैकअप लें

गेम सर्वर पर मौजूद हर चीज़ को बदला जा सकता है, सिवाय world डायरेक्टरी और प्लेयर डेटा के। गेम को फिर से इंस्टॉल करने में कुछ मिनट लगते हैं, लेकिन आपके ग्रुप द्वारा बनाई गई चीज़ों को दोबारा बनाने में महीनों लग सकते हैं।

एक सुरक्षित बैकअप वह है जो तब लिया जाए जब कोई भी डेटा लिखा (write) न जा रहा हो। इसके लिए सर्वर को एक मिनट के लिए रोकना सबसे आसान तरीका है:

sudo systemctl stop minecraft
sudo tar czf /var/backups/mc-$(date +%F).tgz -C /opt/minecraft world world_nether world_the_end
sudo systemctl start minecraft

यदि रात में सर्वर को रोकना संभव नहीं है, तो पहले वर्ल्ड को फ्लश करें। Minecraft कंसोल में, save-off ऑटोसेव को रोकता है, save-all flush पेंडिंग डेटा को लिखता है, और कॉपी पूरी होने के बाद save-on ऑटोसेव को फिर से चालू कर देता है। सर्वर के लिखते समय वर्ल्ड को कॉपी करने से ऐसी region फाइल मिल सकती है जो आधी ही लिखी गई हो, और इसका पता आपको तब तक नहीं चलेगा जब तक कि आपको उसे रिस्टोर करने की आवश्यकता न पड़े।

कम से कम एक कॉपी मशीन से बाहर रखें। एक ही डिस्क पर रखा बैकअप डिस्क खराब होने पर सुरक्षित नहीं रहता, और प्रोवाइडर स्नैपशॉट बैकअप के बजाय केवल एक सुविधा है, क्योंकि यह उसी अकाउंट में रहता है जिसे आप खो सकते हैं। ऑफ-साइट स्टोरेज पर शेड्यूल्ड restic बैकअप रिटेंशन और डुप्लीकेशन को संभालते हैं, जिससे रात भर की वर्ल्ड कॉपी से आपकी डिस्क फुल नहीं होती।

इसके बाद, एक बैकअप को रिस्टोर करके देखें। जिस बैकअप को आपने कभी रिस्टोर नहीं किया, वह केवल एक अनुमान है। पिछली रात के आर्काइव को एक अतिरिक्त डायरेक्टरी में एक्सट्रैक्ट करें, एक टेस्ट सर्वर को उससे कनेक्ट करें, और पुष्टि करें कि वर्ल्ड लोड हो रहा है और आपकी इमारतें वहीं हैं जहाँ आपने उन्हें छोड़ा था।

Commit करने से पहले बॉक्स की जाँच करें

एक साल के बजाय एक महीने का प्लान खरीदें और एक शाम वास्तविक खिलाड़ियों के साथ परीक्षण करें। सिंगल थ्रेड sysbench फिगर चलाएं, फिर प्रत्येक खिलाड़ी को सर्वर की ओर mtr चलाने के लिए कहें। पूर्ण VPS बेंचमार्क प्रक्रिया उन टूल्स के बारे में विस्तार से बताती है और दिखाती है कि खराब परिणाम कैसा दिखता है, और VPS की वास्तविक मासिक लागत आपको यह जाँचने में मदद करती है कि आप उस संसाधन के लिए भुगतान कर रहे हैं जो आपके सर्वर को सीमित करता है, न कि उस संसाधन के लिए जो प्लान पेज पर सबसे बड़े अक्षरों में लिखा है।

दो पोस्ट वहाँ से शुरू होती हैं जहाँ यह समाप्त होती है। VPS पर Minecraft सर्वर बनाना ऊपर दी गई हर चीज़ का चरण-दर-चरण संस्करण है, उस गेम पर जिसे ज्यादातर लोग शुरू करते हैं। VPS पर चलने वाली चीजों की व्यापक सूची पढ़ने योग्य है यदि आप चाहते हैं कि गेम नाइट्स के बीच बॉक्स कुछ उपयोगी काम करे।

FAQ

क्या मैं गेमिंग PC खरीदने के बजाय VPS पर गेम खेल सकता हूँ?

नहीं। एक मानक VPS में GPU नहीं होता है, इसमें केवल प्रदाता के कंसोल के लिए एक वर्चुअल डिस्प्ले एडाप्टर होता है। इसलिए, एक बार डेस्कटॉप इंस्टॉल हो जाने पर glxinfo -B सॉफ्टवेयर रेंडरर llvmpipe की रिपोर्ट करता है और कोई भी 3D गेम कुछ ही फ्रेम प्रति सेकंड पर चलता है। GPU अटैच होने पर भी, रिमोट प्ले हर फ्रेम के राउंड ट्रिप में वीडियो एनकोडिंग और डिकोडिंग जोड़ देता है, और RDP तथा VNC कभी भी इसके लिए नहीं बनाए गए थे। VPS उस डेडिकेटेड सर्वर को होस्ट करने के लिए है जिससे आपका ग्रुप कनेक्ट होता है। यदि आप गेम खेलना चाहते हैं, तो GPU टाइम रेंट पर लें या क्लाउड गेमिंग सर्विस का उपयोग करें।

गेम सर्वर को कितने CPU कोर की आवश्यकता होती है?

अधिकांश गेम्स के लिए दो तेज़ कोर आठ धीमे कोर से बेहतर होते हैं, क्योंकि वर्ल्ड सिमुलेशन एक मुख्य थ्रेड पर चलता है और अतिरिक्त कोर उस थ्रेड को 50 ms की समय-सीमा पूरी करने में मदद नहीं कर सकते। sysbench cpu --cpu-max-prime=20000 --threads=1 run के साथ संभावित प्लान्स की तुलना करें और 'events per second' का आंकड़ा देखें। अतिरिक्त कोर तब उपयोगी होते हैं जब आप उसी बॉक्स पर दूसरा सर्वर या डेटाबेस भी चलाते हैं, क्योंकि तब वे वर्कलोड टिक थ्रेड का समय लिए बिना चल सकते हैं।

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

लगभग 10 खिलाड़ियों वाले वनीला वर्ल्ड के लिए लगभग 2 GB हीप, और उतने ही खिलाड़ियों के लिए एक बड़े मॉडपैक हेतु 8 GB की आवश्यकता होती है। -Xms और -Xmx को एक ही मान पर सेट करें, और मशीन की 1 GB से 2 GB RAM ऑपरेटिंग सिस्टम के लिए खाली छोड़ दें, क्योंकि JVM हीप के बाहर मेमोरी का उपयोग करता है और कर्नल को पेज कैश की आवश्यकता होती है। यदि हीप बॉक्स की क्षमता से बड़ा है, तो कर्नल प्रोसेस को किल कर देता है, जो dmesg में जावा एरर के बजाय 'out of memory' लाइन के रूप में दिखाई देता है।

सर्वर पर CPU और RAM खाली होने के बावजूद मेरे खिलाड़ियों को लैग क्यों महसूस होता है?

इस स्थिति के दो मुख्य कारण हैं। सर्वर लॉग में Can't keep up! Is the server overloaded? की जाँच करें, जिसका अर्थ है कि सिंगल मेन थ्रेड अपना 50 ms का टिक बजट पूरा नहीं कर पाया जबकि अन्य कोर खाली बैठे थे। यदि वह लाइन नहीं है, तो समस्या नेटवर्क पाथ की है, इसलिए प्रत्येक खिलाड़ी से अपने सर्वर एड्रेस के विरुद्ध mtr -rwzc 100 203.0.113.10 रन करवाएं और अंतिम लाइन देखें। vmstat 1 में st कॉलम की भी जाँच करें: कुछ प्रतिशत से अधिक 'steal time' का मतलब है कि होस्ट ओवरसोल्ड है, इसलिए जो खाली CPU आपको दिख रहा है वह वास्तव में आपके लिए उपलब्ध नहीं है।

गेम सर्वर के लिए मुझे कौन से पोर्ट खोलने की आवश्यकता है?

केवल गेम का अपना पोर्ट और SSH। Minecraft Java TCP 25565 का उपयोग करता है, Minecraft Bedrock UDP 19132 का, Valheim UDP 2456 और 2457 का, और Palworld UDP 8211 का उपयोग करता है। ufw enable रन करने से पहले SSH नियम जोड़ें, अन्यथा आप बॉक्स का एक्सेस खो देंगे। याद रखें कि कई प्रदाता अपने कंट्रोल पैनल में एक दूसरा फायरवॉल भी चलाते हैं, और पोर्ट को दोनों जगह खुला होना चाहिए। RCON को इंटरनेट के लिए पोर्ट 25575 पर कभी न खोलें, क्योंकि यह प्लेनटेक्स्ट में भेजा गया एक पासवर्ड है।