SSD Nodes Learn Hosting plans →

Ubuntu 24.04-ல் Paper Minecraft Server அமைப்பது எப்படி?

Ubuntu 24.04 VPS-ல் Paper Minecraft server-ஐ Java 25 பயன்படுத்தி நிறுவும் முறை. RAM ஒதுக்கீடு, systemd சேவை அமைப்பு, ufw firewall 25565 port மற்றும் தரவு பாதுகாப்பு வழிமுறைகள்.

நீங்கள் உருவாக்குவது

Minecraft Java Edition server எப்போதும் இயங்கிக்கொண்டிருக்கும் வகையில் அமைத்தல்: Ubuntu 24.04-ல் Paper-ஐ இயக்குதல், இதை ஒரு பிரத்யேக minecraft user-ஆக systemd மூலம் நிர்வகித்தல், Restart=on-failure-ஐப் பயன்படுத்துதல், whitelist-ஐ ஆன் செய்தல், ufw மற்றும் உங்கள் provider-ன் network firewall-ல் port 25565-ஐத் திறத்தல், மற்றும் world கோப்புகள் சிதையாமல் இருக்க முறையான backup எடுத்தல். இந்த server ஒரு jar கோப்பு மற்றும் ஒரு java கட்டளையை அடிப்படையாகக் கொண்டது; உங்கள் நண்பர்கள் ஓராண்டு காலம் விளையாடும் ஒரு server-க்கும், முதல் வாரத்திலேயே செயலிழக்கும் server-க்கும் உள்ள வித்தியாசம் இந்த கட்டளையைச் சுற்றியே உள்ளது. இந்த வழிகாட்டி அதைப் பற்றியது.

பணம் செலவழிக்கும் முன் இரண்டு உண்மையான எச்சரிக்கைகள். முதலாவதாக, Minecraft அதிக நினைவகத்தை (memory) பயன்படுத்தும், மேலும் இது பெரும்பாலும் single-threaded முறையில் இயங்கும்: 1 GB VPS-ல் விளையாடக்கூடிய வகையில் server-ஐ இயக்க முடியாது, மேலும் நான்கு மெதுவான cores-ஐ விட ஒரு வேகமான core சிறந்தது. இரண்டாவதாக, இது Java Edition. Bedrock players, consoles, phones, மற்றும் Windows Bedrock app பயனர்கள் Java server-ல் இணைய முடியாது; Bedrock-க்கு UDP 19132-ல் வேறு server மென்பொருள் தேவை, அல்லது Geyser plugin தேவை, ஆனால் அது இந்த வழிகாட்டியின் எல்லைக்கு அப்பாற்பட்டது.

உங்களுக்கு root அல்லது sudo வசதி கொண்ட ஒரு புதிய Ubuntu 24.04 KVM VPS தேவை, மேலும் இதை முடிக்க சுமார் முப்பது நிமிடங்கள் ஆகும்.

அளவு நிர்ணயம்: நண்பர்களுக்கான server-க்கு உண்மையில் தேவைப்படுவது என்ன

RAM மட்டுமே முக்கியமான காரணி. modpack forum-களில் பரிந்துரைக்கப்படுவதை விட, நடைமுறைத் தேவை குறைவானதே:

  • 2 GB: 2–5 players விளையாடும் vanilla server-க்கு, மிதமான view distance-ல் இது போதுமானது. விளையாட முடியும், ஆனால் கூடுதல் வசதி இருக்காது.
  • 4 GB: நண்பர்களுக்கான server-க்கு இதுவே சரியான அளவு. Paper-ல் சுமார் பத்து players ஒரே நேரத்தில் விளையாடலாம், சில plugins-ஐயும் பயன்படுத்தலாம். OS-க்குத் தேவையான RAM-ம் இதில் இருக்கும்.
  • 8 GB மற்றும் அதற்கு மேல்: இது modpack-களுக்கும், 20-க்கும் மேற்பட்ட players விளையாடும் சூழலுக்கும் ஏற்றது. இங்கு single-core CPU வேகமும் முக்கியம், ஏனெனில் விளையாட்டின் முதன்மைச் செயல்பாடு (main game loop) ஒரு thread-ல் மட்டுமே இயங்கும்.

