VPS లో Minecraft సర్వర్ ఎలా హోస్ట్ చేయాలి
Ubuntu 24.04 VPS పై Paper Minecraft సర్వర్ సెటప్: RAM సైజింగ్, Java 21, systemd unit, పోర్ట్ 25565 ఫైర్వాల్ కాన్ఫిగ్, బ్యాకప్లు మరియు వచ్చే ఎర్రర్లు కవర్ చేయబడ్డాయి.
మీరు నిర్మించేది ఏమిటి
నిలిచి ఉండే ఒక Minecraft Java Edition సర్వర్: Ubuntu 24.04 పై Paper, systemd కింద Restart=on-failure తో ఒక ప్రత్యేక minecraft యూజర్ గా నడుస్తుంది, వైట్లిస్ట్ ఆన్ చేయబడి ఉంటుంది, మీ ప్లేయర్లు, JVM మధ్య ఉన్న రెండు ఫైర్వాల్లలోనూ పోర్ట్ 25565 ఓపెన్గా ఉంటుంది, మరియు వాటిని రక్షించడానికి ఉన్న ప్రపంచాన్ని పాడుచేయని విధంగా బ్యాకప్లు తీసుకోబడతాయి. సర్వర్ అనేది ఒక jar మరియు ఒక java కమాండ్; మీ స్నేహితులు ఒక సంవత్సరం పాటు ఆడే సర్వర్ను, మొదటి వారాంతంలోనే కుప్పకూలిపోయే సర్వర్ను వేరు చేసేదంతా ఆ కమాండ్ చుట్టూనే ఉంటుంది, మరియు అదే ఈ గైడ్ కవర్ చేస్తుంది.
మీరు డబ్బు ఖర్చు చేయడానికి ముందు రెండు నిజాయితీ హెచ్చరికలు. మొదట, Minecraft అనేది మెమరీ-హంగ్రీ మరియు ఎక్కువగా సింగిల్-థ్రెడెడ్: 1 GB VPS ఒక ప్లేబుల్ సర్వర్ను నడపదు, మరియు ఒక వేగవంతమైన కోర్ నాలుగు నెమ్మదైన కోర్ల కంటే మెరుగైనది. రెండవది, ఇది Java Edition. Bedrock ప్లేయర్లు — కన్సోల్లు, ఫోన్లు, Windows Bedrock యాప్ — Java సర్వర్లో చేరలేరు; Bedrock కి UDP 19132 పై వేరే సర్వర్ సాఫ్ట్వేర్ అవసరం, లేదా Geyser ప్లగిన్ అవసరం, అది ఇక్కడ స్కోప్ కంటే బయట ఉంది.
మీకు root లేదా sudo తో కూడిన కొత్త Ubuntu 24.04 KVM VPS అవసరం, మరియు దాదాపు ముప్పై నిమిషాలు పడుతుంది.
సైజింగ్: స్నేహితుల సర్వర్కు నిజంగా ఏమి అవసరం
RAM అనేది ముఖ్యమైన అంశం. వాస్తవ అంకెలు modpack ఫోరమ్లు సూచించే విలువల కంటే తక్కువగా ఉంటాయి:
- 2 GB సాధారణ వ్యూ డిస్టెన్స్తో 2–5 మంది ప్లేయర్ల కోసం vanilla ని నడుపుతుంది. ఆడవచ్చు, కానీ ఎక్కువ స్థలం మిగలదు.
- 4 GB స్నేహితుల సర్వర్కు సరైన పరిమాణం: కొన్ని ప్లగిన్లతో Paper మీద దాదాపు పది మంది ప్లేయర్ు ఒకేసారి ఆడవచ్చు, మరియు OS కోసం స్థలం మిగులుతుంది.
- 8 GB మరియు అంతకంటే ఎక్కువ modpack మరియు 20 లేదా అంతకంటే ఎక్కువ మంది ప్లేయర్ల పరిధికి చెందినది. ఇక్కడ సింగిల్-కోర్ CPU వేగం కూడా ముఖ్యం, ఎందుకంటే ప్రధాన గేమ్ లూప్ ఒకే థ్రెడ్లో నడుస్తుంది.
ప్లేయర్లు అన్వేషించినప్పుడు ప్రపంచం డిస్క్లో పెరుగుతుంది. బాగా ఆడిన ఒక సర్వైవల్ ప్రపంచం కొన్ని గిగాబైట్లను చేరుకుంటుంది. కాబట్టి ప్రపంచానికీ దాని బ్యాకప్లకూ అదనపు స్థలం కల్పించండి.
Vanilla లేదా Paper? Paper అనేది అధికారిక jar కి ప్రత్యక్ష ప్రత్యామ్నాయం. ప్రపంచాలు ఒకేలా ఉంటాయి, క్లయింట్లు ఒకేలా ఉంటాయి, క్లయింట్-సైడ్ మోడ్లు అవసరం లేదు. ఇది అత్యంత నెమ్మదైన సర్వర్ మార్గాలను మార్చుతుంది — చంక్ లోడింగ్, ఎంటిటీ టికింగ్, హాపర్లు — మరియు ఒక ప్లగిన్ API ని జోడిస్తుంది. vanilla ని ఉపయోగించడానికి ఒకే ఒక్క కారణం ఏమిటంటే, మీకు టెక్నికల్ 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 ను అందించే ప్రదేశాలు కేవలం రెండు మాత్రమే ఉండాలి: వనిలా కోసం 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'సరైన ఫలితం: minecraft యాజమాన్యంలో దాదాపు 50 MB పరిమాణంతో ఒక server.jar, దీనిని 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 (మీ సరైన in-game యూజర్నేమ్) టైప్ చేయండి, సర్వర్ మిమ్మల్ని 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 knowonline-mode=true సర్వర్ను ప్రతి చేరే యూజర్నేమ్ను Mojang సెషన్ సర్వర్లతో ధృవీకరించేలా చేస్తుంది. దీనివల్ల ఆటగాడు ఆ ఖాతాను కలిగి ఉన్నాడని నిరూపితమవుతుంది. దీన్ని false కు సెట్ చేయడం — అంటే "cracked server" టోగుల్ — అంటే సర్వర్ ఏ క్లయింట్ చెప్పిన పేరును అలాగే అంగీకరిస్తుంది: ఎవరైనా ఏ పేరుతో అయినా చేరవచ్చు, మీ పేరుతో కూడా, మరియు ops మరియు whitelists పేరు ఆధారంగా పనిచేస్తాయి కాబట్టి, ఒక అభిమాని మీ ఆపరేటర్ అనుమతులతో లోపలికి వస్తాడు. దీనిని false గా ఉంచడానికి ఉన్న ఏకైక సరైన కారణం, Velocity లాంటి ధృవీకరణ ప్రాక్సీ వెనుక ఉంచడం. అది ఆటగాళ్లను స్వయంగా ధృవీకరిస్తుంది. సాధారణ సర్వర్లో ఇది true గానే ఉంటుంది, మాట అంతే.
view-distance ఆ ఫైలులో అతిపెద్ద పెర్ఫార్మెన్స్ లివర్ — CPU మరియు RAM ఖర్చు దాని వర్గానికి దాదాపు అనుపాతంలో పెరుగుతుంది. 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 కిల్లర్ ఆ సిస్టమ్లో అతిపెద్ద ప్రాసెస్ను ఎంచుకుంటుంది. అది 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 unit
మీరు మాన్యువల్గా ప్రారంభించిన సర్వర్ మీ 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) ను చూపుతుంది. ఇప్పుడు సర్వర్ కన్సోల్ అవుట్పుట్ను జర్నల్ కలిగి ఉంటుంది. అది మళ్లీ Done వరుస వద్ద ముగుస్తుంది.
ఆ unit లో రెండు ఉద్దేశపూర్వక ఎంపికలు ఉన్నాయి. Restart=on-failure క్రాష్ తర్వాత సర్వర్ను తిరిగి తీసుకువస్తుంది. కానీ ఒక క్లీన్ stop తర్వాత కాదు. కాబట్టి నిర్వహణ మాత్రమే సాధ్యమవుతుంది. TimeoutStopSec=120 ఊహించినదానికంటే ఎక్కువ ముఖ్యమైనది: systemctl stop అనేది SIGTERM ను పంపుతుంది. Minecraft సర్వర్ దాన్ని స్వీకరించి, నిష్క్రమించే ముందు ప్రతి ప్రపంచాన్ని సేవ్ చేస్తుంది. పెద్ద ప్రపంచంలో ఆ సేవ్కు సమయం పడుతుంది. Systemd యొక్క డిఫాల్ట్ టైమౌట్ సేవ్ మధ్యలో JVM కి SIGKILL పంపకలుగుతుంది. అదే ప్రాంత ఫైళ్లు పాడవడానికి కారణం. దానికి రెండు నిమిషాలు ఇవ్వండి.
సర్వీస్ ఆనాఫోనం అయితే, జర్నల్ ఇది చూపుతుంది:
[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 ప్రొవైడర్లు కంట్రోల్ ప్యానెల్లో రెండవ, నెట్వర్క్-స్థాయి ఫైర్వాల్ను నడుపుతారు, మరియు అదే ప్రజలు మర్చిపోయేది. అక్కడ కూడా 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.
దశ 9: వైట్లిస్ట్, ఎందుకంటే అంతర్జాలం పోర్ట్ 25565 ను కనుగొంటుంది
Minecraft సర్వర్ను అంతర్జాలానికి తెరిచి ఉంచడం ఊహాత్మక ప్రమాదం కాదు. భారీ స్కానర్లు నిరంతరం మొత్తం IPv4 స్పేస్లో పోర్ట్ 25565 కోసం శోధిస్తూ ఉంటాయి. ఔత్సాహిక గ్రీఫింగ్ ప్రాజెక్ట్లు ఈ విధంగా లక్షలాది ఓపెన్ సర్వర్లను మ్యాప్ చేశాయి. వైట్లిస్ట్ లేని సర్వర్కు రోజుల్లో, కొన్నిసార్లు గంటల్లో ఆహ్వానం లేని సందర్శకులు వస్తారు. దశ 5 నుండి వైట్లిస్ట్ పరిష్కారం. online-mode=true గుర్తింపును నిరూపిస్తుంది. వైట్లిస్ట్ మీరుంచుకున్న గుర్తింపులకు మాత్రమే ప్రవేశాన్ని పరిమితం చేస్తుంది. ఈ జంటే మొత్తం భద్రతా నమూనా. స్నేహితుల సర్వర్కు అది సరిపోతుంది.
గేమ్ లేకుండా కన్సోల్ ప్రవేశానికి — స్క్రిప్టెడ్ బ్యాకప్లు, cron job — server.properties లో RCON ను ప్రారంభించండి (enable-rcon=true, బలమైన rcon.password, పోర్ట్ 25575). VPS పై దాని GitHub సోర్స్ నుండి చిన్న mcrcon క్లయింట్ను బిల్డ్ చేయండి. అది Ubuntu రెపోలలో లేదు. ఏ ఫైర్వాల్లోనూ 25575 ను తెరవవద్దు. RCON పాస్వర్డ్ను క్లియర్టెక్స్ట్లో పంపుతుంది. కాబట్టి అది లూప్బ్యాక్-మాత్రమే అవుతుంది.
దశ 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 గా విభజిస్తుంది; ఒక వనిల్లా సర్వర్ ప్రతిదీ world లో ఉంచుతుంది, కాబట్టి అక్కడ మిగిలిన రెండింటినీ వదిలేయండి.)
Save-off లైవ్గా బ్యాకప్ తీస్తుంది: RCON ద్వారా, save-off జారీ చేయండి (ఆటోసేవర్ను ఆపండి), తర్వాత save-all flush (ప్రతిదీ డిస్క్కి బలవంతంగా పంపి వేచి ఉండండి), tar తీసుకోండి, తర్వాత save-on. ఇది ఉదయం 5 గంటలకు cron లో ఉంచాల్సిన వెర్షన్.
ఏ విధంగానైనా, సర్వర్ వలె అదే VPS లో ఉన్న బ్యాకప్ అనేది బ్యాకప్ కాదు — scp లేదా rclone ఆర్కైవ్లను ఆ పెట్టె నుండి బయటకు పంపండి, మరియు ఒకటి కంటే ఎక్కువ ఉంచండి. మరియు ఏదైనా పాడైనప్పుడు మీరు కన్సోల్ వైపు చూడనందున, పోర్ట్పై బాహ్య తనిఖీని ఉంచండి: మరొక పెట్టెలో Uptime Kuma 25565 కి వ్యతిరేకంగా TCP తనిఖీ చేయడం ద్వారా మీ ఆటగాళ్లకు ముందే సర్వర్ డౌన్ అయిందని మీకు తెలియజేస్తుంది.
ప్లగిన్లు మరియు అప్గ్రేడ్లు
Paperలో, ప్లగిన్ అంటే /opt/minecraft/plugins/ లోకి చేర్చిన jar ఫైల్, తర్వాత సర్వర్ను రీస్టార్ట్ చేయడం — ఇదే పూర్తి ఇన్స్టాలేషన్. ప్లగిన్లను కేవలం వాటి అధికారిక ప్రాజెక్ట్ పేజీలు (Hangar, Modrinth, SpigotMC) నుండి మాత్రమే పొందండి. దీనికి కారణం సర్వర్ jar వలె ఒకే సూత్ర: ప్రతి ప్లగిన్ minecraft యూజర్గా నడుస్తున్న ఏదైనా కోడ్.
సర్వర్ను అప్గ్రేడ్ చేయడం అంటే: ఆపు, బ్యాకప్ తీయు, కొత్త Minecraft వర్షన్ కోసం వచ్చిన బిల్డ్తో server.jar ను భర్తీ చేయు, ప్రారంభించు. రెండు జాగ్రత్తలు. ప్రపంచ అప్గ్రేడ్లు ఒకే దిశలో సాగుతాయి — కొత్త వర్షన్తో తెరిచిన ప్రపంచం పాత వర్షన్లో తెరుచుకోదు, ఇది బ్యాకప్ల పనికి మరొక అవసరం. మరియు ప్లగిన్లు తరచుగా కొత్త Minecraft విడుదల కంటే రోజులు లేదా వారాల ఆలస్యంతో వస్తాయి, కాబట్టి మొదటి రోజే విడుదల వెంటనే వెళ్ళే ముందు అనుకూలతను తనిఖీ చేయండి.
దీనంతటినీ మీరు కంటైనర్గా నిర్వహించాలనుకుంటే — వర్షన్ పిన్నింగ్, EULA ఆమోదం, మరియు మెమరీ ఫ్లాగ్లను ఎన్విరాన్మెంట్ వేరియబుల్స్గా — విస్తృతంగా ఉపయోగించే itzg/minecraft-server ఇమేజ్ అదే Paper సర్వర్ను మీ VPSలో Docker Compose కింద ఒకే ఫైర్వాల్ మరియు బ్యాకప్ విధానంతో నడుపుతుంది.
FAQ
మైన్క్రాఫ్ట్ సర్వర్కు ఎంత RAM అవసరం?
2 GB అనేది 2–5 మంది ఆటగాళ్ల కోసం వనిల్లాను నడుపుతుంది; 4 GB అనేది కొన్ని ప్లగిన్లతో పది మంది స్నేహితుల సర్వర్కు సరిపోతుంది; మోడ్ప్యాక్లు మరియు 20 లేదా అంతకంటే ఎక్కువ మంది ఆటగాళ్లకు 8 GB లేదా అంతకంటే ఎక్కువ అవసరం. VPS పరిమాణం ఏదైనా సరే, -Xmx విలువను మొత్తం RAM కంటే 1 GB తక్కువకు పరిమితం చేయండి — JVM హీప్కు మించి మెమరీని ఉపయోగిస్తుంది, మరియు పరిమితి దాటడం వలన Error: Could not reserve enough space for object heap లేదా నిశ్శబ్ద OOM kill సంభవిస్తుంది.
నా స్నేహితులు నా మైన్క్రాఫ్ట్ సర్వర్కు ఎందుకు కనెక్ట్ కాలేకుంటున్నారు?
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 పేరుతో కూడా, వారి అనుమతులను వారసత్వంగా పొందుతారు — మరియు స్కిన్లు, స్థిరమైన UUIDలు పనిచేయడం మానేస్తాయి. ఏకైక సరైన ఉపయోగం Velocity వంటి ప్రామాణీకరణ ప్రాక్సీ వెనుక ఉండటం, అది ఆటగాళ్లను స్వయంగా ధృవీకరిస్తుంది. సాధారణ సర్వర్కు అది true గానే ఉంటుంది.
Paper అనేది వనిల్లా మైన్క్రాఫ్ట్ సర్వర్ కంటే మెరుగైనదా?
దాదాపు ప్రతి ఒక్కరికీ, అవును: Paper అనేది డ్రాప్-ఇన్ jar గా పనిచేస్తుంది, వనిల్లా ప్రపంచాలను లోడ్ చేస్తుంది, మార్పు చేయని క్లయింట్లను అంగీకరిస్తుంది, ఎంటిటీలను టిక్ చేస్తుంది మరియు చంక్లను చాలా ఎఫిషియంట్గా లోడ్ చేస్తుంది, మరియు ప్లగిన్ ఎకోసిస్టమ్ను జోడిస్తుంది. మినహాయింపు టెక్నికల్-రెడ్స్టోన్ కమ్యూనిటీలు, అవి బిట్-ఎక్జాక్ట్ వనిల్లా ప్రవర్తన అవసరం, దానిని కొన్ని Paper ఆప్టిమైజేషన్లు మారుస్తాయి. చిన్న VPSలో, Paper ఎఫిషియంసీ అనేది వాస్తవానికి ఉచిత అదనపు RAM వంటిది.
మైన్క్రాఫ్ట్ ప్రపంచాన్ని పాడుచేయకుండా నేను ఎలా బ్యాకప్ చేయగలను?
సర్వర్ ప్రపంచ డైరెక్టరీకి రాస్తున్నప్పుడు దానిను ఎప్పుడూ ఆర్కైవ్ చేయవద్దు — రీజిన్-ఫైల్ రైట్తో పోటీపడుతున్న కాపీ పాడైన చంక్లను సృష్టిస్తుంది, అవి రిస్టోర్ సమయంలో మాత్రమే కనిపిస్తాయి. సర్వర్ను ఆపండి, ప్రపంచ డైరెక్టరీలను tar చేయండి, మరియు దానిని మళ్లీ ప్రారంభించండి, లేదా save-off, save-all flush, tar, save-on తో RCON ద్వారా దానిని లైవ్గా ఉంచండి. తర్వాత ఆర్కైవ్ను VPS నుండి బయటకు తరలించండి.