Сервер Minecraft Java Edition на VPS: Paper, Java 25, systemd и бэкапы мира

Установка ядра Paper на Debian 12 / Ubuntu 24.04: Java 25 из Adoptium, отдельный пользователь, автозапуск через systemd и screen, белый список, server.properties и резервные копии по cron.

7 октября 2026 г.·5 мин чтения·minecraft, paper, java, systemd, debian

Сервер Minecraft на VPS не зависит от вашего компьютера: друзья заходят когда угодно, а правила, плагины и настройки задаёте вы. Ниже — установка сервера Java Edition на ядре Paper, автозапуск, открытие порта, белый список и резервные копии мира. Всё проверено на Debian 12, команды одинаково работают на Ubuntu 24.04. На момент написания актуальна Minecraft 26.3 и Paper той же версии.

Paper — это сборка сервера для Java Edition, которая работает заметно быстрее официальной и умеет плагины. Игроки подключаются обычным клиентом, ставить ничего не нужно. Про разницу между ядрами и установку плагинов — в статье Ядра и плагины Minecraft.

Два момента, о которые спотыкаются чаще всего:

  • Память. Java резервирует столько, сколько вы указали в -Xmx, плюс накладные расходы. При -Xmx2G процесс занимает около 2,4 ГБ. Стартуйте с 2–4 ГБ под игру и добавляйте по мере роста числа игроков и плагинов.
  • Версия Java. Minecraft 26.1 и новее требует Java 25, а в репозиториях Debian 12 только Java 17. Поэтому Java ставим из репозитория Eclipse Adoptium.

Только Java Edition. Для Bedrock Edition (телефоны, консоли) нужен другой сервер — эта инструкция не подойдёт.

Что нужно

  • Сервер на tanaka.host с Debian 12 или Ubuntu 24.04 и не меньше 4 ГБ памяти.
  • Доступ по SSH под root — см. Подключение по SSH.
  • Лицензионная Minecraft Java Edition у вас и у игроков: по умолчанию сервер проверяет аккаунты.

1. Java 25

Подключите репозиторий Adoptium и поставьте Temurin 25. Команды одинаковы для Debian и Ubuntu:

apt install -y wget apt-transport-https gpg
wget -qO - https://packages.adoptium.net/artifactory/api/gpg/key/public | gpg --dearmor | tee /etc/apt/trusted.gpg.d/adoptium.gpg > /dev/null
echo "deb https://packages.adoptium.net/artifactory/deb $(awk -F= '/^VERSION_CODENAME/{print$2}' /etc/os-release) main" | tee /etc/apt/sources.list.d/adoptium.list
apt update
apt install -y temurin-25-jre

Проверьте:

java -version

В выводе должно быть openjdk version "25…".

2. Пользователь и ядро Paper

Запускать игровой сервер от root нельзя: уязвимость в плагине отдаст злоумышленнику весь VPS. Создайте пользователя minecraft с домашней папкой /opt/minecraft и поставьте screen — через него вы будете заходить в консоль работающего сервера:

useradd -r -m -d /opt/minecraft -s /bin/bash minecraft
apt install -y screen

Откройте papermc.io/downloads/paper, скопируйте ссылку на последнюю сборку нужной версии и скачайте её как paper.jar:

cd /opt/minecraft
curl -fsSL -o paper.jar "ССЫЛКА_НА_СБОРКУ"
chown minecraft:minecraft paper.jar

Без chown сервер не сможет работать с файлом.

3. Первый запуск и EULA

Переключитесь на пользователя minecraft и запустите сервер вручную:

su - minecraft
java -Xms2G -Xmx2G -jar paper.jar --nogui

Paper скачает файлы игры, создаст конфиги и остановится с сообщением You need to agree to the EULA. Примите лицензию и запустите снова:

sed -i 's/eula=false/eula=true/' eula.txt
java -Xms2G -Xmx2G -jar paper.jar --nogui

Когда в консоли появится Done и приглашение >, сервер готов. Введите stop, дождитесь завершения и вернитесь в root командой exit.

4. Автозапуск через systemd

Служба запустит сервер внутри screen, поднимет после сбоя и корректно сохранит мир при остановке. Сначала скрипт запуска с флагами JVM, которые рекомендует PaperMC:

nano /opt/minecraft/start.sh
#!/bin/sh
# Paper с 2 ГБ памяти и параметрами Java, которые рекомендует PaperMC
exec java -Xms2G -Xmx2G -XX:+AlwaysPreTouch -XX:+DisableExplicitGC -XX:+ParallelRefProcEnabled -XX:+PerfDisableSharedMem -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:G1HeapRegionSize=8M -XX:G1HeapWastePercent=5 -XX:G1MaxNewSizePercent=40 -XX:G1MixedGCCountTarget=4 -XX:G1MixedGCLiveThresholdPercent=90 -XX:G1NewSizePercent=30 -XX:G1RSetUpdatingPauseTimePercent=5 -XX:G1ReservePercent=20 -XX:InitiatingHeapOccupancyPercent=15 -XX:MaxGCPauseMillis=200 -XX:MaxTenuringThreshold=1 -XX:SurvivorRatio=32 -jar paper.jar --nogui