Players புதிய இடங்களை ஆராயும்போது disk-ல் உலகின் அளவு (world size) அதிகரிக்கும். நீண்ட காலம் விளையாடிய survival world பல gigabytes அளவு வரை செல்லும் என்பதால், world-க்கும் அதன் backups-க்கும் போதுமான இடவசதியை விட்டு வைக்கவும்.

Vanilla அல்லது Paper? Paper என்பது அதிகாரப்பூர்வ jar கோப்பிற்கு மாற்றாகப் பயன்படுத்தக்கூடியது. அதே worlds, அதே clients, client-side mods தேவையில்லை. இது server-ன் மெதுவான செயல்பாடுகளான chunk loading, entity ticking, hoppers ஆகியவற்றை மேம்படுத்துகிறது மற்றும் plugin API-ஐ வழங்குகிறது. Paper-ன் மேம்பாடுகள் redstone farms-ன் நுணுக்கமான செயல்பாடுகளை மாற்றக்கூடும் என்பதால், அத்தகைய technical தேவைகள் இருந்தால் மட்டுமே vanilla-வைப் பயன்படுத்தவும். மற்ற அனைவருக்கும், Paper ஒரு gigabyte-க்கு அதிக players-ஐக் கையாளும் திறனைத் தரும். கீழே கொடுக்கப்பட்டுள்ள அனைத்தும் இரண்டிற்கும் பொருந்தும்.

படி 1: Java 25-ஐ நிறுவுதல்

Minecraft 26.1 மற்றும் அதற்குப் பிந்தைய அனைத்து releases-க்கும் Java 25 தேவைப்படுகிறது; Java 21 ஆனது பழைய 1.20 முதல் 1.21.11 வரையிலான பதிப்புகளுக்கு மட்டுமே பொருந்தும். Ubuntu 24.04 அதன் updates மற்றும் security repositories மூலம் Java 25-ஐ வழங்குகிறது. -headless build-ஐத் தவிர்த்து, முழுமையான JRE-ஐ நிறுவவும்: Paper-க்குத் தேவையான dependencies இல்லாததால், headless variants-ஐப் பயன்படுத்த வேண்டாம் என்று Paper-ன் Java நிறுவல் வழிகாட்டி எச்சரிக்கிறது.

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 server-ல் மிக அதிகமாகத் தேடப்படும் பிழை ஏற்படும். Java 21-ஐப் பயன்படுத்தினால், server 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

இந்த எண்கள் பதிப்பு முரண்பாட்டை விளக்குகின்றன: class file version 69.0 என்பது Java 25, 65.0 என்பது Java 21, 61.0 என்பது Java 17. எந்த ஜோடியைக் கண்டாலும், புதிய JRE-ஐ நிறுவி, update-alternatives கட்டளையை மீண்டும் இயக்குவதே தீர்வாகும்.

படி 2: பிரத்யேக பயனர், root அல்ல

இந்த server plugin குறியீட்டை இயக்குகிறது மற்றும் port-ஐ அணுகக்கூடிய எவரிடமிருந்தும் வரும் network உள்ளீட்டைப் பகுப்பாய்வு செய்கிறது. ஏதேனும் பிழை ஏற்பட்டால், root பயனர் நிலையில் இயங்கும் ஒரு compromise உங்கள் VPS-ன் முழு கட்டுப்பாட்டையும் எடுத்துக்கொள்ளும்; ஆனால் minecraft பயனர் நிலையில் இயங்கினால், அது ஒரு game world-ஐ மட்டுமே பாதிக்கும்.

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

--system கடவுச்சொல் இல்லாத ஒரு கணக்கை உருவாக்குகிறது. இது SSH வழியாக உள்நுழைய முடியாது. இதன் home மற்றும் working directory /opt/minecraft ஆகும். இனிவரும் அனைத்து கட்டளைகளும் இந்த பயனரின் உரிமையிலேயே இயக்கப்படும்.

படி 3: அதிகாரப்பூர்வ மூலத்திலிருந்து server jar-ஐப் பதிவிறக்குதல்

