SSD Nodes Learn
راهنماها Matt Connorتوسط Matt Connor · به‌روزرسانی شده 2026-07-26

آموزش راه‌اندازی سرور ماینکرفت روی VPS با اوبونتو

سرور Paper ماینکرفت روی Ubuntu 24.04: مقدار رم واقعی موردنیاز، نصب Java 21، تنظیم systemd، باز کردن پورت 25565 در هر دو فایروال، و پشتیبان‌گیری اصولی از دنیا بدون خراب شدن آن.

آنچه می‌سازید

یک سرور Minecraft Java Edition که پایدار بماند: Paper روی Ubuntu 24.04، در حال اجرا به‌عنوان یک کاربر اختصاصی minecraft تحت systemd با Restart=on-failure, لیست سفید فعال، پورت 25565 در هر دو فایروالی که بین بازیکنان شما و JVM قرار دارند باز باشد، و پشتیبان‌گیری‌ها به‌گونه‌ای انجام شوند که دنیایی را که برای محافظت از آن وجود دارند خراب نکنند. خود سرور یک فایل jar و یک دستور java است؛ هر چیزی که یک سرور را که دوستانتان یک سال روی آن بازی می‌کنند از سروری که در اولین آخر هفته از کار می‌افتد جدا می‌کند، حول آن دستور است، و این راهنما همان را پوشش می‌دهد.

دو هشدار صادقانه پیش از آنکه پول خرج کنید. نخست، Minecraft پرمصرف از نظر حافظه و عمدتاً تک‌ریسمانی است: یک VPS با 1 گیگابایت رم، سرور قابل بازی اجرا نخواهد کرد، و یک هسته سریع بهتر از چهار هسته کند است. دوم، این Java Edition است. بازیکنان Bedrock، کنسول‌ها، تلفن‌ها، برنامه Windows Bedrock، نمی‌توانند به یک سرور Java متصل شوند؛ Bedrock به نرم‌افزار سرور متفاوتی روی UDP 19132 نیاز دارد، یا پلاگین Geyser، که خارج از محدوده این راهنماست.

شما به یک VPS تازه از نوع KVM با Ubuntu 24.04 و دسترسی root یا sudo نیاز دارید، و حدود سی دقیقه زمان.

اندازه‌گیری: یک سرور دوستانه واقعاً به چه چیزی نیاز دارد

رم عددی است که اهمیت دارد، و ارقام واقعی پایین‌تر از چیزی هستند که انجمن‌های مادپک پیشنهاد می‌دهند:

  • 2 گیگابایت بازی وانیلا را برای 2 تا 5 بازیکن با فاصله دید کم اجرا می‌کند. قابل بازی است، اما فضای اضافی ندارد.
  • 4 گیگابایت اندازه راحت برای یک سرور دوستانه است: حدود ده بازیکن همزمان روی پیپر با چند پلاگین، و مقداری هم برای سیستم‌عامل باقی می‌ماند.
  • 8 گیگابایت و بالاتر محدوده مادپک‌ها و بیش از بیست بازیکن است، جایی که باید به سرعت تک‌هسته‌ای سی‌پی‌یو هم اهمیت دهید، زیرا حلقه اصلی بازی روی یک رشته اجرا می‌شود.

با گشت‌وگذار بازیکنان، دنیا روی دیسک نیز رشد می‌کند؛ یک دنیای بقا که زیاد پیموده شده باشد به چندین گیگابایت می‌رسد، پس برای خود دنیا و پشتیبان‌هایش فضای خالی بگذارید.

وانیلا یا پیپر؟ پیپر یک جایگزین بی‌دردسر برای فایل جار رسمی است: همان دنیاها، همان کلاینت‌ها، بدون نیاز به ماد سمت کلاینت. این نرم‌افزار کندترین مسیرهای سرور، بارگذاری چانک، تیک‌زدن موجودیت‌ها، قیف‌ها را بازنویسی می‌کند و یک رابط برنامه‌نویسی پلاگین اضافه می‌کند. تنها دلیل برای اجرای وانیلا این است که به مکانیک‌های دقیق وانیلا برای مزارع رِدستونی فنی نیاز دارید که بهینه‌سازی‌های پیپر می‌توانند آن‌ها را تغییر دهند؛ برای بقیه افراد، پیپر یعنی بازیکنان بیشتر به ازای هر گیگابایت. تمام توضیحات زیر برای هر دو کار می‌کند.

