Minecraft Руководство

Как настроить сервер Minecraft Java на VPS с Ubuntu 24.04

Пошаговая установка Minecraft Java и Paper на Ubuntu 24.04: Java, whitelist, автозапуск, порты и резервная копия мира.

Как настроить сервер Minecraft Java на VPS с Ubuntu 24.04

Установим Paper как отдельную службу Linux, ограничим вход списком игроков и подготовим копию мира для восстановления. Инструкция рассчитана на чистую Ubuntu 24.04 x86_64, публичный IP, доступ по SSH и пользователя с правами sudo.

Paper поддерживает Java-клиенты и серверные плагины. Для Bedrock и модпаков Fabric, Forge или NeoForge нужна другая установка; для технического выживания сначала проверьте отличия Paper от ванильной игры.

Выберите версию игры до установки Java#

Выберите версию, которую поддерживают клиенты игроков и нужные плагины. По требованиям Paper, для 26.1 и новее нужна Java 25; для веток 1.20–1.21.11 рекомендована Java 21. Ниже используем Paper 26.1+ и Java 25. Требования проверены 12 октября 2026 года.

В примере Java heap ограничен 2 ГиБ на VPS с минимум 4 ГиБ RAM. Это начальное распределение памяти, а не оценка количества игроков. Оставьте запас Ubuntu, памяти JVM за пределами heap и другим службам. Регион выбирайте поближе к игрокам; требования к CPU оценивайте по нагрузке реального мира.

Игровое соединение проходит через firewall провайдера и firewall Ubuntu. Резервная копия идёт отдельным путём: остановить Paper, упаковать каталог, перенести архив с VPS.

Установите Java и создайте пользователя игры#

Выполняйте команды на VPS. Они добавляют репозиторий Amazon Corretto, устанавливают JDK и библиотеки из инструкции Paper по Java:

bash
sudo apt update
sudo apt install -y ca-certificates curl gnupg nano ufw
curl -fsSLo /tmp/corretto.key https://apt.corretto.aws/corretto.key
sudo gpg --dearmor -o /usr/share/keyrings/corretto-keyring.gpg /tmp/corretto.key
echo 'deb [signed-by=/usr/share/keyrings/corretto-keyring.gpg] https://apt.corretto.aws stable main' | sudo tee /etc/apt/sources.list.d/corretto.list
sudo apt update
sudo apt install -y java-25-amazon-corretto-jdk libxi6 libxtst6 libxrender1
/usr/bin/java -version

Убедитесь, что выбрана Java 25. Если нет, выполните sudo update-alternatives --config java и выберите Corretto 25. Если на VPS уже есть другие Java-приложения, закрепите абсолютный путь к Corretto в обеих командах запуска ниже вместо смены общей Java.

Создайте пользователя без административных прав:

bash
sudo adduser --system --group --home /srv/minecraft minecraft
sudo install -d -o minecraft -g minecraft -m 750 /srv/minecraft

Скачайте конкретную сборку Paper#

На своём компьютере откройте загрузки Paper, выберите согласованную версию игры и сборку. Сохраните исходное имя файла и номер сборки в своих заметках, затем переименуйте скачанную копию в paper.jar.

Загрузите файл из каталога, где он находится. Замените SSH_USER и VPS_IP; для нестандартного SSH-порта добавьте -P YOUR_SSH_PORT ко всем командам scp.

bash
scp paper.jar SSH_USER@VPS_IP:/tmp/paper.jar

Вернитесь на VPS, установите файл, запишите его контрольную сумму и запустите:

bash
sudo install -o minecraft -g minecraft -m 640 /tmp/paper.jar /srv/minecraft/paper.jar
sudo -u minecraft /bin/bash -c 'cd /srv/minecraft && sha256sum paper.jar > paper.jar.sha256'
sudo -u minecraft /bin/bash -c 'cd /srv/minecraft && /usr/bin/java -Xms1G -Xmx2G -jar paper.jar --nogui'

Контрольная сумма фиксирует установленный файл, но сама по себе не подтверждает подлинность загрузки. Не добавляйте в автозапуск скрипт, который каждый раз незаметно скачивает последнюю сборку.