server jar-ஐப் பதிவிறக்க இரண்டு இடங்களை மட்டுமே பயன்படுத்த வேண்டும்: vanilla பதிப்பிற்கு minecraft.net-ல் உள்ள அதிகாரப்பூர்வ server பதிவிறக்கப் பக்கம், மற்றும் Paper-க்கு papermc.io-ல் உள்ள பதிவிறக்கப் பக்கம். மூன்றாம் தரப்பு "download hubs" தளங்கள் server jar-களைத் தொகுத்து வழங்குவது நீண்டகாலமாகவே malware பரப்பும் வழியாக உள்ளது; server jar என்பது நீங்கள் இணையத்துடன் இணைக்கப்பட்ட server-ல் 24/7 இயக்கப்போகும் ஒரு arbitrary code ஆகும்.

அதிகாரப்பூர்வ பக்கத்திலிருந்து தற்போதைய build-க்கான பதிவிறக்க இணைப்பை நகலெடுக்கவும் (URL ஒவ்வொரு பதிப்பிற்கும் 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-ஐ அமைப்பதற்கு முன்பு, server-ஐ ஒருமுறை interactive முறையில் இயக்கவும். முதல்முறை இயக்கும்போது மட்டுமே செய்யக்கூடிய இரண்டு முக்கியமான வேலைகள் உள்ளன.

cd /opt/minecraft
sudo -u minecraft java -Xms1G -Xmx1G -jar server.jar nogui

இது சில நொடிகளில் நின்றுவிடும். Paper முதலில் அதன் patches-ஐப் பயன்படுத்துவதால் சிறிது கூடுதல் நேரம் எடுக்கும். log-ன் இறுதியில் அனைவரும் சந்திக்கும் இந்த வரி தோன்றும்:

[ServerMain/INFO]: You need to agree to the EULA in order to run the server. Go to eula.txt for more info.

இது பிழை அல்ல; இது உரிமக் கட்டுப்பாடு (license gate). இந்த இயக்கம் jar கோப்பிற்கு அருகில் eula.txt கோப்பை உருவாக்கியிருக்கும். நீங்கள் இன்னும் படிக்கவில்லை என்றால், அதில் உள்ள EULA-வை வாசிக்கவும். பிறகு, அந்த flag-ஐ மாற்றவும்:

sudo -u minecraft sed -i 's/eula=false/eula=true/' /opt/minecraft/eula.txt

அதே java கட்டளையை மீண்டும் இயக்கவும். இந்த முறை அது உலகத்தை (world) உருவாக்கும். முதல்முறை தொடங்கும் போது இதற்கு ஒன்று அல்லது இரண்டு நிமிடங்கள் ஆகலாம், இறுதியில் இவ்வாறு நிற்கும்:

[Server thread/INFO]: Done (9.204s)! For help, type "help"

இப்போது உங்களிடம் live console உள்ளது. இரண்டாவது வேலைக்காக இதைப் பயன்படுத்தவும்: op YourMinecraftName (உங்கள் in-game username-ஐ சரியாக உள்ளிடவும்) என்று தட்டச்சு செய்யவும். server உங்களை ops.json கோப்பில் பதிவு செய்யும். இதனால், console இணைக்கப்படாத நேரத்திலும், விளையாட்டிற்குள்ளிருந்தே அனைத்து admin கட்டளைகளையும் உங்களால் இயக்க முடியும். பிறகு, server-ஐச் சேமித்து முறையாக வெளியேற 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-ன் session servers-உடன் சரிபார்க்கும். இது அந்த வீரர் கணக்கின் உரிமையாளர் என்பதை உறுதிப்படுத்துகிறது. இதை false என மாற்றினால், அது "cracked server" பயன்முறைக்குச் செல்லும். அப்போது சேவையகம் எந்தவொரு கிளையண்டின் பெயரையும் அப்படியே ஏற்கும்; எவர் வேண்டுமானாலும் உங்கள் பெயரிலேயே நுழைய முடியும். ops மற்றும் whitelists பெயர்களை அடிப்படையாகக் கொண்டவை என்பதால், ஒருவர் உங்கள் பெயரில் நுழைந்து உங்கள் operator அனுமதிகளைப் பெற முடியும். Velocity போன்ற அங்கீகரிக்கும் proxy-ஐப் பயன்படுத்தும் போது மட்டுமே இதை false என வைக்கலாம். சாதாரண சேவையகங்களில் இது எப்போதும் true-ஆகவே இருக்க வேண்டும்.

view-distance என்பது கோப்பின் செயல்திறனைத் தீர்மானிக்கும் மிக முக்கியமான காரணி. இதன் CPU மற்றும் RAM பயன்பாடு வர்க்க அளவில் (square) அதிகரிக்கும். VPS-க்கு 8 என்பது சரியான இயல்புநிலை; 10 என்பது vanilla இயல்புநிலை, இது அதிக சுமையை ஏற்படுத்தும்.

white-list=true மற்றும் enforce-whitelist=true ஆகியவற்றை அமைப்பதன் மூலம் அறிமுகமில்லாத நபர்கள் சேவையகத்திற்குள் நுழைவதைத் தடுக்கலாம். இது கட்டாயமான பாதுகாப்பு நடவடிக்கை என்பதை கீழே உள்ள பாதுகாப்புப் பகுதியில் காணலாம். வீரர்களைச் சேர்க்க, விளையாட்டிற்குள் /whitelist add TheirName கட்டளையைப் பயன்படுத்தி அவர்களை op-ஆக மாற்றவும்.

படி 6: memory flags, -Xms மற்றும் -Xmx ஏன் சமமாக இருக்க வேண்டும்

JVM தனது heap-ஐ -Xms (தொடக்க அளவு) மற்றும் -Xmx (அதிகபட்ச அளவு) ஆகியவற்றுக்கு இடையே ஒதுக்குகிறது. ஒரு பிரத்யேக கேம் சர்வரில், இரண்டையும் ஒரே மதிப்பில் அமைக்கவும்: heap எப்படியும் அதிகபட்ச அளவை எட்டிவிடும், எனவே விளையாட்டின் போது படிப்படியாக அதை அதிகரிப்பது garbage-collector-ன் சுமையை மட்டுமே கூட்டும். 4 GB VPS-ல் சரியான ஜோடி இதுதான்:

/usr/bin/java -Xms3G -Xmx3G -jar server.jar nogui

-Xmx என்பது process பயன்படுத்தும் மொத்த memory அல்ல. JVM, off-heap overhead, thread stacks, JIT caches, direct buffers என சுமார் அரை GB அல்லது அதற்கும் மேலாக கூடுதலாக எடுத்துக்கொள்ளும்; மேலும் Ubuntu இயங்குதளத்திற்கும் இடம் தேவை. பொதுவான விதி: -Xmx என்பது VPS RAM-ல் இருந்து 1 GB கழித்தது போக மீதமுள்ள அளவு. இதைத் தாண்டினால் இரண்டு வகையான தோல்விகள் ஏற்படும். ஒதுக்கீடு தொடக்கத்திலேயே தோல்வியுற்றால், சர்வர் தொடங்க மறுத்துவிடும்:

Error: Could not reserve enough space for object heap

இது வெளிப்படையான மற்றும் உடனடி தோல்வி. மோசமான வகை என்னவென்றால், சர்வர் சரியாகத் தொடங்கி, சில மணிநேரம் கழித்து, சுமை அதிகரிக்கும் போது heap நிரம்பி, kernel-ன் OOM killer அந்தப் பெட்டியின் மிகப்பெரிய process-ஆன JVM-ஐக் கொன்றுவிடும். சர்வர் லாக்-ல் எதுவும் இருக்காது; இதற்கான ஆதாரம் sudo dmesg | grep -i oom-ல் இருக்கும், அதில் Out of memory: Killed process 1234 (java) போன்ற ஒரு வரி இருக்கும். உங்கள் service "தன்னிச்சையாக" restart ஆனால், முதலில் அதைச் சரிபார்த்து, -Xmx-ஐக் குறைக்கவும்.

Paper-க்கு, அந்தத் திட்டம் Aikar's flags-ஐ ஆவணப்படுத்துகிறது. இது ஒரு மேம்படுத்தப்பட்ட G1GC தொகுப்பாகும் (-XX:+UseG1GC -XX:MaxGCPauseMillis=200 மற்றும் பல), இது பெரிய heap-களில் garbage-collection இடைநிறுத்தங்களைச் சீராக்குகிறது. Paper ஆவணங்களிலிருந்து முழு வரியையும் உருவாக்கவும்; 2–4 GB heap-ல் இதன் பயன் குறைவாக இருந்தாலும், இந்த flags-ஆல் எந்தப் பாதிப்பும் இல்லை.

படி 7: Restart=on-failure கொண்ட systemd unit

கைமுறையாகத் தொடங்கப்படும் server, உங்கள் SSH session முடிந்ததும் நின்றுவிடும், மேலும் reboot செய்த பிறகும் அது இயங்காது. /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)-ஐக் காட்டுகிறது, மேலும் server console வெளியீட்டைக் கொண்டுள்ள journal, மீண்டும் Done வரியில் முடிகிறது.