مرحله 1: نصب Java 21

Minecraft 1.20.5 و تمام نسخه‌های پس از آن (همه نسخه‌های 1.21.x) به Java 21 نیاز دارند. اوبونتو 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 برای نسخه vanilla، و صفحه دانلود در papermc.io برای Paper. «هاب‌های دانلود» شخص ثالث که فایل‌های jar سرور را بازبسته‌بندی می‌کنند، یک کانال قدیمی برای بدافزار هستند؛ فایل jar سرور کد دلخواهی است که شما در آستانه اجرای 24/7 آن روی یک ماشین متصل به اینترنت هستید.

لینک دانلود بیلد فعلی را از صفحه رسمی کپی کنید (آدرس با هر نسخه و بیلد تغییر می‌کند، بنابراین درج یک آدرس ثابت در اینجا منسوخ خواهد شد)، سپس:

cd /opt/minecraft
sudo -u minecraft wget -O server.jar 'PASTE-THE-COPIED-URL-HERE'

نتیجه صحیح: یک server.jar با حجم تقریبی 50 مگابایت که مالک آن minecraft است و با ls -lh /opt/minecraft/server.jar تأیید شده است.

مرحله 4: اجرای اولیه، توافق‌نامه مجوز و اپراتور کردن خودتان

پیش از دست‌کاری 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.

این یک خطا نیست؛ یک دروازه مجوز است. این اجرا فایل eula.txt را کنار فایل jar نوشت. اگر توافق‌نامه پیوند داده شده را نخوانده‌اید، بخوانید، سپس پرچم را تغییر دهید:

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 و دلیل true ماندن online-mode

اولین اجرا همچنین فایل 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 باعث می‌شود سرور هر نام کاربری که وارد می‌شود را با سرورهای نشست موجنگ تأیید کند و ثابت کند که بازیکن مالک آن حساب است. تنظیم آن روی false، که کلید «سرور کرک شده» است، یعنی سرور حرف هر کلاینت را درباره هویتش می‌پذیرد: هر کسی می‌تواند با هر نامی وارد شود، از جمله نام شما، و از آنجا که اپراتورها و لیست سفید بر اساس نام کلید می‌خورند، یک جاعل هویت با مجوزهای اپراتوری شما وارد می‌شود. تنها دلیل قانونی برای false بودن آن، پشت یک پروکسی احراز هویت مانند Velocity است که خودش بازیکنان را تأیید می‌کند. روی یک سرور عادی true می‌ماند، تمام.

view-distance بزرگترین اهرم عملکرد در این فایل است، هزینه CPU و RAM تقریباً با مجذور آن مقیاس می‌گیرد. 8 یک پیش‌فرض معقول برای VPS است؛ 10 پیش‌فرض وانیلا است و به طور محسوسی سنگین‌تر.

white-list=true به همراه enforce-whitelist=true سرور را به روی غریبه‌ها می‌بندد، که بخش امنیت در ادامه استدلال می‌کند که اختیاری نیست. بازیکنان را با /whitelist add TheirName درون بازی اضافه کنید.

گام 6: پرچم‌های حافظه، چرا باید Xms- و Xmx- یکسان باشند

ماشین مجازی جاوا (JVM) حافظهٔ پشتهٔ خود را بین -Xms (اندازهٔ شروع) و -Xmx (سقف) تخصیص می‌دهد. روی یک سرور اختصاصی بازی، آن‌ها را روی یک مقدار یکسان تنظیم کنید: پشته در هر صورت به سقف خواهد رسید، و بزرگ‌کردن پله‌ای آن فقط باعث افزایش رفت‌وروب زباله‌روب در حین بازی می‌شود. روی یک VPS با 4 گیگابایت رم، جفت صحیح این است:

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

