Ubuntu 24.04లో Minecraft సర్వర్ హోస్ట్ చేయడం ఎలా?
Ubuntu 24.04 VPSలో Paper Minecraft సర్వర్ సెటప్ చేయండి. Java 21, systemd యూనిట్, పోర్ట్ 25565 ఫైర్వాల్ కాన్ఫిగరేషన్ మరియు డేటా భద్రత కోసం బ్యాకప్ పద్ధతులను ఈ గైడ్ వివరిస్తుంది.
మీరు ఏమి నిర్మిస్తున్నారు
నిరంతరం అందుబాటులో ఉండే Minecraft Java Edition సర్వర్: Ubuntu 24.04 పై Paper, systemd కింద ప్రత్యేక minecraft వినియోగదారుగా Restart=on-failure తో నడుస్తుంది. వైట్లిస్ట్ ఆన్లో ఉంటుంది, మీ ప్లేయర్లకు మరియు 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 అనేది ముఖ్యమైన సంఖ్య, మరియు మోడ్ప్యాక్ ఫోరమ్లు సూచించే దానికంటే వాస్తవ గణాంకాలు తక్కువగా ఉంటాయి:
- 2 GB: 2–5 మంది ఆటగాళ్ల కోసం సాధారణ (vanilla) సర్వర్ను తక్కువ వ్యూ డిస్టెన్స్తో నడుపుతుంది. ఇది ఆడేందుకు వీలుగా ఉంటుంది, కానీ అదనపు సామర్థ్యం ఉండదు.
- 4 GB: స్నేహితుల సర్వర్కు ఇది అనువైన పరిమాణం: సుమారు పది మంది ఆటగాళ్లు Paper పై కొన్ని ప్లగిన్లతో ఆడుకోవచ్చు, మరియు OS కోసం తగినంత మెమరీ మిగిలి ఉంటుంది.
- 8 GB మరియు అంతకంటే ఎక్కువ: ఇది మోడ్ప్యాక్లు మరియు 20 మంది కంటే ఎక్కువ ఆటగాళ్లు ఉన్నప్పుడు అవసరం. ఇక్కడ మీరు సింగిల్-కోర్ CPU వేగంపై కూడా దృష్టి పెట్టాలి, ఎందుకంటే ప్రధాన గేమ్ లూప్ ఒకే త్రెడ్పై నడుస్తుంది.
ఆటగాళ్లు ప్రపంచాన్ని అన్వేషించే కొద్దీ డిస్క్లో డేటా పెరుగుతుంది. బాగా అన్వేషించిన సర్వైవల్ వరల్డ్ కొన్ని గిగాబైట్ల వరకు చేరుకుంటుంది, కాబట్టి వరల్డ్ మరియు దాని బ్యాకప్ల కోసం అదనపు స్థలాన్ని ఉంచండి.
Vanilla లేదా Paper? అధికారిక jar ఫైల్కు Paper ఒక ప్రత్యామ్నాయం: అదే వరల్డ్స్, అదే క్లయింట్లు, క్లయింట్-సైడ్ మోడ్స్ ఏవీ అవసరం లేదు. ఇది సర్వర్లోని నెమ్మదైన మార్గాలను, చంక్ లోడింగ్, ఎంటిటీ టికింగ్, హాప్పర్లను తిరిగి రాస్తుంది మరియు ప్లగిన్ APIని జోడిస్తుంది. Paper యొక్క ఆప్టిమైజేషన్ల వల్ల మారే టెక్నికల్ రెడ్స్టోన్ ఫామ్ల కోసం మీకు ఖచ్చితమైన vanilla మెకానిక్స్ అవసరమైతే తప్ప, vanilla రన్ చేయడానికి వేరే కారణం లేదు; మిగిలిన వారందరికీ, Paper తక్కువ మెమరీతో ఎక్కువ మంది ఆటగాళ్లను అనుమతిస్తుంది. కింద ఉన్నవన్నీ రెండింటికీ పనిచేస్తాయి.
Step 1: Java 21ని ఇన్స్టాల్ చేయడం
Minecraft 1.20.5 మరియు ఆ తర్వాత వచ్చిన ప్రతి విడుదల (అన్ని 1.21.x వెర్షన్లు) Java 21ని కోరుతాయి. Ubuntu 24.04 దీనిని డిఫాల్ట్ రిపోజిటరీలలో అందిస్తుంది. సర్వర్కు అవసరం లేని డెస్క్టాప్ లైబ్రరీలను వదిలేసి, హెడ్లెస్ బిల్డ్ను ఇన్స్టాల్ చేయండి:
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ని మళ్లీ రన్ చేయండి.
Step 2: ఒక ప్రత్యేక వినియోగదారు, ఎప్పుడూ root కాదు
సర్వర్ ప్లగిన్ కోడ్ను అమలు చేస్తుంది మరియు పోర్ట్ను చేరుకోగల ఎవరి నుండైనా నెట్వర్క్ ఇన్పుట్ను పార్స్ చేస్తుంది. ఒకవేళ ఏదైనా పొరపాటు జరిగితే, rootగా నడుస్తున్న ఒక బ్రీచ్ మీ VPSని పూర్తిగా తన ఆధీనంలోకి తీసుకుంటుంది; అదే minecraftగా నడుస్తున్నట్లయితే, అది కేవలం ఒక గేమ్ వరల్డ్ను మాత్రమే ప్రభావితం చేస్తుంది.
sudo adduser --system --group --home /opt/minecraft minecraft--system ఒక పాస్వర్డ్ లేని ఖాతాను సృష్టిస్తుంది, ఇది SSH ద్వారా లాగిన్ అవ్వలేదు, దీనికి /opt/minecraft హోమ్ మరియు వర్కింగ్ డైరెక్టరీగా ఉంటుంది. ఇకపై సర్వర్ను తాకే ప్రతి కమాండ్ ఈ వినియోగదారుగానే రన్ అవుతుంది.
Step 3: అధికారిక మూలం నుండి సర్వర్ jar ఫైల్ను డౌన్లోడ్ చేయండి
సర్వర్ jar ఫైల్ను కేవలం రెండు చోట్ల నుండి మాత్రమే పొందాలి: వనిల్లా (vanilla) కోసం minecraft.net లోని అధికారిక సర్వర్ డౌన్లోడ్ పేజీ, మరియు Paper కోసం papermc.io లోని డౌన్లోడ్ పేజీ. సర్వర్ jar ఫైళ్లను రీప్యాక్ చేసే థర్డ్-పార్టీ "డౌన్లోడ్ హబ్లు" మాల్వేర్ను వ్యాప్తి చేయడానికి దీర్ఘకాలంగా వాడుతున్న మార్గాలు. సర్వర్ jar అనేది మీరు ఇంటర్నెట్కు అనుసంధానించబడిన సర్వర్లో 24/7 రన్ చేయబోయే ఒక ఆర్బిట్రరీ కోడ్ (arbitrary code).
అధికారిక పేజీ నుండి ప్రస్తుత బిల్డ్ యొక్క డౌన్లోడ్ లింక్ను కాపీ చేయండి (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 తో నిర్ధారించాలి.
Step 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 అని టైప్ చేయండి.
Step 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 అన్నీ పేర్ల ఆధారంగానే పనిచేస్తాయి కాబట్టి, వేరొకరు మీ పేరుతో వచ్చి మీ ఆపరేటర్ పర్మిషన్లను పొందే ప్రమాదం ఉంది. Velocity వంటి అథెంటికేటింగ్ ప్రాక్సీని వాడుతున్నప్పుడు మాత్రమే దీన్ని false గా ఉంచడం సమంజసం, ఎందుకంటే ఆ ప్రాక్సీ ప్లేయర్లను స్వయంగా వెరిఫై చేస్తుంది. సాధారణ సర్వర్లో ఇది ఎల్లప్పుడూ true గానే ఉండాలి.
view-distance అనేది ఫైల్లో పనితీరును ప్రభావితం చేసే అతి ముఖ్యమైన అంశం. దీని విలువ పెరిగేకొద్దీ CPU మరియు RAM వినియోగం గణనీయంగా పెరుగుతుంది. VPS కోసం 8 అనేది సరైన డిఫాల్ట్; 10 అనేది సాధారణ సర్వర్ డిఫాల్ట్, కానీ ఇది ఎక్కువ వనరులను తీసుకుంటుంది.
white-list=true మరియు enforce-whitelist=true సర్వర్ను అపరిచితులకు అందుబాటులో లేకుండా చేస్తాయి. భద్రతా విభాగంలో చర్చించినట్లుగా, ఇది తప్పనిసరి. ప్లేయర్లను ఆపరేటర్లుగా చేర్చడానికి గేమ్లో /whitelist add TheirName కమాండ్ను ఉపయోగించండి.
Step 6: మెమరీ ఫ్లాగ్లు, -Xms మరియు -Xmx ఎందుకు సమానంగా ఉండాలి
JVM తన హీప్ను -Xms (ప్రారంభ పరిమాణం) మరియు -Xmx (గరిష్ట పరిమాణం) మధ్య కేటాయిస్తుంది. డెడికేటెడ్ గేమ్ సర్వర్లో, వీటిని ఒకే విలువకు సెట్ చేయండి: హీప్ ఎలాగూ గరిష్ట పరిమాణానికి చేరుకుంటుంది, కాబట్టి దశలవారీగా పెంచడం వల్ల ఆట సమయంలో గార్బేజ్ కలెక్టర్ పనిభారం పెరుగుతుంది. 4 GB VPSలో సరైన జత ఇది:
/usr/bin/java -Xms3G -Xmx3G -jar server.jar nogui-Xmx అనేది ప్రాసెస్ ఉపయోగించే మొత్తం మెమరీ కాదు. JVM హీప్ వెలుపల అదనపు మెమరీని (off-heap overhead), థ్రెడ్ స్టాక్లు, 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 హీప్లో దీని వల్ల కలిగే ప్రయోజనం తక్కువగా ఉన్నప్పటికీ, ఈ ఫ్లాగ్ల వల్ల ఎటువంటి హాని ఉండదు.
Step 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 లైన్ వద్ద ముగుస్తుంది.
ఆ యూనిట్లో రెండు ఉద్దేశపూర్వక ఎంపికలు ఉన్నాయి. Restart=on-failure సర్వర్ క్రాష్ అయినప్పుడు దానిని తిరిగి ప్రారంభిస్తుంది, కానీ సాధారణ stop తర్వాత కాదు, దీనివల్ల నిర్వహణ పనులు సాధ్యమవుతాయి. మరియు TimeoutStopSec=120 చూడటానికి చిన్నదిగా అనిపించినా చాలా ముఖ్యమైనది: systemctl stop అనేది SIGTERM ను పంపుతుంది, Minecraft సర్వర్ దానిని స్వీకరించి నిష్క్రమించే ముందు ప్రతి ప్రపంచాన్ని (world) సేవ్ చేస్తుంది, పెద్ద ప్రపంచం అయితే ఈ సేవ్ ప్రక్రియకు సమయం పడుతుంది. Systemd యొక్క డిఫాల్ట్ టైమ్-అవుట్, సేవ్ జరుగుతున్నప్పుడే JVM ను SIGKILL చేయవచ్చు, దీనివల్ల రీజియన్ ఫైల్స్ పాడవుతాయి. దీనికి రెండు నిమిషాల సమయం ఇవ్వండి.
ఒకవేళ సర్వీస్ పదేపదే ఆగిపోతూ (flapping) ఉండి, జర్నల్లో ఇలా కనిపిస్తే:
[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లో ఉన్నప్పుడే, అదే బాక్స్లో SSH పబ్లిక్ IPపై రన్ అవుతుంటుంది, కాబట్టి కొన్ని గంటల్లోనే బ్రూట్-ఫోర్స్ లాగ్ నాయిస్ మొదలవుతుంది, కాబట్టి మర్చిపోకముందే Ubuntu 24.04లో SSH కోసం Fail2banని సెటప్ చేయండి.
ఇప్పుడు కనెక్ట్ అవ్వండి: Multiplayer, Direct Connection, ఆపై సర్వర్ IPని ఎంటర్ చేయండి. మీరు స్టెప్ 4లో మిమ్మల్ని మీరు opగా చేసుకున్నారు కాబట్టి, ఇన్-గేమ్ కమాండ్లు వెంటనే పనిచేస్తాయి, ప్రతి ప్లేయర్కు /whitelist add FriendName ఉపయోగించండి, ఒకవేళ అదే ప్లాన్ అయితే /gamemode creative ఉపయోగించండి.
Step 9: వైట్లిస్ట్, ఎందుకంటే ఇంటర్నెట్ 25565 పోర్ట్ను గుర్తిస్తుంది
Minecraft సర్వర్ను ఇంటర్నెట్కు అందుబాటులో ఉంచడం అనేది కేవలం ఊహాజనిత ప్రమాదం కాదు: మాస్ స్కానర్లు నిరంతరం మొత్తం IPv4 స్పేస్లో 25565 పోర్ట్ కోసం వెతుకుతుంటాయి. హాబీగా గ్రీఫింగ్ చేసే ప్రాజెక్ట్లు ఈ పద్ధతి ద్వారా లక్షలాది ఓపెన్ సర్వర్లను మ్యాప్ చేశాయి. వైట్లిస్ట్ లేని సర్వర్కు కొన్ని రోజుల్లోనే, కొన్నిసార్లు గంటల్లోనే ఆహ్వానించని వ్యక్తులు వస్తారు. స్టెప్ 5లో పేర్కొన్న వైట్లిస్ట్ దీనికి పరిష్కారం: online-mode=true గుర్తింపును నిర్ధారిస్తుంది, వైట్లిస్ట్ మీరు ఎంచుకున్న గుర్తింపులకు మాత్రమే ప్రవేశాన్ని పరిమితం చేస్తుంది. ఈ రెండూ కలిపి పూర్తి భద్రతా నమూనాను ఏర్పరుస్తాయి, ఇది స్నేహితుల సర్వర్ కోసం సరిపోతుంది.
గేమ్ లేకుండా కన్సోల్ యాక్సెస్ కోసం, స్క్రిప్ట్ చేసిన బ్యాకప్ల కోసం, లేదా cron జాబ్ కోసం, server.propertiesలో RCONను ఎనేబుల్ చేయండి (enable-rcon=true, బలమైన rcon.password, 25575 పోర్ట్). దీని కోసం చిన్న mcrcon క్లయింట్ను VPSలోనే దాని GitHub సోర్స్ నుండి బిల్డ్ చేయండి; ఇది Ubuntu రిపోజిటరీలలో అందుబాటులో లేదు. ఎట్టి పరిస్థితుల్లోనూ ఫైర్వాల్లో 25575 పోర్ట్ను ఓపెన్ చేయవద్దు: RCON పాస్వర్డ్ను క్లియర్టెక్స్ట్లో పంపుతుంది, కాబట్టి ఇది కేవలం లూప్బ్యాక్ (loopback) ద్వారా మాత్రమే పనిచేయాలి.
Step 10: ప్రపంచాన్ని పాడుచేయని బ్యాకప్లు
ఒక నియమం: సర్వర్ డేటాను రాస్తున్నప్పుడు వరల్డ్ డైరెక్టరీని ఎప్పుడూ కాపీ చేయవద్దు. ఆట ఆడుతున్నప్పుడు రీజియన్ ఫైళ్లు నిరంతరం తిరిగి రాయబడుతుంటాయి; రైట్తో పోటీ పడే tar సగం రాసిన చంక్లతో కూడిన ఆర్కైవ్ను సృష్టిస్తుంది. మీరు దానిని పునరుద్ధరించినప్పుడు, బ్యాకప్ పని చేయాల్సిన సమయంలో, లాగ్లో చంక్-లోడింగ్ లోపాలు కనిపిస్తాయి మరియు భూభాగంలో రంధ్రాలు ఏర్పడతాయి. దీనిని నివారించడానికి రెండు పద్ధతులు ఉన్నాయి.
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 గా విభజిస్తుంది; ఒక వనిల్లా సర్వర్ ప్రతిదీ 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 యూజర్గా రన్ అయ్యే ఒక ఆర్బిట్రరీ కోడ్ (arbitrary code).
సర్వర్ను అప్గ్రేడ్ చేసే విధానం: సర్వర్ను ఆపండి, బ్యాకప్ తీసుకోండి, server.jarని కొత్త Minecraft వెర్షన్ బిల్డ్తో భర్తీ చేయండి, ఆపై సర్వర్ను ప్రారంభించండి. రెండు జాగ్రత్తలు గమనించండి. వరల్డ్ అప్గ్రేడ్లు వన్-వే (one-way) ప్రక్రియలు; కొత్త వెర్షన్లో ఓపెన్ చేసిన వరల్డ్ పాత వెర్షన్లో ఓపెన్ అవ్వదు, అందుకే బ్యాకప్లు అవసరం. అలాగే, కొత్త Minecraft రిలీజ్ వచ్చినప్పుడు ప్లగిన్లు అప్డేట్ అవ్వడానికి కొన్ని రోజులు లేదా వారాలు పట్టవచ్చు, కాబట్టి రిలీజ్ వచ్చిన మొదటి రోజే అప్డేట్ చేసే ముందు వాటి అనుకూలతను (compatibility) తనిఖీ చేయండి.
మీరు వీటన్నింటినీ కంటైనర్గా నిర్వహించాలనుకుంటే, వెర్షన్ పిన్నింగ్ (version pinning), EULA అంగీకారం, మరియు మెమరీ ఫ్లాగ్లను ఎన్విరాన్మెంట్ వేరియబుల్స్గా సెట్ చేయవచ్చు. విస్తృతంగా ఉపయోగించే itzg/minecraft-server ఇమేజ్, అదే Paper సర్వర్ను మీ VPSలో Docker Compose ద్వారా రన్ చేస్తుంది. దీనికి కూడా అదే ఫైర్వాల్ మరియు బ్యాకప్ నిబంధనలు వర్తిస్తాయి.
FAQ
Minecraft సర్వర్కు ఎంత RAM అవసరం?
2 GB RAM తో 2–5 మంది ఆటగాళ్లతో కూడిన వనిల్లా (vanilla) సర్వర్ను నడపవచ్చు; సుమారు పది మంది స్నేహితులు ఆడే Paper సర్వర్ మరియు కొన్ని ప్లగిన్ల కోసం 4 GB సరిపోతుంది; మోడ్ప్యాక్లు మరియు 20 మంది కంటే ఎక్కువ మంది ఆటగాళ్లు ఉన్నట్లయితే 8 GB లేదా అంతకంటే ఎక్కువ అవసరం. VPS పరిమాణం ఏదైనప్పటికీ, -Xmx విలువను మొత్తం RAM నుండి 1 GB తగ్గించి సెట్ చేయండి. JVM హీప్ (heap) కంటే ఎక్కువ మెమరీని ఉపయోగిస్తుంది, కాబట్టి పరిమితి దాటితే Error: Could not reserve enough space for object heap లోపం రావచ్చు లేదా సిస్టమ్ ఆటోమేటిక్గా ప్రాసెస్ను నిలిపివేస్తుంది (OOM kill).
నా స్నేహితులు నా Minecraft సర్వర్కు ఎందుకు కనెక్ట్ కాలేకపోతున్నారు?
క్లయింట్ కనెక్షన్ Connection timed out: no further information వద్ద ఆగిపోతుందంటే, అది దాదాపు ఎల్లప్పుడూ ఫైర్వాల్ సమస్యే. ఇందులో రెండు రకాలు ఉంటాయి: VPSలో ఉండే ufw మరియు మీ ప్రొవైడర్ కంట్రోల్ ప్యానెల్లో ఉండే నెట్వర్క్ ఫైర్వాల్. ఈ రెండింటిలోనూ TCP 25565 పోర్ట్ ఓపెన్ అయి ఉండాలి. సర్వర్ నిజంగానే పోర్ట్ను లిజన్ (listen) చేస్తుందో లేదో తెలుసుకోవడానికి సర్వర్లో sudo ss -tlnp | grep 25565 కమాండ్ను ఉపయోగించండి, ఆపై బయటి నుండి పరీక్షించడానికి nc -vz your.server.ip 25565 ఉపయోగించండి.
నేను server.properties లో online-mode=false అని సెట్ చేయాలా?
వద్దు. online-mode=false సెట్ చేస్తే సర్వర్ Mojang అథెంటికేషన్ను పూర్తిగా దాటవేస్తుంది. దీనివల్ల ఎవరైనా ఏ యూజర్నేమ్తోనైనా సర్వర్లోకి రావచ్చు, ఒక ఆపరేటర్ పేరుతో వచ్చి వారి అనుమతులను పొందవచ్చు, మరియు స్కిన్లు, UUIDలు పాడవుతాయి. దీనిని కేవలం Velocity వంటి అథెంటికేటింగ్ ప్రాక్సీ వెనుక ఉన్నప్పుడు మాత్రమే ఉపయోగించాలి, ఎందుకంటే అవి ఆటగాళ్లను స్వయంగా ధృవీకరిస్తాయి. సాధారణ సర్వర్ కోసం ఇది ఎల్లప్పుడూ true గానే ఉండాలి.
వనిల్లా Minecraft సర్వర్ కంటే Paper మెరుగైనదా?
చాలామందికి, అవును: Paper అనేది వనిల్లా వరల్డ్లను లోడ్ చేసే మరియు మార్పులు చేయని క్లయింట్లను అనుమతించే ఒక డ్రాప్-ఇన్ జార్ (jar) ఫైల్. ఇది ఎంటిటీలను మరియు చంక్స్ను చాలా సమర్థవంతంగా ప్రాసెస్ చేస్తుంది మరియు ప్లగిన్ ఎకోసిస్టమ్ను జోడిస్తుంది. అయితే, బిట్-ఎగ్జాక్ట్ వనిల్లా ప్రవర్తన అవసరమయ్యే టెక్నికల్-రెడ్స్టోన్ కమ్యూనిటీలకు ఇది సరిపడకపోవచ్చు, ఎందుకంటే Paper చేసే కొన్ని ఆప్టిమైజేషన్లు వనిల్లా ప్రవర్తనను మారుస్తాయి. చిన్న VPSలో, Paper యొక్క సామర్థ్యం అదనపు RAM ఉన్నంత ప్రయోజనాన్ని ఇస్తుంది.
సర్వర్ డేటా పాడవకుండా Minecraft వరల్డ్ను బ్యాకప్ చేయడం ఎలా?
సర్వర్ వరల్డ్ డైరెక్టరీకి డేటాను రాస్తున్నప్పుడు దానిని ఎప్పుడూ ఆర్కైవ్ చేయకండి. సర్వర్ రాస్తున్న సమయంలోనే కాపీ చేయడం వల్ల వరల్డ్ చంక్స్ పాడవుతాయి, ఇది మీరు రీస్టోర్ చేసేటప్పుడు మాత్రమే తెలుస్తుంది. సర్వర్ను ఆపివేసి, వరల్డ్ డైరెక్టరీలను tar చేసి, ఆపై సర్వర్ను తిరిగి ప్రారంభించండి. లేదా సర్వర్ రన్ అవుతున్నప్పుడే బ్యాకప్ చేయాలంటే RCON ద్వారా save-off, save-all flush, tar, save-on కమాండ్లను ఉపయోగించండి. ఆ తర్వాత ఆర్కైవ్ను VPS నుండి బయటకు తరలించండి.