این همراهِ عملیِ صفحهی VPS برای سرور بازی ماست. آن صفحه دربارهی این است که کدام پلن جور درمیآید؛ این یکی دربارهی این است که واقعاً سرور را برپا کنید — Paper، یک سرویس درستوحسابی systemd، پیکربندیای که RAM را برایتان صرفهجویی میکند، فایروال و پشتیبانها. تا پایان یک سرور ماینکرافت خواهید داشت که از یک کرش جان بهدر میبرد، از یک ریبوت جان بهدر میبرد و بیسروصدا تمام جعبهتان را نمیبلعد.
یک نکتهی صادقانه پیش از شروع: محدودیتهای CPU و RAM از صفحهی مورد کاربرد هنوز پابرجاست. Paper روی پلن Small یا Medium برای یک جمع دوستانه عالی است. یک مجموعهی ۱۵۰-ماژولی برای یک جامعهی بزرگ چیزی نیست که این پلنها برایش ساخته شده باشند، و هیچ مقدار پیکربندی این را درست نمیکند. حالا که این روشن شد، بیایید بسازیم.
۱. نصب Java
Paper روی Java اجرا میشود. یک JDK بدون رابط گرافیکی نصب کنید — برای یک نسخهی جاری ماینکرافت این یعنی Java 21:
sudo apt update
sudo apt install -y openjdk-21-jre-headless
java -version
اگر نسخهی ماینکرافت شما قدیمیتر است، همان Javaای را که میخواهد نصب کنید (نسخهی 17 برای دورهی 1.18-1.20). لاگهای سرور اگر نسخه اشتباه باشد بلندبلند شکایت میکنند.
۲. راهاندازی پوشهی سرور و Paper
سرور را با کاربر خودش اجرا کنید، نه root — اگر روزی چیزی خراب شد، میخواهید شعاع انفجار کوچک باشد.
sudo adduser --system --group --home /opt/minecraft minecraft
sudo -u minecraft mkdir -p /opt/minecraft/server
cd /opt/minecraft/server
فایل jar مربوط به Paper را برای نسخهی ماینکرافت خود دانلود کنید (نشانی را از صفحهی دانلودشان بردارید) و آن را با نام server.jar ذخیره کنید:
sudo -u minecraft wget -O server.jar "PASTE_PAPER_DOWNLOAD_URL_HERE"
یکبار اجرایش کنید تا فایلهای پیکربندی ساخته شوند، سپس EULA را بپذیرید:
sudo -u minecraft java -Xms1G -Xmx3G -jar server.jar --nogui
# بلافاصله متوقف میشود و از شما میخواهد EULA را بپذیرید
sudo -u minecraft sed -i 's/eula=false/eula=true/' eula.txt
مقدار -Xmx3G سقف هیپ JVM است. روی پلن Small با ۴ گیگابایت، حدود ۳ گیگابایت برای JVM به سیستمعامل فضای تنفس میدهد. آن را برابر کل RAM نگذارید — JVM ورای هیپ سربار دارد و قاتل OOM چانه نمیزند.
۳. تنظیم server.properties برای صرفهجویی در RAM
اینجا جایی است که مجانی برای خودتان کارایی میخرید. server.properties را باز کنید و تنظیم کنید:
view-distance=8
simulation-distance=6
max-players=10
view-distance— تعداد چانکهایی که دور هر بازیکن بارگذاریشده نگه داشته میشوند. مقدار پیشفرض 10 دستودلباز است؛ 8 (یا حتی 6) RAM و CPU را بهطور محسوسی میکاهد و تقریباً هیچکس تفاوت را متوجه نمیشود.simulation-distance— اینکه موجودات، ردستون و رشد محصولات تا چه فاصلهای واقعاً tick میخورند. کمتر ارزانتر است. 6 نقطهی شروع معقولی است.max-players— آن را روی چیزی بگذارید که واقعاً انتظار دارید، تا یک جمعیت غافلگیرکننده بودجهی RAM شما را منفجر نکند.
واقعیت تکرشتهای را به یاد داشته باشید: tick ماینکرافت روی یک هسته تکیه دارد. اگر TPS افت کند، RAM بیشتر کمکی نمیکند — کاهش simulation-distance و سقف موبها کمک میکند.
۴. اجرا بهعنوان یک سرویس systemd
این همان بخشی است که «یک jar که یکبار اجرا کردم» را به «یک سرور» تبدیل میکند. فایل /etc/systemd/system/minecraft.service را بسازید:
[Unit]
Description=Minecraft Paper Server
After=network.target
[Service]
User=minecraft
Group=minecraft
WorkingDirectory=/opt/minecraft/server
ExecStart=/usr/bin/java -Xms1G -Xmx3G -jar server.jar --nogui
Restart=on-failure
RestartSec=10
SuccessExitStatus=0 143
[Install]
WantedBy=multi-user.target
خط Restart=on-failure همان خطی است که اهمیت دارد — اگر JVM کرش کند، systemd آن را در ده ثانیه برمیگرداند. SuccessExitStatus=... 143 جلوی این را میگیرد که systemd یک خاموشیِ عادیِ SIGTERM را شکست بپندارد. فعال و روشنش کنید:
sudo systemctl daemon-reload
sudo systemctl enable --now minecraft
sudo systemctl status minecraft
sudo journalctl -u minecraft -f # لاگ زنده
حالا هنگام بوت شروع میشود، هنگام کرش دوباره راه میافتد و لاگها به journald میروند.
۵. باز کردن پورت فایروال
ماینکرافت بهطور پیشفرض روی TCP 25565 گوش میدهد. فقط همان را باز کنید:
sudo ufw allow 25565/tcp
sudo ufw enable
آدرس IP سرور را به دوستانتان بدهید (و :25565 را اگر پورت را عوض کردید). چیزی را که لازم ندارید باز نکنید — کل نکتهی اجرای جعبهی خودتان این است که شما تصمیم میگیرید چه چیزی قابل دسترس باشد.
۶. پشتیبانگیری از دنیا
همان کاری که مردم تا روزی که آرزو میکنند کاش نکرده بودند از آن میگذرند. یک اسکریپت ساده:
#!/bin/bash
cd /opt/minecraft/server
TS=$(date +%Y%m%d-%H%M)
tar czf /opt/minecraft/backups/world-$TS.tar.gz world world_nether world_the_end
آن را از کرون اجرا کنید و — این نیمهی مهم است — آرشیو را از روی سرور کپی کنید، به object storage یا ماشین دیگری. پشتیبانی روی همان دیسکِ دنیا با دیسک میمیرد. اگر دنیایتان مهم است، پیش از tar در کنسول سرور save-off و save-all را اجرا کنید تا هرگز میان نوشتن اسنپشات نگیرید.
کل ماجرا همین است
Java، Paper، پیکربندی تنظیمشده، یک سرویس systemd که خودکار راهاندازی میشود، یک پورت فایروال و پشتیبانهایی که جای دیگری زندگی میکنند. این یک سرور ماینکرافت است که مثل یک سرور رفتار میکند.
اگر هنوز جعبهای ندارید: یک پلن انتخاب کنید — Small (۸ دلار) برای یک گروه کوچک، Medium (۱۲ دلار) اگر به سمت ده بازیکن میروید — با USDC یا USDT بپردازید (بدون KYC، بدون مدارک) و در حدود ۶۰ ثانیه root خواهید داشت. سپس این صفحه را قدمبهقدم پیش بروید. و یادآوری صادقانه برای آخرین بار: این راهاندازی درست برای vanilla یا Paper با دوستان است. یک مجموعهماژول سنگین برای یک جامعهی بزرگ به سختافزار متفاوتی نیاز دارد، و ما ترجیح میدهیم این را اول از ما بشنوید.
نظرات
هنوز نظری نیست. اولین نفر باشید.