-Xmx کل حافظه‌ای که فرایند استفاده می‌کند نیست. JVM سربار خارج از پشته، پشته‌های نخ، کش‌های JIT، بافرهای مستقیم، تقریباً به اندازهٔ نیم گیگابایت یا بیشتر اضافه می‌کند، و خود اوبونتو هم به فضا نیاز دارد. قاعدهٔ عملی: -Xmx حداکثر رم VPS منهای 1 گیگابایت. اگر بیشتر تخمین بزنید، یکی از دو خطا رخ می‌دهد. اگر تخصیص در همان ابتدا شکست بخورد، سرور با این پیام از راه‌اندازی خودداری می‌کند:

Error: Could not reserve enough space for object heap

این خطا صادقانه و فوری است. نسخهٔ بدتر، به‌خوبی شروع به کار می‌کند و ساعت‌ها بعد، وقتی پشته تحت بار پر می‌شود و قاتل OOM هسته بزرگ‌ترین فرایند روی سیستم یعنی JVM را انتخاب می‌کند، می‌میرد. چیزی در لاگ سرور ظاهر نمی‌شود؛ شواهد در sudo dmesg | grep -i oom است، خطی شبیه Out of memory: Killed process 1234 (java). اگر سرویس شما «تصادفی» ری‌استارت می‌شود، ابتدا آن‌جا را بررسی کنید و -Xmx را کاهش دهید.

برای پیپر، مستندات پروژه پرچم‌های آیکار را مستند کرده‌اند، مجموعه‌ای تنظیم‌شده برای G1GC (-XX:+UseG1GC -XX:MaxGCPauseMillis=200 و ده‌ها پرچم دیگر) که مکث‌های زباله‌روبی را روی پشته‌های بزرگ‌تر هموار می‌کند. خط کامل را از مستندات پیپر تولید کنید؛ روی پشتهٔ 2 تا 4 گیگابایتی سود آن اندک است اما پرچم‌ها بی‌ضرر هستند.

گام 7: یک unit systemd با Restart=on-failure

سروری که با دست راه‌اندازی می‌شود با قطع نشست 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) را نشان می‌دهد، و journal که اکنون خروجی کنسول سرور را حمل می‌کند، دوباره به خط Done ختم می‌شود.

دو انتخاب آگاهانه در آن unit وجود دارد. Restart=on-failure سرور را پس از یک فروپاشی بازمی‌گرداند اما نه پس از یک stop تمیز، بنابراین نگهداری ممکن می‌ماند. و TimeoutStopSec=120 بیش از آنچه به نظر می‌رسد اهمیت دارد: systemctl stop سیگنال SIGTERM می‌فرستد، سرور Minecraft آن را دریافت می‌کند و پیش از خروج هر جهان را ذخیره می‌کند، و در یک جهان بزرگ آن ذخیره‌سازی زمان می‌برد. زمان پیش‌فرض systemd می‌تواند JVM را میانهٔ ذخیره‌سازی با SIGKILL بکشد، که دقیقاً همان چیزی است که فایل‌های region را خراب می‌کند. به آن دو دقیقه زمان بدهید.

اگر سرویس نوسان کند و 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 را در اختیار دارد، تقریباً همیشه اجرای پیش‌زمینهٔ قبلی شما که هنوز در نشست 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 را آنجا نیز باز کنید. نشانه باز کردن فقط یکی از این دو به‌طرز دیوانه‌کننده‌ای غیراختصاصی است: کلاینت روی "در حال اتصال به سرور..." متوقف می‌شود و با Connection timed out: no further information شکست می‌خورد، بدون رد شدن، بدون خطای سرور، بدون هیچ چیزی در ژورنال، چون بسته‌ها هرگز نرسیده‌اند. از یک ماشین خارج از VPS با nc -vz your.server.ip 25565 تأیید کنید؛ succeeded یعنی هر دو فایروال باز هستند، توقف یعنی حداقل یکی باز نیست.