Первый запуск остановится для принятия EULA. Прочитайте Minecraft EULA. Если согласны, откройте sudo -u minecraft nano /srv/minecraft/eula.txt, замените eula=false на eula=true и повторите команду запуска.

Дождитесь сообщения Done. В консоли игрового сервера выполните команды без начального слеша, подставив настоящие имена игроков:

text
whitelist on
whitelist add YourNickname
whitelist add FriendNickname
op YourNickname
stop

Права оператора нужны только администратору. Перед продолжением дождитесь окончания сохранения и возврата приглашения оболочки.

Настройте вход и параметры мира#

Откройте sudo -u minecraft nano /srv/minecraft/server.properties. Заменяйте существующие значения, не дописывайте одинаковые ключи:

properties
server-ip=
server-port=25565
online-mode=true
white-list=true
enforce-whitelist=true
enable-rcon=false
gamemode=survival
difficulty=normal
max-players=10
view-distance=8
simulation-distance=6
motd=Our survival world

Оставьте server-ip пустым и сохраните проверку аккаунтов. Whitelist разрешает вход указанным игрокам; max-players ограничивает подключения. Значения дистанций нужно оценить на своём мире: они не гарантируют производительность. Описание параметров есть в справочнике настроек.

Запускайте Paper через systemd#

Создайте sudo nano /etc/systemd/system/minecraft.service:

ini
[Unit]
Description=Minecraft Paper server
Wants=network-online.target
After=network-online.target

[Service]
Type=exec
User=minecraft
Group=minecraft
WorkingDirectory=/srv/minecraft
ExecStart=/usr/bin/java -Xms1G -Xmx2G -jar paper.jar --nogui
Restart=on-failure
RestartSec=10
KillSignal=SIGINT
TimeoutStopSec=180
SuccessExitStatus=0 130 143
NoNewPrivileges=true
PrivateTmp=true
ProtectHome=true

[Install]
WantedBy=multi-user.target

Этот unit запускает Paper от minecraft, включает запуск при загрузке ОС и повторяет неудачный запуск через десять секунд. На остановку отведено три минуты, после чего systemd может завершить процесс принудительно; большому миру может потребоваться больше времени. Параметры описаны в руководстве systemd.

bash
sudo systemctl daemon-reload
sudo systemctl enable --now minecraft
sudo systemctl status minecraft --no-pager
sudo journalctl -u minecraft -n 80 --no-pager
sudo ss -ltnp 'sport = :25565'

Проверьте Done в журнале и TCP-порт 25565 в выводе ss. Статус active сам по себе не означает, что игра готова. После изменения конфигурации используйте sudo systemctl restart minecraft и снова смотрите журнал. При таком запуске оператор управляет whitelist командами в игре; journalctl показывает вывод, но не предоставляет интерактивную консоль сервера.

Если позже понадобится управление из браузера, можно использовать панель Nexardo для своего VPS. Подключение VPS и настройка сервера в панели — отдельный этап.

Откройте порт и проверьте подключение#

Перед включением UFW разрешите свой настоящий SSH-порт. Оставьте текущую сессию открытой и после изменения проверьте второе SSH-подключение.

В примере SSH использует порт 22. Подставьте свой порт и сохраните правила для других служб:

bash
sudo ufw allow 22/tcp
sudo ufw allow 25565/tcp
sudo ufw enable
sudo ufw status

Синтаксис приведён в инструкции Ubuntu по firewall. Если у провайдера есть отдельный firewall, разрешите там TCP 25565. Открытие только UDP не позволит Java-клиентам подключиться к этой установке.

В Minecraft Java добавьте VPS_IP:25565 в разделе Multiplayer и используйте версию игры сервера. Если вход не работает, начните с конкретного симптома:

СимптомЧто проверитьКакое исправление проверить
UnsupportedClassVersionError при запуске/usr/bin/java -version и ветку PaperВыбрать подходящую Java; проверить и ExecStart
Connection refusedss и журнал запускаИсправить запуск или адрес и порт прослушивания
Connection timed outПубличный IP, UFW и firewall провайдераИсправить адрес или правило TCP
Несовпадение версий клиента и сервераВерсию клиента и скачанную сборкуИспользовать совпадающие версии
Игрока нет в whitelistТочное имя аккаунта в whitelist.jsonОператору выполнить /whitelist add PlayerName

