Сервер Майнкрафт на VPS: Paper, systemd і скільки потрібно RAM
Власний хостинг майнкрафт-сервера — це звичайний VPS: щоб запустити на ньому Minecraft Java, встановіть Java, завантажте Paper, запустіть його від окремого користувача як службу systemd і відкрийте TCP-порт 25565. Добирати сервер треба насамперед за пам’яттю: для компанії до десяти друзів розумний мінімум — тариф із 4 ГБ RAM, а кожен наступний гігабайт додає приблизно п’ятьох гравців.
Що знадобиться
- VPS з Ubuntu 24.04 або Debian 12 і root-доступ через SSH (див. Підключення через SSH).
- Достатньо пам’яті. Близько 1 ГБ залиште системі та накладним витратам JVM, решту віддайте під купу (
-Xmx):
| Гравців (Paper, легкі плагіни) | Тариф | Купа |
|---|---|---|
| до 5 | Pulse — 2 vCPU, 2 ГБ, $10 на місяць | -Xmx1G |
| 5–10 | Drive — 2 vCPU, 4 ГБ, $15 на місяць | -Xmx3G |
| 10–20 | Forge — 4 vCPU, 8 ГБ, $22 на місяць | -Xmx6G |
| 20–30 | Titan — 8 vCPU, 12 ГБ, $32 на місяць | -Xmx10G |
Важким модпакам і 30+ гравцям потрібен виділений сервер. Стежте й за диском: у Drive 20 ГБ, а світ, який гравці вільно досліджують, зростає на гігабайти, тож межу світу встановлюйте одразу. Докладніше про вибір — у статті Як обрати тариф VPS.
1. Встановлення Java
Paper для Minecraft 1.21.x потребує Java 21; новішим версіям може знадобитися Java 25 — це зазначено на сторінці завантаження Paper. У репозиторії Adoptium є обидві версії для Ubuntu 24.04 і Debian 12:
apt update && apt install -y wget gpg
wget -qO- https://packages.adoptium.net/artifactory/api/gpg/key/public | gpg --dearmor -o /usr/share/keyrings/adoptium.gpg
echo "deb [signed-by=/usr/share/keyrings/adoptium.gpg] https://packages.adoptium.net/artifactory/deb $(. /etc/os-release; echo $VERSION_CODENAME) main" > /etc/apt/sources.list.d/adoptium.list
apt update && apt install -y temurin-21-jre
java -version
2. Користувач, Paper і перший запуск
Скопіюйте посилання на останню збірку зі сторінки papermc.io/downloads/paper і вставте його в команду:
useradd -r -m -d /opt/minecraft -s /usr/sbin/nologin minecraft
cd /opt/minecraft
runuser -u minecraft -- wget -O paper.jar "<link to the Paper build>"
runuser -u minecraft -- java -Xmx1G -jar paper.jar --nogui
sed -i 's/eula=false/eula=true/' eula.txt
runuser -u minecraft -- java -Xmx1G -jar paper.jar --nogui
Перший запуск лише створює eula.txt і завершується. Другий генерує світ. Коли в консолі з’явиться Done, введіть op ВашНік, whitelist add ВашНік і stop. Для закритого сервера пропишіть у server.properties:
white-list=true
enforce-whitelist=true
max-players=10
view-distance=8
simulation-distance=6
3. Служба systemd
/etc/systemd/system/minecraft.service (купу вказано для Drive, свою візьміть із таблиці):
[Unit]
Description=Minecraft Paper server
After=network-online.target
Wants=network-online.target
[Service]
User=minecraft
WorkingDirectory=/opt/minecraft
ExecStart=/usr/bin/java -Xms3G -Xmx3G -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -jar paper.jar --nogui
Restart=on-failure
RestartSec=10
SuccessExitStatus=0 143
TimeoutStopSec=90
[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable --now minecraft
journalctl -u minecraft -f
systemctl stop minecraft надсилає SIGTERM, і Paper зберігає світ перед виходом. Після перезавантаження сервер підніметься сам.
4. Файрвол: порт 25565
apt install -y ufw
ufw allow OpenSSH
ufw allow 25565/tcp
ufw enable
Гравці додають сервер за IP-адресою; 25565 — порт за замовчуванням, вказувати його не потрібно.
Типові помилки
UnsupportedClassVersionErrorпід час запуску: Java застара для цієї збірки Paper. Встановіть ту версію, що вказана на сторінці завантаження.- Сервер падає без помилки в журналі: ядро завершило його через брак пам’яті. Перевірити:
journalctl -k | grep -i "out of memory". Зменште-Xmxабо перейдіть на більший тариф — зміна тарифу виконується на запит, зазвичай без перевстановлення. - Лаги за кількох гравців: зменште
view-distance, заздалегідь згенеруйте світ усередині межі й знайдіть, що з’їдає тік, вбудованим/spark profiler. - Ніхто не може підключитися: перевірте
ss -tlnp | grep 25565іufw status. - Немає резервних копій: це ваше завдання. Зупиніть сервер, заархівуйте світи й скопіюйте архів за межі VPS:
systemctl stop minecraft
tar czf /root/world-$(date +%F).tar.gz -C /opt/minecraft world world_nether world_the_end
systemctl start minecraft