برای سرور ماینکرافت جاوا روی اوبونتو، جاوای مناسب نسخهٔ بازی (برای نسخههای جدید OpenJDK 21) را نصب کنید، فایل jar سرور Paper را دانلود کنید، با قبول EULA و تعیین رم با گزینهٔ Xmx اجرا کنید و پورت 25565 را در فایروال باز کنید. سرور را با یک کاربر جداگانه و سرویس systemd اجرا کنید تا همیشه روشن بماند، و از پوشهٔ دنیا بکاپ خودکار بگیرید. برای چند بازیکن، ۲ هسته و ۴ گیگ رم شروع مناسبی است.
چرا سرور ماینکرافت روی VPS؟
بازی با دوستان روی سرور شخصی ماینکرافت، تجربهای کاملاً متفاوت از بازی تکنفره است: دنیای مشترک، قوانین دلخواه، افزونهها و مینیگیمها. میتوانید سرور را روی کامپیوتر خانگی اجرا کنید، اما باید شبانهروز روشن بماند، آیپی عمومی و پورت باز داشته باشد و اینترنت خانگی معمولاً آپلود محدودی دارد. سرور مجازی همهٔ این مشکلات را حل میکند: همیشه روشن، آیپی ثابت و شبکهٔ پرسرعت دیتاسنتر.
این راهنما برای نسخهٔ جاوا و اوبونتو ۲۴.۰۴ نوشته شده است. نسخهٔ Bedrock (موبایل و کنسول) نرمافزار سرور جداگانهای دارد، هرچند اصول کلی یکسان است.
انتخاب منابع سرور
ماینکرافت بیشتر از هر چیز به رم و سرعت تکهستهای پردازنده حساس است. شبیهسازی اصلی دنیا (Tick) عمدتاً روی یک رشته اجرا میشود؛ پس پردازندهٔ سریع از تعداد زیاد هسته مهمتر است.
- چند دوست، بدون افزونهٔ سنگین: ۲ هسته و ۴ گیگابایت رم.
- دهها بازیکن یا افزونههای متعدد: ۴ هسته و ۸ گیگابایت رم.
- مدپکهای سنگین (Forge/Fabric با صدها مد): ۸ گیگابایت رم یا بیشتر.
دیسک SSD یا NVMe برای بارگذاری سریع chunkها اهمیت دارد. برای تخمین کلی، چقدر رم و CPU لازم دارم؟ را ببینید. لوکیشن سرور را نزدیک به بازیکنان انتخاب کنید؛ اگر همه در ایراناند، سرور ایران کمترین تأخیر را دارد.
قدم ۱: آمادهسازی سرور و نصب جاوا
ابتدا یک کاربر جداگانه برای سرور بازی بسازید. اجرای سرور با root خطرناک است؛ اگر افزونهای آسیبپذیر باشد، مهاجم کنترل کامل سرور را به دست میگیرد.
sudo apt update && sudo apt upgrade -y
sudo apt install -y openjdk-21-jre-headless screen
sudo useradd -r -m -d /opt/minecraft -s /bin/bash minecraft
java -version
نسخههای جدید ماینکرافت به جاوای ۲۱ نیاز دارند. اگر نسخهٔ قدیمیتری از بازی را اجرا میکنید، نسخهٔ جاوای مورد نیاز آن را در مستندات بررسی کنید.
قدم ۲: دانلود و اجرای اولیهٔ Paper
Paper نسخهٔ بهینهشدهٔ سرور رسمی است که کارایی بسیار بهتری دارد و از افزونههای Bukkit و Spigot پشتیبانی میکند. فایل jar آخرین نسخه را از سایت رسمی Paper دانلود کنید و در /opt/minecraft/server قرار دهید:
sudo -u minecraft mkdir -p /opt/minecraft/server
cd /opt/minecraft/server
# download paper-<version>.jar from the official PaperMC site and rename it:
sudo -u minecraft mv paper-*.jar paper.jar
sudo -u minecraft java -Xms2G -Xmx3G -jar paper.jar --nogui
اجرای اول با پیغامی دربارهٔ EULA متوقف میشود. فایل eula.txt را باز کنید و مقدار را به eula=true تغییر دهید؛ این یعنی شرایط استفادهٔ ماینکرافت را پذیرفتهاید. دوباره اجرا کنید تا دنیا ساخته شود، سپس با تایپ stop سرور را متوقف کنید.
گزینهٔ -Xmx حداکثر رم جاوا را تعیین میکند. آن را کمتر از کل رم سرور بگذارید تا سیستمعامل هم فضای کافی داشته باشد؛ مثلاً روی سرور ۴ گیگابایتی، ۳ گیگابایت. اختصاص تمام رم به جاوا باعث کمبود حافظه و کشته شدن پروسه میشود.
- جاوا و کاربر جدا
OpenJDK 21 و کاربر minecraft بدون دسترسی root.
- Paper و EULA
دانلود jar رسمی، پذیرش EULA و اجرای اول.
- server.properties
تعداد بازیکن، فاصلهٔ دید، whitelist و online-mode.
- فایروال
فقط پورت 25565 و SSH.
- systemd
اجرای همیشگی و ریاستارت خودکار.
- بکاپ
نسخهٔ روزانه از پوشههای دنیا خارج از سرور.
قدم ۳: تنظیمات اصلی در server.properties
مهمترین گزینهها:
motd: پیامی که در فهرست سرورها نمایش داده میشود.max-players: حداکثر تعداد بازیکن همزمان.view-distanceوsimulation-distance: فاصلهٔ دید و شبیهسازی. کم کردن این دو، بیشترین اثر را بر کاهش مصرف منابع دارد.online-mode: اگرtrueباشد، فقط حسابهای اصلی ماینکرافت وارد میشوند. برای امنیت، آن را روشن نگه دارید.white-list: با فعالسازی، فقط بازیکنانی که خودتان اضافه میکنید وارد میشوند.server-port: پیشفرض 25565.
قدم ۴: باز کردن پورت
sudo ufw allow 25565/tcp
sudo ufw allow OpenSSH
sudo ufw enable
اگر از ویژگی Query یا RCON استفاده نمیکنید، پورتهای آنها را باز نکنید. بهویژه RCON (کنترل از راه دور) را هرگز روی اینترنت باز نگذارید. جزئیات فایروال در راهنمای UFW.
قدم ۵: اجرای همیشگی با systemd
فایل /etc/systemd/system/minecraft.service را بسازید:
[Unit]
Description=Minecraft Paper Server
After=network.target
[Service]
User=minecraft
WorkingDirectory=/opt/minecraft/server
ExecStart=/usr/bin/java -Xms2G -Xmx3G -jar paper.jar --nogui
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target
سپس:
sudo systemctl daemon-reload
sudo systemctl enable --now minecraft
sudo journalctl -u minecraft -f
حالا سرور پس از ریاستارت یا خطا خودکار بالا میآید. توضیح کامل فایلهای سرویس در راهنمای سرویسهای systemd آمده است. برای ارسال فرمان به کنسول سرور در این حالت، RCON را فقط روی 127.0.0.1 فعال کنید و با ابزاری مثل mcrcon از داخل سرور به آن وصل شوید.
- رم کافی با Xmx مناسب
- پردازندهٔ سریع تکهستهای
- دیسک SSD یا NVMe
- فاصلهٔ دید متعادل
- تعداد زیاد هستهٔ کند
- پورت شبکهٔ بسیار پرسرعت
- اختصاص همهٔ رم به جاوا
- افزونههای تزئینی سنگین
قدم ۶: بکاپ دنیا
دنیای ماینکرافت حاصل ساعتها ساختوساز بازیکنان است و از دست رفتنش جبرانناپذیر است. پوشههای world، world_nether و world_the_end را روزانه بکاپ بگیرید. سادهترین روش، یک اسکریپت فشردهسازی با کرون است؛ ابزار rsync برای انتقال بکاپ به سرور دیگر مناسب است و در آموزش بکاپ با rsync توضیح داده شده است. برای بکاپ سازگار، پیش از کپی با فرمان save-off و save-all ذخیرهسازی را موقتاً متوقف کنید و پس از پایان، save-on را اجرا کنید.
بهینهسازی کارایی
- فاصلهٔ دید و شبیهسازی را متناسب با منابع کم کنید.
- دنیا را پیشتولید (Pre-generate) کنید تا ساخت chunkهای جدید در حین بازی بار ایجاد نکند؛ افزونههایی مثل Chunky برای این کار هستند.
- افزونههای سنگین یا بلااستفاده را حذف کنید.
- مصرف را با فرمان
/tpsو/msptدر Paper و ابزارهایی مثل spark بسنجید.
اتصال بازیکنان
بازیکنان در بخش Multiplayer آیپی سرور را وارد میکنند (و اگر پورت پیشفرض نیست، بعد از دونقطه شمارهٔ پورت). برای آدرس بهیادماندنی، یک رکورد A مثل mc.example.com بسازید؛ دربارهٔ رکوردها در راهنمای رکوردهای DNS بخوانید.
برای راهاندازی، یک سرور مجازی ساعتی کافی است؛ اگر فقط آخر هفتهها بازی میکنید، از دنیا بکاپ بگیرید و سرور را بین جلسهها حذف و دوباره بسازید تا فقط برای ساعتهای بازی هزینه بدهید.
مدیریت بازیکنان و دسترسیها
پس از راهاندازی، مهمترین کار مدیریتی کنترل این است که چه کسانی وارد سرور میشوند. اگر سرور برای دوستان یا یک جامعهٔ کوچک است، whitelist را فعال کنید تا فقط نامهای تأییدشده بتوانند وارد شوند. در کنسول سرور با دستور whitelist on آن را روشن کنید و با whitelist add نام بازیکنان را اضافه کنید. دسترسی اپراتور (op) را فقط به افراد مورد اعتماد بدهید؛ اپراتور میتواند دنیا را تغییر دهد، بازیکنان را اخراج کند و حتی سرور را متوقف کند.
برای سرورهای عمومی، افزونههای مدیریتی مثل LuckPerms امکان تعریف نقشها و سطح دسترسی را فراهم میکنند و افزونههای ضدتقلب و ثبت رویداد کمک میکنند خرابکاریها را پیدا و برگردانید. هر افزونه را فقط از منبع رسمی دانلود کنید؛ فایلهای jar ناشناس میتوانند کد مخرب داشته باشند و به کل سرور دسترسی پیدا کنند.
هزینه را چطور مدیریت کنیم؟
سرور بازی معمولاً همیشه پر نیست. اگر گروه شما فقط شبها یا آخر هفته بازی میکند، صورتحساب ساعتی کمک میکند هزینه را به زمان واقعی استفاده نزدیک کنید. پیش از خاموش کردن، از دنیا بکاپ بگیرید و آن را خارج از سرور نگه دارید؛ اینطور حتی اگر سرور را حذف و بعداً دوباره بسازید، دنیا با همهٔ ساختهها برمیگردد. اگر تعداد بازیکنان زیاد شد، بهجای ساخت سرور جدید، پلن را ارتقا دهید و پس از آن مصرف رم و TPS را در ساعتهای شلوغ دوباره بسنجید. توجه کنید که ماینکرافت بیشتر به سرعت تکهستهٔ پردازنده حساس است تا تعداد هستهها؛ پس افزایش بیرویهٔ هسته همیشه کارایی را بهتر نمیکند.
بررسی سلامت سرور در طول بازی
دستور tps در Paper نشان میدهد سرور چند تیک در ثانیه پردازش میکند؛ عدد نزدیک بیست یعنی سرور سالم است. اگر عدد پایین آمد، با ابزار spark که در Paper موجود است یک پروفایل کوتاه بگیرید تا ببینید کدام بخش (موجودات، ردستون یا یک افزونه) بیشترین زمان را مصرف میکند. این کار از حدس زدن و ارتقای بیدلیل منابع جلوگیری میکند.
سؤالات متداول
سرور ماینکرافت چقدر رم لازم دارد؟
برای چند دوست بدون مد سنگین، ۴ گیگابایت رم سرور (با Xmx حدود ۳ گیگ) کافی است. با افزایش بازیکنان، افزونهها یا مدپکها، ۸ گیگابایت یا بیشتر لازم میشود.
Paper بهتر است یا سرور رسمی؟
Paper با سرور رسمی سازگار است اما بهینهسازیهای زیادی دارد و از افزونهها پشتیبانی میکند. برای بیشتر سرورها گزینهٔ بهتری است؛ برای مدپکهای Forge یا Fabric باید سرور مخصوص همان را نصب کنید.
چرا بازیکنان نمیتوانند به سرور وصل شوند؟
پورت 25565 در فایروال بسته است، سرور اجرا نمیشود یا نسخهٔ بازی بازیکن با سرور یکی نیست. وضعیت سرویس را با systemctl status minecraft و پورت را با ss -tlnp بررسی کنید.
آیا میتوانم سرور را خاموش کنم و بعداً ادامه دهم؟
بله، به شرطی که پوشههای دنیا بکاپ داشته باشند. در سرور ساعتی میتوانید بین جلسهها بکاپ بگیرید، سرور را حذف کنید و دفعهٔ بعد روی سرور تازه بازگردانی کنید.
از ۱٬۲۰۰ تومان در ساعت · پرداخت ریالی