அந்த unit-ல் இரண்டு திட்டமிட்ட தேர்வுகள் உள்ளன. Restart=on-failure, ஒரு crash-க்குப் பிறகு server-ஐ மீண்டும் கொண்டு வரும், ஆனால் முறையான stop-க்குப் பிறகு வராது, எனவே பராமரிப்புப் பணிகள் சாத்தியமாகும். மேலும் TimeoutStopSec=120 பார்ப்பதை விட முக்கியமானது: systemctl stop என்பது SIGTERM-ஐ அனுப்புகிறது, Minecraft server அதைப் பெற்று வெளியேறுவதற்கு முன்பு ஒவ்வொரு world-ஐயும் சேமிக்கிறது, பெரிய world-களில் இந்தச் சேமிப்புக்கு நேரம் எடுக்கும். Systemd-ன் default timeout, JVM-ஐ சேமிக்கும் பணியின் பாதியிலேயே SIGKILL செய்யக்கூடும், இதுவே region files சிதைவதற்குக் காரணமாகிறது. இதற்கு இரண்டு நிமிடங்கள் அவகாசம் அளிக்கவும்.

Service அடிக்கடி நின்று மீண்டும் தொடங்கினால் (flapping) மற்றும் journal இதைக் காட்டினால்:

[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 port-ஐப் பிடித்துள்ளது என்று அர்த்தம், பெரும்பாலும் உங்கள் முந்தைய foreground run வேறொரு SSH session-ல் இன்னும் இயங்கிக்கொண்டிருக்கலாம். அதை sudo ss -tlnp | grep 25565 மூலம் கண்டறிந்து அந்த நகர்வை நிறுத்தவும்; ஒரே port-ல் இரண்டு server-களை ஒருபோதும் இயக்க வேண்டாம்.

படி 8: இரண்டு firewall-களிலும் 25565-ஐத் திறக்கவும்

Minecraft Java, TCP 25565-ஐ மட்டுமே பயன்படுத்துகிறது (UDP என்பது விருப்பத்தேர்வுக்குரிய query protocol, இது இயல்பாகவே முடக்கப்பட்டிருக்கும்). VPS-ல்:

sudo ufw allow OpenSSH
sudo ufw allow 25565/tcp
sudo ufw enable

இது முதல் firewall ஆகும். பல VPS வழங்குநர்கள் control panel-ல் இரண்டாவது, network-level firewall-ஐ வழங்குகிறார்கள். இது செயல்பாட்டில் இருக்கும்போது, பயனர்கள் இதை மறந்துவிடுவது வழக்கம். SSD Nodes-ல் இது Advanced Firewall Groups add-on ஆகும்; இது ஒரு கட்டண வசதி, இதை நீங்கள் checkout செய்யும்போதோ அல்லது dashboard மூலமாகவோ ஒதுக்கலாம். உங்கள் server-ல் இது இருந்தால், அங்கும் TCP 25565-ஐத் திறக்கவும். ஏதேனும் ஒரு firewall-ல் விதி விடுபட்டால், அதன் அறிகுறி மிகவும் குழப்பமாக இருக்கும்: client "Connecting to the server..." என்பதில் நின்றுவிடும், பின் Connection timed out: no further information பிழையுடன் தோல்வியடையும். எந்த மறுப்பும் இருக்காது, server பிழையும் இருக்காது, journal-லும் எதுவும் இருக்காது, ஏனெனில் packets server-ஐச் சென்றடையாது. VPS-க்கு வெளியே உள்ள ஒரு machine-லிருந்து nc -vz your.server.ip 25565 மூலம் சரிபார்க்கவும்; succeeded என்பது பாதையில் உள்ள அனைத்து firewall-களும் திறந்திருப்பதைக் குறிக்கும். ஒருவேளை அது நின்றுவிட்டால், ஏதோ ஒரு firewall packets-ஐத் தடுக்கிறது என்று அர்த்தம். இருப்பினும், server அதிக சுமையுடன் இருந்தாலும் connection time out ஆகலாம், எனவே ss மூலம் server port-ஐக் கேட்கிறதா (listening) என்பதை உறுதிப்படுத்தவும்.

நீங்கள் ufw-ல் இருக்கும்போதே, அதே server public IP-ல் SSH-ஐ இயக்குகிறது. சில மணிநேரங்களிலேயே brute-force log தொந்தரவுகள் தொடங்கிவிடும், எனவே மறப்பதற்கு முன் Ubuntu 24.04-ல் SSH-க்காக Fail2ban-ஐ அமைக்கவும்.

இப்போது இணைக்கவும்: Multiplayer, Direct Connection, server IP. நீங்கள் படி 4-ல் உங்களை op செய்துள்ளதால், in-game கட்டளைகள் உடனடியாகச் செயல்படும், ஒவ்வொரு player-க்கும் /whitelist add FriendName, அதுதான் திட்டம் என்றால் /gamemode creative.

படி 9: whitelist-ஐ அமைத்தல், ஏனெனில் இணையம் 25565 port-ஐ கண்டறியும்

Minecraft server-ஐ இணையத்தில் திறந்து வைப்பது வெறும் கோட்பாட்டு ரீதியான ஆபத்து அல்ல: mass scanners தொடர்ந்து IPv4 முழுவதிலும் 25565 port-ஐ தேடிக்கொண்டே இருக்கின்றன. பொழுதுபோக்கிற்காக விளையாடுபவர்கள் இவ்வாறாக லட்சக்கணக்கான open servers-ஐ வரைபடமாக்கியுள்ளனர். whitelist இல்லாத server-க்கு சில நாட்களிலோ அல்லது சில மணிநேரங்களிலோ தேவையற்ற நபர்கள் வந்துவிடுவார்கள். படி 5-ல் உள்ள whitelist இதற்கு தீர்வாகும்: online-mode=true அடையாளத்தை உறுதிப்படுத்துகிறது, whitelist நீங்கள் தேர்ந்தெடுத்த அடையாளங்களுக்கு மட்டுமே அனுமதியளிக்கிறது. இந்த ஜோடியே முழுமையான பாதுகாப்பு மாதிரியாகும், இது நண்பர்களுக்கான server-க்கு போதுமானது.

விளையாட்டு இல்லாமல் console access பெறவும், scripted backups எடுக்கவும், cron job-ஐ பயன்படுத்தவும், server.properties-ல் RCON-ஐ இயக்கவும் (enable-rcon=true, ஒரு வலுவான rcon.password, port 25575). அதன் GitHub source-லிருந்து சிறிய mcrcon client-ஐ VPS-லேயே build செய்யவும்; இது Ubuntu-வின் repos-ல் இல்லை. எந்த firewall-லும் 25575 port-ஐ திறக்க வேண்டாம்: RCON கடவுச்சொல்லை cleartext-ஆக அனுப்புகிறது, எனவே இது loopback-ல் மட்டுமே இருக்க வேண்டும்.

படி 10: உலகத்தை சிதைக்காத காப்புப்பிரதிகள் (backups)

ஒரே ஒரு விதி: server தரவுகளை எழுதிக்கொண்டிருக்கும்போது world directory-ஐ ஒருபோதும் நகலெடுக்க வேண்டாம். விளையாட்டின் போது region files தொடர்ந்து மாற்றியமைக்கப்படுகின்றன; எழுதும் செயல்முறைக்கு இணையாக நடக்கும் ஒரு tar, பாதியிலேயே எழுதப்பட்ட chunks கொண்ட கோப்பை உருவாக்கும். நீங்கள் அதை மீட்டெடுக்கும்போது, காப்புப்பிரதி மிக அவசியமான அந்த நேரத்தில், log கோப்பு chunk-loading பிழைகளால் நிரம்பிவிடும் மற்றும் நிலப்பரப்பில் துளைகள் ஏற்படும். இதைத் தவிர்க்க இரண்டு முறைகள் உள்ளன.

Stop-copy-start என்பது எளிமையான முறை, ஆனால் ஒரு நிமிடம் server இயங்காது:

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 பதிப்பிலிருந்து, vanilla-வைப் போலவே Paper-ம் அனைத்து மூன்று பரிமாணங்களையும் world/dimensions/-க்குள் வைத்திருக்கிறது, எனவே world என்பது முழு உலகத்தையும் குறிக்கும். 1.21.11 அல்லது அதற்கு முந்தைய பதிப்பில் உள்ள Paper server-கள் அவற்றை world, world_nether, மற்றும் world_the_end எனப் பிரித்து வைத்திருக்கும்; அந்த இரண்டையும் tar கட்டளையில் சேர்க்கவும்.)

