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

Сервер 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=alwayssystemd поднимет его через 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 |
Версия клиента не совпадает с версией сервера — выберите ту же в лаунчере. |
Следующий шаг — плагины и выбор ядра.