داشتن سرور Minecraft اختصاصی یعنی دنیای بازی ۲۴ ساعته روشن است، دوستانتان هر وقت بخواهند وارد میشوند و کنترل کامل افزونهها، قوانین و بکاپها با شماست. در این آموزش قدمبهقدم سرور ماینکرفت را روی VPS لینوکس راهاندازی میکنیم: نصب Java، اجرای Paper، تنظیم حافظه، اجرای دائمی با systemd، فایروال، امنیت و بکاپ خودکار.
فهرست مطالب
- Java یا Bedrock؟ Vanilla یا Paper؟
- سرور مورد نیاز
- گام ۱: آمادهسازی سرور و نصب Java
- گام ۲: دانلود و اولین اجرای Paper
- گام ۳: تنظیمات server.properties
- گام ۴: تنظیم حافظه و اسکریپت اجرا
- گام ۵: اجرای دائمی با systemd
- گام ۶: فایروال و اتصال بازیکنان
- امنیت سرور
- بکاپ خودکار دنیا
- بهینهسازی و رفع لگ
- سوالات متداول
Java یا Bedrock؟ Vanilla یا Paper؟
- Java Edition: نسخه کامپیوتر با بیشترین افزونه و ماد. این آموزش برای Java است.
- Bedrock Edition: نسخه موبایل، کنسول و ویندوز استور، با نرمافزار سرور جداگانه (Bedrock Dedicated Server). با افزونه Geyser میتوانید بازیکنان Bedrock را هم به سرور Java وصل کنید.
برای نرمافزار سرور Java:
- Vanilla: سرور رسمی، بدون افزونه.
- Paper: سازگار با Vanilla، بسیار بهینهتر و با پشتیبانی از افزونههای Bukkit و Spigot؛ انتخاب پیشنهادی برای بیشتر سرورها.
- Fabric یا Forge: برای مادها و مادپکها.
سرور مورد نیاز
Minecraft بخش اصلی شبیهسازی را روی یک رشته اجرا میکند، پس فرکانس پردازنده از تعداد هسته مهمتر است. برای ۵ تا ۱۰ بازیکن بدون مادپک سنگین، ۲ هسته سریع و ۳ تا ۴ گیگابایت RAM کافی است. جدول کامل برای بازیهای مختلف در سرور گیم چه مشخصاتی لازم دارد. سیستمعامل این آموزش Ubuntu ۲۲.۰۴ یا ۲۴.۰۴ است.
گام ۱: آمادهسازی سرور و نصب Java
ابتدا امنسازی اولیه سرور را انجام دهید؛ چکلیست در تنظیمات امنیتی ضروری VPS. سپس یک کاربر جداگانه برای سرور بسازید تا بازی با دسترسی root اجرا نشود:
sudo apt update && sudo apt install -y openjdk-21-jre-headless screen
sudo adduser --system --group --home /opt/minecraft minecraft
java -version
نسخههای جدید Minecraft (از ۱٫۲۰٫۵ به بعد) به Java ۲۱ نیاز دارند. اگر نسخه قدیمیتری اجرا میکنید، نسخه Java سازگار با آن را نصب کنید.
گام ۲: دانلود و اولین اجرای Paper
آخرین نسخه Paper را برای نسخه Minecraft مورد نظر از سایت رسمی PaperMC دانلود کنید و در پوشه سرور قرار دهید:
sudo -u minecraft -s
cd /opt/minecraft
# آدرس دقیق فایل را از سایت papermc.io بردارید
wget -O paper.jar "LINK_FROM_PAPERMC"
java -Xms2G -Xmx2G -jar paper.jar --nogui
اولین اجرا متوقف میشود و فایل eula.txt را میسازد. پس از خواندن قوانین Minecraft، مقدار آن را تأیید کنید و دوباره اجرا کنید:
sed -i 's/eula=false/eula=true/' eula.txt
در اجرای دوم، دنیا ساخته میشود. با دستور stop در کنسول، سرور را متوقف کنید.
گام ۳: تنظیمات server.properties
motd=سرور ماینکرفت ما
max-players=20
online-mode=true
white-list=true
enforce-whitelist=true
difficulty=normal
view-distance=8
simulation-distance=6
enable-rcon=false
server-port=25565
online-mode=trueهویت بازیکنان را با حساب رسمی تأیید میکند؛ خاموش کردن آن امنیت را بهشدت کاهش میدهد.white-listفقط بازیکنان مجاز را راه میدهد؛ برای سرور دوستانه بهترین گزینه است. بازیکنان را باwhitelist add NAMEاضافه کنید.view-distanceوsimulation-distanceکمتر، مصرف پردازنده و RAM را بهشدت کاهش میدهند.- RCON را خاموش بگذارید، مگر اینکه به آن نیاز دارید؛ در آن صورت رمز قوی بگذارید و پورتش را در فایروال باز نکنید.
گام ۴: تنظیم حافظه و اسکریپت اجرا
به سرور حدود ۱ گیگابایت کمتر از کل RAM ماشین اختصاص دهید. مقدار -Xms و -Xmx را برابر بگذارید. فایل /opt/minecraft/start.sh:
#!/bin/bash
cd /opt/minecraft
exec java -Xms3G -Xmx3G -XX:+UseG1GC -XX:+ParallelRefProcEnabled \
-XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions \
-XX:+DisableExplicitGC -XX:+AlwaysPreTouch \
-jar paper.jar --nogui
chmod +x /opt/minecraft/start.sh
این پرچمها بخشی از تنظیمات رایج و توصیهشده جامعه Paper برای جمعآوری حافظه G1 هستند و توقفهای GC را کاهش میدهند. اختصاص RAM بیش از نیاز، کمکی نمیکند و ممکن است توقفهای GC را طولانیتر کند.
گام ۵: اجرای دائمی با systemd
فایل /etc/systemd/system/minecraft.service:
[Unit]
Description=Minecraft Server
After=network-online.target
[Service]
User=minecraft
WorkingDirectory=/opt/minecraft
ExecStart=/usr/bin/screen -DmS mc /opt/minecraft/start.sh
ExecStop=/usr/bin/screen -p 0 -S mc -X eval 'stuff "stop"\015'
TimeoutStopSec=60
Restart=on-failure
RestartSec=15
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now minecraft
sudo -u minecraft screen -r mc # ورود به کنسول؛ خروج با Ctrl+A سپس D
اجرای سرور داخل screen اجازه میدهد به کنسول دسترسی داشته باشید. دستور توقف، بهجای کشتن فرایند، فرمان stop را میفرستد تا دنیا درست ذخیره شود. برای آشنایی بیشتر با سرویسها، آموزش cron و systemd را ببینید.
گام ۶: فایروال و اتصال بازیکنان
sudo ufw allow 25565/tcp
sudo ufw status
بازیکنان در بخش Multiplayer، آدرس IP_SERVER (یا IP:PORT اگر پورت را تغییر دادهاید) را وارد میکنند. برای آدرس خواناتر، یک سابدامنه مثل mc.example.com با رکورد A به IP سرور بسازید؛ با رکورد SRV حتی میتوان پورت غیراستاندارد را پنهان کرد. اصول DNS در DNS چیست.
امنیت سرور
- سرور را با کاربر غیر root اجرا کنید (همین آموزش).
- افزونهها را فقط از منابع معتبر مثل Hangar، Modrinth یا SpigotMC دانلود کنید؛ افزونههای آلوده رایجاند.
- دسترسی OP را فقط به افراد مورد اعتماد بدهید و برای مدیریت دسترسیها از افزونهای مثل LuckPerms استفاده کنید.
- Paper و افزونهها را بهروز نگه دارید.
- حفاظت DDoS در لبه شبکه داشته باشید؛ سرورهای ماینکرفت عمومی هدف رایج حملاتاند. جزئیات در محافظت سرور بازی در برابر DDoS.
بکاپ خودکار دنیا
یک اسکریپت ساده که هر شب از دنیا نسخه فشرده میسازد و نسخههای قدیمیتر از ۱۴ روز را پاک میکند. فایل /opt/minecraft/backup.sh:
#!/bin/bash
cd /opt/minecraft
screen -p 0 -S mc -X eval 'stuff "save-off"\015'
screen -p 0 -S mc -X eval 'stuff "save-all flush"\015'
sleep 10
mkdir -p backups
tar -czf "backups/world-$(date +%F).tar.gz" world world_nether world_the_end
screen -p 0 -S mc -X eval 'stuff "save-on"\015'
find backups -name "world-*.tar.gz" -mtime +14 -delete
chmod +x /opt/minecraft/backup.sh
sudo -u minecraft crontab -e
# اضافه کنید:
30 4 * * * /opt/minecraft/backup.sh
یک نسخه از بکاپها را هم به محلی خارج از سرور منتقل کنید؛ دلیلش در بکاپ سرور چیست آمده است.
بهینهسازی و رفع لگ
- از قبل نقشه را بسازید: با افزونه Chunky بخشهایی از دنیا را پیش از ورود بازیکنان تولید کنید تا ساخت چانک در حین بازی لگ ایجاد نکند.
- پروفایل کنید: افزونه Spark نشان میدهد کدام افزونه، موجود یا مزرعه خودکار بیشترین زمان را میگیرد.
- TPS را زیر نظر بگیرید: سرور سالم ۲۰ Tick در ثانیه دارد؛ کمتر از آن یعنی لگ سمت سرور.
- محدودیت موجودات و مزرعهها: تنظیمات Paper امکان محدود کردن موجودات و ماشینهای Redstone سنگین را دارد.
سوالات متداول
سرور ماینکرفت چقدر RAM لازم دارد؟
برای ۵ تا ۱۰ بازیکن با Paper، حدود ۳ تا ۴ گیگابایت. با مادپکها یا بازیکنان بیشتر، ۸ گیگابایت یا بیشتر. اختصاص بیش از نیاز کمکی نمیکند.
بازیکنان نسخه کرکشده میتوانند وارد شوند؟
فقط اگر online-mode خاموش باشد که امنیت سرور را بهشدت کاهش میدهد و هر کسی میتواند با نام دیگران وارد شود. اگر این کار را میکنید، حتماً افزونه احراز هویت و whitelist داشته باشید.
چطور سرور را به نسخه جدید Minecraft ارتقا دهم؟
ابتدا بکاپ کامل بگیرید، سازگاری افزونهها را بررسی کنید، سپس فایل Paper نسخه جدید را جایگزین کنید. به نسخه قدیمیتر نمیتوان برگشت، مگر از بکاپ.
آیا میتوانم بازیکنان موبایل را هم وصل کنم؟
بله، با افزونه Geyser (و Floodgate برای ورود بدون حساب Java) بازیکنان Bedrock به سرور Java وصل میشوند. پورت ۱۹۱۳۲ UDP را هم باز کنید.
سرور ماینکرفت با پینگ پایین
سرورهای مجازی گیم تراست هاست با پردازنده فرکانس بالا، حفاظت DDoS در لبه شبکه و دسترسی Root کامل، برای اجرای سرور Minecraft آمادهاند.