Save-off முறை நேரலையில் காப்புப்பிரதி எடுக்க உதவும்: RCON வழியாக, save-off (autosaver-ஐ நிறுத்த) கட்டளையை இடவும், பிறகு save-all flush (அனைத்தையும் disk-க்கு எழுதி முடிக்கக் காத்திருக்க) கட்டளையை இடவும், tar எடுக்கவும், பின்னர் save-on கட்டளையை இடவும். இதைத்தான் அதிகாலை 5 மணிக்கு cron-ல் அமைக்க வேண்டும்.

எந்த முறையாக இருந்தாலும், server இருக்கும் அதே VPS-ல் காப்புப்பிரதியை வைத்திருப்பது உண்மையான காப்புப்பிரதி ஆகாது. scp அல்லது rclone மூலம் கோப்புகளை server-லிருந்து வெளியேற்றவும், ஒன்றுக்கும் மேற்பட்ட பிரதிகளை வைத்திருக்கவும். ஏதேனும் சிக்கல் ஏற்படும்போது நீங்கள் console-ஐப் பார்த்துக்கொண்டிருக்க மாட்டீர்கள் என்பதால், port-ஐக் கண்காணிக்க வெளிப்புறக் கருவியைப் பயன்படுத்தவும்: மற்றொரு கணினியில் உள்ள Uptime Kuma மூலம் 25565 port-ஐ TCP check செய்வது, உங்கள் வீரர்கள் அறிவதற்கு முன்பே server செயலிழந்ததை உங்களுக்குத் தெரிவிக்கும்.