-Xms2G -Xmx2G — память для игры. Если на сервере больше, увеличьте оба значения, оставив системе хотя бы 1–1,5 ГБ.

Скрипт остановки отправляет в консоль stop и ждёт выхода процесса:

nano /opt/minecraft/stop.sh
#!/bin/sh
# Отправляет команду stop в консоль сервера и ждёт его завершения
screen -p 0 -S minecraft -X stuff "stop$(printf '\r')"
while kill -0 "$MAINPID" 2>/dev/null; do sleep 1; done

Права и сама служба:

chmod +x /opt/minecraft/start.sh /opt/minecraft/stop.sh
chown minecraft:minecraft /opt/minecraft/*.sh
nano /etc/systemd/system/minecraft.service
[Unit]
Description=Minecraft server
After=network-online.target
Wants=network-online.target

[Service]
User=minecraft
WorkingDirectory=/opt/minecraft
ExecStart=/usr/bin/screen -DmS minecraft /opt/minecraft/start.sh
ExecStop=/opt/minecraft/stop.sh
Restart=always
RestartSec=10
TimeoutStopSec=90

[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable --now minecraft
systemctl status minecraft

Дальше управляйте сервером только через systemd:

Команда Что делает
systemctl stop minecraft сохранить мир и выключить
systemctl restart minecraft перезапустить
systemctl start minecraft включить

stop в игровой консоли больше не выключает сервер. Из-за Restart=always systemd поднимет его через 10 секунд. Выключать — только systemctl stop minecraft.

5. Порт 25565

Если включён брандмауэр, откройте порт игры:

ufw allow 25565/tcp

Для firewalld на RHEL-системах: firewall-cmd --permanent --add-port=25565/tcp && firewall-cmd --reload. Подробнее — Брандмауэр UFW и firewalld. Проверить видимость сервера снаружи можно на любом сервисе статуса Minecraft-серверов, например mcsrvstat.us: введите IP, и он покажет версию и число игроков.

6. Белый список и оператор

В 26.3 белый список включён по умолчанию — зайдут только те, кого вы добавили. Откройте консоль сервера:

su - minecraft -c "screen -r minecraft"

Добавьте игроков и назначьте себя оператором (замените Steve на ник):

whitelist add Steve
op Steve

Выход из консоли без остановки сервера: Ctrl+A, затем D.

В клиенте: Сетевая игра → Добавить → в поле адреса IP вашего VPS. Порт по умолчанию писать не нужно.

Настройки server.properties

Файл /opt/minecraft/server.properties, после правок — systemctl restart minecraft.

Параметр По умолчанию Значение
motd A Minecraft Server описание в списке серверов
max-players 20 лимит одновременных игроков
white-list true пускать только из белого списка
online-mode true проверять лицензию аккаунта
difficulty easy peaceful, easy, normal, hard
gamemode survival режим для новых игроков
view-distance 10 радиус отправки чанков игроку
simulation-distance 10 радиус, в котором мир «живёт»
server-port 25565 порт

Если сервер не тянет нагрузку, первым делом уменьшайте view-distance и simulation-distance.

Не выключайте online-mode без защиты. При online-mode=false зайти можно под любым ником, включая ник администратора. Только вместе с плагином авторизации и белым списком.

Резервные копии мира

Скрипт сбрасывает мир на диск, архивирует папку world в /opt/minecraft/backups и хранит 7 последних копий. Сервер не останавливается:

nano /opt/minecraft/backup.sh
#!/bin/sh
# Сохраняет мир, архивирует его в /opt/minecraft/backups и хранит 7 последних архивов
cd /opt/minecraft || exit 1
screen -p 0 -S minecraft -X stuff "save-off$(printf "\r")"
screen -p 0 -S minecraft -X stuff "save-all flush$(printf "\r")"
sleep 10
mkdir -p backups
tar -czf "backups/world-$(date +%F-%H%M).tar.gz" world
screen -p 0 -S minecraft -X stuff "save-on$(printf "\r")"
ls -1t backups/world-*.tar.gz | tail -n +8 | xargs -r rm --

Запуск каждую ночь в 4:00 от пользователя minecraft:

chmod +x /opt/minecraft/backup.sh
chown minecraft:minecraft /opt/minecraft/backup.sh
echo "0 4 * * * /opt/minecraft/backup.sh" | crontab -u minecraft -

Копии на том же диске не спасут при потере сервера — периодически уносите их наружу, см. Резервные копии VPS и Бэкап через restic в S3.

Частые ошибки

Сообщение Причина и решение
Minecraft 26.1 and newer requires running the server with Java 25 or above Старая Java. Поставьте Temurin 25 из шага 1.
You need to agree to the EULA in order to run the server В eula.txt замените eula=false на eula=true.
Вас нет в белом списке этого сервера! whitelist add Ник в консоли.
Время ожидания истекло systemctl status minecraft, ufw status, затем проверка через внешний сервис статуса.
FAILED TO BIND TO PORT Порт занят — скорее всего, сервер уже запущен службой, а вы стартуете второй вручную.
Клиент несовместим! Используйте 26.3 Версия клиента не совпадает с версией сервера — выберите ту же в лаунчере.

Следующий шаг — плагины и выбор ядра.