تا وقتی در ufw هستید، همین باکس SSH را روی یک IP عمومی اجرا می‌کند و نویز لاگ brute-force ظرف چند ساعت شروع می‌شود، Fail2ban را برای SSH روی Ubuntu 24.04 راه‌اندازی کنید قبل از اینکه فراموش کنید.

حالا متصل شوید: چندنفره، اتصال مستقیم، IP سرور. چون در مرحله 4 خودتان را اپراتور کردید، دستورات درون بازی فوراً کار می‌کنند، /whitelist add FriendName برای هر بازیکن، /gamemode creative اگر برنامه این باشد.

مرحله 9: لیست سفید، چون اینترنت پورت 25565 را پیدا می‌کند

باز گذاشتن یک سرور ماینکرفت به روی اینترنت یک خطر تئوری نیست: اسکنرهای انبوه به‌طور مداوم کل فضای IPv4 را برای پورت 25565 جستجو می‌کنند، پروژه‌های تخریب تفننی صدها هزار سرور باز را به این روش نقشه‌برداری کرده‌اند، و یک سرور بدون لیست سفید ظرف چند روز، گاهی چند ساعت، مهمان‌های ناخوانده دریافت می‌کند. لیست سفید مرحله 5 راه حل است: online-mode=true هویت را اثبات می‌کند، لیست سفید ورود را به هویت‌هایی که شما انتخاب کرده‌اید محدود می‌کند. این جفت، کل مدل امنیتی است و برای یک سرور دوستانه کافی است.

برای دسترسی به کنسول بدون بازی، پشتیبان‌گیری‌های زمان‌بندی‌شده، یک کرون جاب، RCON را در server.properties فعال کنید (enable-rcon=true, یک rcon.password قوی، پورت 25575) و کلاینت کوچک mcrcon را از سورس گیت‌هاب آن روی خود VPS بسازید؛ این کلاینت در مخازن اوبونتو نیست. پورت 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. این نسخه‌ای است که باید در cron ساعت 5 صبح قرار دهید.

در هر دو روش، یک پشتیبان که روی همان VPS سرور قرار دارد، پشتیبان واقعی نیست، بایگانی‌ها را با scp یا rclone از آن ماشین خارج کنید، و بیش از یک نسخه نگه دارید. و از آنجایی که هنگام خرابی به کنسول خیره نخواهید بود، یک بررسی خارجی روی پورت قرار دهید: Uptime Kuma روی یک ماشین دیگر که یک بررسی TCP روی 25565 انجام می‌دهد، پیش از بازیکنان به شما می‌گوید که سرور قطع شده است.

پلاگین‌ها و ارتقاها

در Paper، یک پلاگین فایل jar است که در /opt/minecraft/plugins/ قرار می‌گیرد و سپس راه‌اندازی مجدد انجام می‌شود. کل فرایند نصب همین است. پلاگین‌ها را فقط از صفحات رسمی پروژه آن‌ها (Hangar، Modrinth، SpigotMC) دریافت کنید. دلیل این کار همان دلیلی است که برای فایل jar سرور وجود دارد: هر پلاگین کد دلخواهی است که با مجوز کاربر minecraft اجرا می‌شود.

ارتقای سرور به این صورت است: توقف، پشتیبان‌گیری، جایگزینی server.jar با نسخه‌ای که برای نسخه جدید Minecraft ساخته شده است، راه‌اندازی. دو نکته احتیاطی وجود دارد. ارتقاهای دنیا یک‌طرفه هستند؛ دنیایی که با یک نسخه جدیدتر باز شده باشد، با نسخه قدیمی‌تر باز نخواهد شد. این مورد، وظیفه دیگری برای پشتیبان‌ها است. همچنین، پلاگین‌ها اغلب چند روز یا چند هفته از انتشار نسخه جدید Minecraft عقب می‌مانند. بنابراین، پیش از آنکه در روز اول به دنبال نسخه جدید بروید، سازگاری را بررسی کنید.