Plugins மற்றும் மேம்படுத்தல்கள்

கோட்பாட்டு ரீதியாக, ஒரு plugin என்பது /opt/minecraft/plugins/ கோப்பகத்தில் இடப்படும் ஒரு jar கோப்பு மட்டுமே; அதைத் தொடர்ந்து ஒரு restart செய்தால் நிறுவல் முடிந்தது. Server jar கோப்பிற்கு என்ன காரணமோ, அதே காரணத்திற்காக plugin-களையும் அவற்றின் அதிகாரப்பூர்வ பக்கங்களில் (Hangar, Modrinth, SpigotMC) இருந்து மட்டுமே பதிவிறக்கவும்: ஒவ்வொன்றும் minecraft பயனராக இயங்கும் தன்னிச்சையான நிரல் (arbitrary code) ஆகும்.

Server-ஐ மேம்படுத்தும் முறை: நிறுத்துதல், backup எடுத்தல், server.jar கோப்பை புதிய Minecraft பதிப்பிற்கான build கொண்டு மாற்றுதல், மீண்டும் தொடங்குதல். இதில் இரண்டு எச்சரிக்கைகள் உள்ளன. World மேம்படுத்தல்கள் ஒருவழிப்பாதை; புதிய பதிப்பில் திறக்கப்பட்ட ஒரு world-ஐ பழைய பதிப்பில் திறக்க முடியாது, இதற்காகவே backup அவசியம். மேலும், புதிய Minecraft release வந்த சில நாட்கள் அல்லது வாரங்களுக்குப் பிறகே plugin-கள் அதற்கு இணக்கமாக மாறும், எனவே முதல் நாளிலேயே புதிய பதிப்பிற்கு மாறுவதற்கு முன் இணக்கத்தன்மையைச் சரிபார்க்கவும். 1.21.11 பதிப்பிலிருந்து 26.1 அல்லது அதற்குப் பிந்தைய பதிப்பிற்கு மாறும்போது Java 25 (படி 1) தேவைப்படும், மேலும் இது Paper-ன் Nether மற்றும் End கோப்புறைகளை world/dimensions/ கோப்பகத்திற்கு நகர்த்தும்.