Если вход работает, но игра тормозит, переходите к диагностике лагов Minecraft через spark.

Сделайте копию остановленного сервера и заберите её с VPS#

Предупредите игроков о перерыве, остановите службу и проверьте завершение сохранения:

bash
sudo systemctl stop minecraft
sudo journalctl -u minecraft -n 40 --no-pager
sudo systemctl show minecraft -p ActiveState -p Result

Продолжайте только после штатной остановки. Таймаут или принудительное завершение не подтверждают корректное сохранение. Проверьте место командой df -h /srv /var/backups, затем упакуйте весь каталог сервера:

bash
(
set -e
sudo install -d -m 700 /var/backups/minecraft
MC_BACKUP="/var/backups/minecraft/backup-$(date +%F-%H%M%S).tar.gz"
sudo tar -C /srv -czf "$MC_BACKUP" minecraft
sudo tar -tzf "$MC_BACKUP" > /dev/null
sudo install -m 600 -o "$(id -un)" "$MC_BACKUP" "$HOME/minecraft-backup.tar.gz"
sudo systemctl start minecraft
)

Проверяйте результат каждой команды. Если создание или проверка архива не удалась, устраните причину; Paper можно запустить, чтобы закончить перерыв, но считать такой архив резервной копией нельзя. Архив включает миры, JAR, плагины и локальные настройки. Внешние базы данных плагинов нужно копировать отдельно.

На своём компьютере заберите подготовленный файл:

bash
scp SSH_USER@VPS_IP:minecraft-backup.tar.gz ./minecraft-backup.tar.gz

Ограничьте доступ к архиву: в нём могут быть данные игроков и секреты из конфигурации плагинов. Ещё одна копия на диске самого VPS не поможет при потере VPS.

Проверьте восстановление заранее#

Чтобы проверить полученный архив, не перезаписывая рабочий мир, выполните команды на отдельном Linux-компьютере или тестовом VPS:

bash
MC_RESTORE_DIR="$(mktemp -d)"
tar -xzf minecraft-backup.tar.gz -C "$MC_RESTORE_DIR"
ls "$MC_RESTORE_DIR/minecraft"
cd "$MC_RESTORE_DIR/minecraft"
sha256sum -c paper.jar.sha256

Убедитесь, что есть ожидаемые каталоги миров, server.properties, плагины и JAR. Так проверяется распаковка и записанная контрольная сумма JAR, а не работоспособность восстановленного сервера. Для полноценной проверки запустите копию на отдельном тестовом сервере с подходящей Java, изолируйте её от игроков и проверьте мир в игре.

Для восстановления на исходном VPS загрузите выбранный архив в /tmp/minecraft-restore.tar.gz. На VPS остановите Paper, подтвердите штатную остановку, как выше, и выполните:

bash
(
set -e
MC_RESTORE_STAGE="$(mktemp -d)"
sudo tar -xzf /tmp/minecraft-restore.tar.gz -C "$MC_RESTORE_STAGE"
sudo test -f "$MC_RESTORE_STAGE/minecraft/paper.jar"
sudo test -f "$MC_RESTORE_STAGE/minecraft/server.properties"
sudo mv /srv/minecraft "/srv/minecraft.before-restore-$(date +%F-%H%M%S)"
sudo mv "$MC_RESTORE_STAGE/minecraft" /srv/minecraft
sudo chown -R minecraft:minecraft /srv/minecraft
sudo systemctl start minecraft
sudo journalctl -u minecraft -n 80 --no-pager
)

Используйте только свой доверенный архив и остановитесь при ошибке любой проверки. Старый каталог сохраняется для отката. Восстановление заменяет мир состоянием из копии: изменения игроков после её создания будут потеряны. Подберите Java под версию Paper в архиве и заново проверьте готовность и вход игроков.

Перед обновлением сделайте и заберите резервную копию, остановите службу и замените JAR выбранной совместимой сборкой. Запишите новый номер сборки и контрольную сумму. В инструкции Paper по обновлению перечислены файлы, которые нужно сохранить; храните старый JAR вместе со старым миром, поскольку обновлённый мир может не поддерживать безопасный откат версии.

Источники#