اگر ترجیح می‌دهید همه این موارد را به صورت یک کانتینر مدیریت کنید، با نسخه‌سنجی (version pinning)، پذیرش EULA و پرچم‌های حافظه به عنوان متغیرهای محیطی، ایمیج پرکاربرد itzg/minecraft-server همان سرور Paper را تحت Docker Compose روی VPS شما با همان قواعد فایروال و پشتیبان‌گیری اجرا می‌کند.

FAQ

یک سرور ماینکرفت به چه مقدار RAM نیاز دارد؟

2 گیگابایت برای اجرای وانیلا با 2 تا 5 بازیکن کافی است؛ 4 گیگابایت برای یک سرور دوستانه حدوداً ده‌نفره روی Paper با چند افزونه مناسب است؛ بسته‌های ماد و بیش از 20 بازیکن به 8 گیگابایت یا بیشتر نیاز دارند. صرف‌نظر از اندازهٔ VPS، -Xmx را حداکثر روی RAM کل منهای 1 گیگابایت تنظیم کنید، JVM فراتر از heap هم حافظه مصرف می‌کند و بیش‌برآورد به Error: Could not reserve enough space for object heap یا یک kill خاموش OOM ختم می‌شود.

چرا دوستانم نمی‌توانند به سرور ماینکرفت من متصل شوند؟

هنگ کردن کلاینت که به Connection timed out: no further information ختم می‌شود تقریباً همیشه به معنی وجود فایروال است، و دو فایروال وجود دارد: ufw روی VPS و فایروال شبکهٔ ارائه‌دهنده در پنل کنترل. پورت TCP 25565 باید در هر دو باز باشد. با sudo ss -tlnp | grep 25565 روی خود ماشین تأیید کنید که سرور واقعاً در حال شنیدن است، سپس از بیرون با nc -vz your.server.ip 25565 تست کنید.

آیا باید online-mode=false را در server.properties تنظیم کنم؟

خیر. با online-mode=false سرور به‌کلی احراز هویت موجانگ را نادیده می‌گیرد، بنابراین هر کسی می‌تواند با هر نام کاربری، از جمله نام یک اپراتور، وارد شود و مجوزهای او را به ارث ببرد، و اسکین‌ها و UUIDهای پایدار نیز خراب می‌شوند. تنها کاربرد قانونی، پشت یک پراکسی احراز هویت‌کننده مانند Velocity است که خودش بازیکنان را تأیید می‌کند. برای یک سرور معمولی روی true باقی می‌ماند.

آیا Paper از سرور وانیلای ماینکرفت بهتر است؟

برای تقریباً همه، بله: Paper یک فایل jar جایگزین است که جهان‌های وانیلا را بارگذاری می‌کند، کلاینت‌های دست‌نخورده را می‌پذیرد، موجودیت‌ها را تیک می‌زند و چانک‌ها را بسیار کارآمدتر بارگذاری می‌کند، و اکوسیستم افزونه‌ها را نیز اضافه می‌کند. استثنا، انجمن‌های فنی-ردستونی هستند که به رفتار دقیقاً بیت‌به‌بیت وانیلا نیاز دارند، که برخی بهینه‌سازی‌های Paper آن را تغییر می‌دهند. روی یک VPS کوچک، کارایی Paper عملاً RAM اضافی رایگان محسوب می‌شود.

چگونه از جهان ماینکرفت بدون خراب شدن نسخهٔ پشتیبان تهیه کنم؟

هرگز دایرکتوری جهان را در حالی که سرور در حال نوشتن در آن است بایگانی نکنید، رقابت یک کپی با نوشتن فایل منطقه‌ای منجر به چانک‌های خرابی می‌شود که تنها در زمان بازیابی کشف می‌کنید. یا سرور را متوقف کنید، دایرکتوری‌های جهان را tar کنید و دوباره راه‌اندازی کنید، یا آن را با save-off, save-all flush, tar, save-on از طریق RCON زنده نگه دارید. سپس بایگانی را از VPS خارج کنید.

#minecraft#game-server#java#ubuntu#self-hosting