இவை அனைத்தையும் ஒரு container-ஆக நிர்வகிக்க விரும்பினால், version pinning, EULA ஏற்பு, மற்றும் 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-ஐப் பயன்படுத்தி சில plugins-உடன் சுமார் பத்து வீரர்கள் விளையாடும் server-ஐச் சிறப்பாக இயக்க முடியும்; modpacks மற்றும் 20-க்கும் மேற்பட்ட வீரர்களுக்கு 8 GB அல்லது அதற்கு மேல் தேவைப்படும். VPS-ன் அளவு எதுவாக இருந்தாலும், -Xmx-ஐ மொத்த RAM-ல் இருந்து 1 GB குறைத்து அமைக்கவும்; ஏனெனில் JVM heap-க்கு அப்பாலும் நினைவகத்தைப் பயன்படுத்தும், இதை மீறினால் Error: Could not reserve enough space for object heap பிழை ஏற்படும் அல்லது OOM killer மூலம் server தானாகவே நிறுத்தப்படும்.

எனது நண்பர்களால் ஏன் எனது Minecraft server-ல் இணைய முடியவில்லை?

Connection timed out: no further information பிழையுடன் client இணைக்க முடியாமல் போனால், அது பெரும்பாலும் firewall பிரச்சினையாக இருக்கும்: VPS-ல் உள்ள ufw அல்லது உங்கள் hosting provider-ன் control panel-ல் ஏதேனும் network firewall இயக்கப்பட்டிருக்கலாம். TCP 25565 port அனைத்து firewall-களிலும் திறக்கப்பட்டிருக்க வேண்டும். sudo ss -tlnp | grep 25565 கட்டளையைப் பயன்படுத்தி server அந்த port-ல் listening நிலையில் உள்ளதா என்பதை உறுதிசெய்துவிட்டு, வெளியே இருந்து nc -vz your.server.ip 25565 மூலம் சோதிக்கவும்.

