Короткий ответ: чтобы создать свой сервер в Minecraft (Java Edition) на VPS, поставьте версию Java, которая нужна вашему релизу (Java 25 для линии 26.x, Java 21 для 1.21.x), дайте JVM 2–4 ГБ для небольшого мира, откройте TCP-порт 25565 и запустите сервер от отдельного пользователя под systemd, чтобы он переживал сбой и перезагрузку. Эта инструкция настраивает всё это на Debian или Ubuntu, с эквивалентами для Rocky и Alma рядом, и заканчивается бэкапами и корректным выключением, которое действительно сохраняет мир.
Один технический факт определяет выбор железа: основной игровой цикл Minecraft — «тик», который двигает мобов, растит урожай и считает редстоун, — почти целиком однопоточный. Сервер лагает, когда одно ядро не успевает закончить тик за 50 мс, и добавление ядер тут не помогает. Скорость одного ядра важнее их количества, поэтому несколько быстрых ядер для игрового сервера лучше, чем много медленных.
Сколько RAM и CPU нужно серверу Minecraft?
Считайте эти цифры стартовым ориентиром, а не гарантией — реальное значение зависит от дальности отрисовки, числа игроков и особенно плагинов и модов, и честная цифра — та, что вы измерили на своём собственном мире:
- Маленький ванильный сервер, горстка игроков: разумный старт — 2–4 ГБ RAM и два быстрых ядра.
- Плагины (Paper/Purpur) или модпак: больше, часто от 6–8 ГБ. Модовые серверы — самый прожорливый по памяти случай: крупный пак может хотеть намного больше, чем ванильный мир с тем же числом игроков.
- Оставляйте запас. Ваш
-Xmxдолжен быть меньше объёма RAM машины — системе, бэкапам и собственной off-heap памяти JVM тоже нужно место. На машине с 4 ГБ не отдавайте Java больше примерно 3 ГБ.
Если тики начинают отставать, сервер пишет Can’t keep up!. Это намного чаще проблема CPU или дисков, чем RAM.
Как установить Java и исправить «java: command not found»?
java: command not found просто значит, что среда выполнения Java ещё не установлена — серверный образ не поставляется с ней. Нужная версия зависит от вашей версии Minecraft, и это недавно изменилось: текущие релизы Java Edition (линия 26.x) требуют Java 25, релизы 1.21.x работают на Java 21, а старые паки могут хотеть 17. Minecraft не запускается на Java старше, чем он просит, поэтому версии нужно совмещать. Проверьте требование для своей версии на официальной странице загрузки, затем поставьте headless-рантайм — без десктопных библиотек на сервере.
sudo apt update
sudo apt install -y openjdk-25-jre-headless # для 1.21.x — openjdk-21-jre-headless
java -versionDebian 12 (bookworm) пакует только Java 17, поэтому для текущего сервера ставьте Java 25 из репозитория Temurin от Adoptium с современным способом через keyring:
sudo apt install -y curl ca-certificates gpg
sudo install -d -m 0755 /etc/apt/keyrings
curl -fsSL https://packages.adoptium.net/artifactory/api/gpg/key/public \
| sudo gpg --dearmor -o /etc/apt/keyrings/adoptium.gpg
echo "deb [signed-by=/etc/apt/keyrings/adoptium.gpg] \
https://packages.adoptium.net/artifactory/deb $(. /etc/os-release && echo $VERSION_CODENAME) main" \
| sudo tee /etc/apt/sources.list.d/adoptium.list
sudo apt update && sudo apt install -y temurin-25-jre
java -version# для Java 25 нужен свежий точечный релиз 9.x — проверьте:
dnf list --available 'java-*-openjdk-headless'
sudo dnf install -y java-25-openjdk-headless # для 1.21.x — java-21-openjdk-headless
java -versionЕсли установлено несколько версий Java, выбрать версию по умолчанию можно через sudo update-alternatives --config java (Debian, Ubuntu) или sudo alternatives --config java (Rocky). Юнит systemd ниже вызывает /usr/bin/java, который следует этому выбору; чтобы закрепить конкретную версию независимо от выбора по умолчанию, укажите в ExecStart её полный путь — список установленных версий даёт ls /usr/lib/jvm.
Как скачать и запустить сервер?
- 1Создайте отдельного пользователя
Никогда не запускайте сервер от root. Дайте ему собственную непривилегированную учётную запись и каталог:
пользователь и каталог sudo useradd --system --create-home --home-dir /opt/minecraft --shell /usr/sbin/nologin minecraft sudo -u minecraft mkdir -p /opt/minecraft/server - 2Скачайте server.jar
Возьмите актуальную ссылку на
server.jarдля своей версии с официальной страницы загрузки сервера на minecraft.net — она меняется с каждым релизом, поэтому копируйте именно текущую ссылку, а не старую из статьи. Работайте от пользователя сервиса, чтобы все созданные файлы принадлежали ему:скачивание sudo -u minecraft bash # оболочка от пользователя сервиса cd /opt/minecraft/server curl -fsSLo server.jar "https://piston-data.mojang.com/.../server.jar" # вставьте реальную ссылку - 3Примите EULA и запустите один раз
Первый запуск создаёт конфигурационные файлы и останавливается, потому что вы ещё не согласились с EULA Mojang:
первый запуск (всё ещё в оболочке minecraft) java -Xms1G -Xmx1G -jar server.jar nogui # завершится с: "You need to agree to the EULA..." sed -i 's/eula=false/eula=true/' eula.txt exit
eula=true фиксирует, что вы приняли EULA Mojang. Теперь откройте server.properties от пользователя сервиса (sudo -u minecraft nano /opt/minecraft/server/server.properties) и включите RCON, которым служба будет пользоваться для чистой остановки:
enable-rcon=true
rcon.port=25575
rcon.password=придумайте-длинную-случайную-строку
# необязательно, но рекомендуется для приватного сервера:
white-list=true
enforce-whitelist=trueКак запустить его как службу systemd?
Юнит systemd держит сервер запущенным после выхода из сессии, перезапускает его при падении и стартует при загрузке. Ключевой момент — остановка, которая сначала сохраняет мир: вместо того чтобы дать systemd убить процесс Java, пусть он отправит серверу его собственную команду stop через RCON, которая сохраняет каждый чанк перед выходом.
# Debian 12/13, Ubuntu 24.04 — пакет rcon даёт rconclt
sudo apt install -y rcon
# Rocky, Alma 9 — не в пакетах; тот же клиент из PyPI в venv
sudo dnf install -y python3.11
sudo python3.11 -m venv /opt/rcon && sudo /opt/rcon/bin/pip install rcon
# далее используйте /opt/rcon/bin/rconclt вместо /usr/bin/rconcltsudo install -d -m 0750 -o minecraft -g minecraft /etc/minecraft
sudo tee /etc/minecraft/rcon.conf >/dev/null <<'EOF'
[mc]
host = 127.0.0.1
port = 25575
passwd = та-же-строка-что-в-server.properties
EOF
sudo chown minecraft:minecraft /etc/minecraft/rcon.conf
sudo chmod 600 /etc/minecraft/rcon.conf[Unit]
Description=Minecraft server
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=minecraft
Group=minecraft
WorkingDirectory=/opt/minecraft/server
# подберите -Xmx под свой тариф, оставив запас системе
ExecStart=/usr/bin/java -Xms2G -Xmx3G -jar server.jar nogui
# корректная остановка: сохранить и выйти, затем дождаться завершения Java
ExecStop=/bin/sh -c '/usr/bin/rconclt -c /etc/minecraft/rcon.conf mc stop; while kill -0 $MAINPID 2>/dev/null; do sleep 1; done'
# JVM, завершённая через SIGTERM, выходит с кодом 143 — это нормальная остановка, не сбой
SuccessExitStatus=143
Restart=on-failure
RestartSec=10
# время на сохранение мира, прежде чем systemd сдастся
TimeoutStopSec=90
[Install]
WantedBy=multi-user.targetsudo systemctl daemon-reload
sudo systemctl enable --now minecraft
sudo systemctl status minecraft
# смотреть лог
sudo journalctl -u minecraft -f
# проверить, что остановка сохраняет мир:
sudo systemctl stop minecraft # в логе перед выходом должно быть "Saving worlds"Какой порт нужен серверу Minecraft?
Java Edition слушает TCP 25565. Откройте именно его и больше ничего:
# ufw (Debian, Ubuntu)
sudo ufw allow 25565/tcp comment 'Minecraft'
# firewalld (Rocky, Alma)
sudo firewall-cmd --permanent --add-port=25565/tcp && sudo firewall-cmd --reloadОставьте порт RCON 25575 закрытым. Ванильный сервер по умолчанию привязывает RCON ко всем интерфейсам, если не задан server-ip, поэтому именно файрвол держит его приватным — с файрволом «запрещено по умолчанию» он остаётся закрытым, пока вы его не разрешите, а сама служба обращается к нему через 127.0.0.1. Bedrock Edition — отдельная серверная программа, она слушает UDP 19132; эта инструкция — про Java Edition.
Нужен ли проброс портов для сервера Minecraft на VPS?
Нет. Проброс портов — задача домашнего роутера: компьютер в домашней сети стоит за NAT (а часто и за CGNAT провайдера, который вы вообще не настраиваете), поэтому роутеру нужно указать, что входящие подключения на порт 25565 надо передавать на локальный адрес этого компьютера. У VPS этого шага нет: у него уже есть собственный публичный IP-адрес, и подключение к ip-вашего-vps:25565 приходит прямо на него. Достаточно открыть порт в файрволе самого VPS, как описано выше, — никуда его пробрасывать не нужно.
Как безопасно бэкапить мир?
Делайте бэкап каталога мира по расписанию. Поскольку сервер постоянно пишет в него, сначала приостановите сохранение через RCON, скопируйте, затем включите обратно — чтобы архив получился целостным:
#!/bin/bash
set -euo pipefail
R="/usr/bin/rconclt -c /etc/minecraft/rcon.conf mc"
DEST=/opt/minecraft/backups
mkdir -p "$DEST"
$R save-off # перестать писать на диск
trap '$R save-on' EXIT # всегда включать сохранение обратно, даже если tar упадёт
$R save-all flush # сбросить всё на диск прямо сейчас
tar -czf "$DEST/world-$(date +%F-%H%M).tar.gz" -C /opt/minecraft/server world
# хранить последние 14 архивов
ls -1t "$DEST"/world-*.tar.gz | tail -n +15 | xargs -r rm --sudo chown minecraft:minecraft /opt/minecraft/backup.sh
sudo chmod 750 /opt/minecraft/backup.sh
# добавить к существующему crontab пользователя, а не заменить его
(sudo crontab -u minecraft -l 2>/dev/null; echo "30 4 * * * /opt/minecraft/backup.sh") \
| sudo crontab -u minecraft -Файловый бэкап защищает от битого мира или неудачной команды, но лежит на том же диске — копируйте архивы и за пределы сервера (достаточно rsync на другую машину). Перед крупным изменением, например обновлением Minecraft или новым набором плагинов, снапшот всего VPS из панели провайдера, если она это умеет, откатывается быстрее.
Почему сервер лагает или падает?
- Постоянный лаг / «Can’t keep up»: тик занимает слишком много времени. Снизьте дальность отрисовки и симуляции, проредите сущности и редстоун, и если машина упирается в CPU — разбирайтесь с нагрузкой отдельно.
- Процесс просто пишет
Killed: у машины закончилась память, и ядро убило Java. Снизьте-Xmx, добавьте RAM или разберитесь, почему Linux убивает процесс. - Падает при старте после обновления: почти всегда несовпадение версии Java — новый Minecraft хочет Java новее, чем у вас установлена. Проверьте раздел про Java ещё раз.
Нужна ли серверу Minecraft защита от DDoS?
Для публичного сервера — да. Игровые серверы притягивают DDoS-атаки, часто от того, кто только что проиграл, и маленький VPS не отфильтрует поток сам — это должно происходить выше, на стороне провайдера. Проверьте, что ваш хостинг включает это; в VMHeaven, например, постоянная защита от DDoS стоит перед каждым сервером без дополнительной платы. Что вы всё равно делаете сами — обычное усиление защиты, ключи вместо паролей для SSH и остальная базовая настройка, — чтобы сама машина с игрой не была лёгкой целью.
Какое железо нужно для VPS под Minecraft?
Поскольку тик почти целиком однопоточный, выбирайте быстрые ядра, а не их количество, и достаточно RAM для запланированного -Xmx плюс запас. Двух-четырёх сильных vCore хватает маленькому серверу; лишние ядра в основном помогают генерации мира, плагинам, которые работают асинхронно, и всему остальному на машине. Линейка Hi-CPU KVM (AMD EPYC 7443) построена именно под такую одно-двухпоточную нагрузку. Локация значит меньше, чем кажется: ставьте сервер ближе к большинству игроков и измеряйте маршрут от своих игроков сами, а не угадывайте.
Обычный VPS требует больше работы, чем готовая панель хостинга для Minecraft, и это честный обмен: панель проще, а VPS даёт полный root, любую версию Java, любой загрузчик плагинов и машину, которую можно использовать и для всего остального. Если вы спокойно работаете в командной строке, вся настройка выше — разовые полчаса.
Другая игра? Страница gaming VPS (англ.) рассказывает о Palworld, Valheim, Rust, 7 Days to Die, Project Zomboid, FiveM и ARK: Survival Ascended — что публикует каждый разработчик для своего сервера и какой минимальный тариф каждой линейки подходит для старта.
Частые вопросы
Какая версия Java нужна для сервера Minecraft?
Зависит от версии Minecraft: текущие релизы линии 26.x требуют Java 25, релизы 1.21.x работают на Java 21, старые паки могут хотеть Java 17. Minecraft не запустится на Java старше, чем он просит. Debian 12 пакует только Java 17, поэтому для свежего сервера Java 25 нужно ставить из репозитория Temurin от Adoptium.
Какой порт нужно открыть для сервера Minecraft?
Java Edition слушает TCP-порт 25565 — его и открывайте в файрволе (sudo ufw allow 25565/tcp). Порт RCON 25575 оставляйте закрытым: он нужен только самому серверу для корректной остановки и обращается к себе через 127.0.0.1. Bedrock Edition — другая программа, она использует UDP-порт 19132.
Почему сервер Minecraft лагает или падает?
Постоянный лаг и сообщение Can't keep up! почти всегда означают, что одно ядро CPU не успевает закончить тик за 50 мс — у Minecraft игровой цикл в основном однопоточный, поэтому помогают быстрые ядра, а не их количество. Если процесс просто пишет Killed, у машины закончилась память и его убило ядро системы — снизьте -Xmx или добавьте RAM. Падение сразу после обновления почти всегда означает несовпадение версии Java.