server.properties-ல் online-mode=false என்று அமைக்க வேண்டுமா?

கூடாது. online-mode=false என்று அமைத்தால், server Mojang authentication-ஐ முழுமையாகத் தவிர்க்கும். இதனால் யார் வேண்டுமானாலும் எந்தப் பெயரிலும் நுழையலாம், op-ன் பெயரைப் பயன்படுத்தி அவர்களின் அனுமதிகளைப் பெறலாம், மேலும் skins மற்றும் நிலையான UUID-கள் பாதிக்கப்படும். வீரர்களைச் சரிபார்க்கும் Velocity போன்ற proxy-க்கு பின்னால் இருக்கும்போது மட்டுமே இதைப் பயன்படுத்தலாம். சாதாரண server-களுக்கு இது true என்றே இருக்க வேண்டும்.

vanilla Minecraft server-ஐ விட Paper சிறந்ததா?

பெரும்பாலானோருக்கு, ஆம்: Paper என்பது vanilla worlds-ஐ ஏற்கும், மாற்றப்படாத clients-ஐ அனுமதிக்கும், entities மற்றும் chunks-ஐ மிகத் திறமையாகக் கையாளும், மேலும் plugin வசதியையும் வழங்கும் ஒரு drop-in jar ஆகும். bit-exact vanilla செயல்பாடு தேவைப்படும் technical-redstone சமூகங்களுக்கு மட்டுமே இது விதிவிலக்கு, ஏனெனில் Paper-ன் சில மேம்படுத்தல்கள் அந்தச் செயல்பாட்டை மாற்றக்கூடும். சிறிய VPS-ல், Paper-ன் செயல்திறன் கூடுதல் RAM-க்கு இணையான பலனைத் தரும்.

Minecraft world-ஐப் பாதிக்காமல் backup எடுப்பது எப்படி?

Server இயங்கிக்கொண்டிருக்கும்போது world directory-ஐ archive செய்யக்கூடாது; ஏனெனில் server எழுதும் கோப்புகளை நகலெடுக்கும்போது chunks சிதைந்துவிடும், இது restore செய்யும்போதுதான் தெரியவரும். எனவே, server-ஐ நிறுத்திவிட்டு world directory-ஐ tar செய்யவும், பிறகு மீண்டும் தொடங்கவும். அல்லது server இயங்கிக்கொண்டிருக்கும்போதே save-off, save-all flush, tar, மற்றும் RCON வழியாக save-on கட்டளைகளைப் பயன்படுத்தி backup எடுக்கலாம். அதன் பிறகு அந்த archive-ஐ VPS-லிருந்து வெளியே நகர்த்தவும்.