Игровой сервер Minecraft
Свой сервер Minecraft Java Edition — это полный контроль над версией игры, миром и настройками, в отличие от чужих публичных серверов. В этой статье вы поставите на VPS mHost нужную версию Java, скачаете и запустите серверный jar-файл (ванильный или Paper), примете лицензионное соглашение, настроите ключевые параметры и оставите сервер работать постоянно — через systemd или tmux/screen, — открыв порт для друзей.
Что понадобится
- VPS mHost на Ubuntu 22.04/24.04, Debian 11/12 или AlmaLinux/Rocky Linux 8/9.
- Доступ по SSH под
rootлибо пользователем с правамиsudo. - Свободно как минимум ~2 ГБ RAM под сам процесс Java — это комфортный минимум для небольшого ванильного сервера. Для Paper с плагинами или заметным числом игроков стоит взять запас побольше (см. шаг 5).
- Публичный IP-адрес VPS — это и есть адрес для подключения друзей, отдельный домен не обязателен.
Шаг 1. Установите Java нужной версии
Каждой линейке версий Minecraft соответствует своя минимальная версия Java — более старая Java просто откажется запускать новый сервер:
- версии 1.17–1.17.1 — Java 16;
- версии 1.18–1.20.4 — Java 17;
- версии 1.20.5–1.21.11 (последняя версия со старой нумерацией
1.x) — Java 21; - версии 26.1 и новее (с 2026 года игра перешла на нумерацию «год.дроп», например
26.1,26.2) — Java 25.
Вариант А: пакет из репозитория дистрибутива
Работает для Java 21 «из коробки» на Ubuntu 22.04/24.04 и AlmaLinux/Rocky Linux 9.
Ubuntu 22.04/24.04:
sudo apt update
sudo apt install -y openjdk-21-jre-headlessAlmaLinux/Rocky Linux 9:
sudo dnf install -y java-21-openjdk-headlessВариант Б: репозиторий Adoptium (Temurin) — для остальных случаев
Понадобится на Debian 11/12 и AlmaLinux/Rocky Linux 8, где в штатных репозиториях нет даже Java 21, а также если нужна Java 25, а вариант А её ещё не находит (новые версии Java попадают в репозитории дистрибутивов не сразу). Adoptium — официальный проект Eclipse с готовыми сборками OpenJDK; замените 21 на 25 в командах ниже, если нужна именно она.
Debian/Ubuntu (apt):
sudo apt update
sudo apt install -y wget apt-transport-https gpg
wget -qO - https://packages.adoptium.net/artifactory/api/gpg/key/public | gpg --dearmor | sudo 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" | sudo tee /etc/apt/sources.list.d/adoptium.list
sudo apt update
sudo apt install -y temurin-21-jreAlmaLinux/Rocky Linux (dnf):
sudo tee /etc/yum.repos.d/adoptium.repo > /dev/null <<EOF
[Adoptium]
name=Adoptium
baseurl=https://packages.adoptium.net/artifactory/rpm/$(. /etc/os-release; echo $ID)/\$releasever/\$basearch
enabled=1
gpgcheck=1
gpgkey=https://packages.adoptium.net/artifactory/api/gpg/key/public
EOF
sudo dnf install -y temurin-21-jreПроверьте установку (любой вариант):
java -versionВывод должен содержать openjdk version "21... (или "25..., если ставили Java 25).
Шаг 2. Создайте пользователя, скачайте server.jar
Запускать игровой сервер под root не стоит — заведите отдельного системного пользователя с домашней директорией под сервер:
sudo useradd -r -m -d /opt/minecraft -s /bin/bash minecraft-r— служебная (системная) учётная запись;-m -d /opt/minecraft— создать/opt/minecraftи использовать как домашнюю директорию;-s /bin/bash— обычный shell: понадобится в шаге 6 для варианта с tmux/screen (для systemd тип шелла роли не играет).
Переключитесь на этого пользователя — команды до шага 6 (systemd) выполняются от его имени, и вы автоматически окажетесь в /opt/minecraft:
sudo -iu minecraftСкачайте jar одного из двух серверов.
Вариант А: vanilla — официальный сервер Mojang
- На своём компьютере откройте страницу minecraft.net/en-us/download/server и скопируйте адрес ссылки на серверный jar-файл (правой кнопкой мыши по кнопке загрузки → «Копировать адрес ссылки»).
- На VPS, всё ещё от имени
minecraft:
curl -L -o server.jar "<URL>"Вариант Б: Paper — производительная альтернатива с поддержкой плагинов
Paper — форк vanilla-сервера с оптимизациями производительности и поддержкой плагинов Bukkit/Spigot, полностью совместимый с обычным клиентом Minecraft.
- Откройте papermc.io/downloads/paper, выберите версию Minecraft и скопируйте ссылку на последнюю сборку (build).
- На VPS:
curl -L -o server.jar "<URL>"Шаг 3. Примите лицензионное соглашение — eula.txt
Запустите сервер первый раз — он создаст конфигурационные файлы и сразу завершится, потому что лицензия ещё не принята:
java -jar server.jar --noguiВ логе будет примерно:
[...] [ServerMain/ERROR]: Failed to load properties from file: server.properties
[...] You need to agree to the EULA in order to run the server. Go to eula.txt for more info.Рядом появится файл eula.txt с таким содержимым:
#By changing the setting below to TRUE you are indicating your agreement to our EULA (https://aka.ms/MinecraftEULA).
#<timestamp>
eula=falseОткройте файл и поменяйте false на true:
nano eula.txteula=trueСохраните файл (в nano — Ctrl+O, Enter, затем Ctrl+X).
Шаг 4. Настройте server.properties
Тот же первый запуск создал файл server.properties со значениями по умолчанию:
nano server.propertiesСамые важные параметры для первой настройки:
server-port(по умолчанию25565) — TCP-порт сервера. Меняйте, только если знаете зачем, — какой порт укажете здесь, тот и нужно будет открыть в файрволе на шаге 7.difficulty(easy) — сложность мира:peaceful,easy,normalилиhard.gamemode(survival) — режим игры по умолчанию:survival,creative,adventureилиspectator.max-players(20) — максимум игроков одновременно.motd(A Minecraft Server) — строка, которую игроки видят в списке серверов.white-list(по умолчанию выключен) — включает белый список: заходить смогут только игроки, добавленные командой/whitelist add <name>в консоли сервера.online-mode(true) — сервер проверяет игроков через аккаунты Mojang/Microsoft.
view-distance(10) — сколько чанков вокруг игрока сервер прогружает и передаёт клиенту.simulation-distance(10) — на каком расстоянии от игроков сервер обсчитывает мобов и механики (редстоун и т. п.).
Пример итоговых строк в файле:
motd=mHost Minecraft server
difficulty=normal
max-players=10
view-distance=8Сохраните файл так же, как eula.txt.
Шаг 5. Соберите стартовый скрипт: память -Xmx/-Xms
-Xms— начальный размер кучи (heap) Java при старте.-Xmx— максимальный размер кучи, который процессу разрешено занять.
Разумно ставить -Xms равным -Xmx — тогда Java сразу выделяет всю память и не тратит время на её увеличение прямо во время игры. Оставьте операционной системе как минимум ~1 ГБ свободной памяти сверх выделенного -Xmx.
Например, на VPS с 4 ГБ RAM для сервера с несколькими игроками разумно выделить 3 ГБ:
-Xms3G -Xmx3GДля ванильного сервера с несколькими игроками комфортный минимум — от 2 ГБ; для Paper с плагинами или большим числом игроков может понадобиться заметно больше — ориентируйтесь на нагрузку по факту.
Создайте стартовый скрипт start.sh — он пригодится и для systemd, и для tmux/screen (шаг 6):
nano start.sh#!/bin/sh
cd "$(dirname "$0")"
exec java -Xms3G -Xmx3G -jar server.jar --noguiСделайте скрипт исполняемым и проверьте его вручную:
chmod +x start.sh
./start.shЧерез некоторое время в логе появится строка вида Done (12.345s)! For help, type "help" — сервер запущен и готов принимать подключения. Наберите stop и нажмите Enter, чтобы корректно остановить сервер (мир сохранится) и вернуться в консоль:
stopШаг 6. Запустите сервер постоянно: systemd или tmux/screen
Пока сервер запущен только вручную в текущей SSH-сессии — он остановится, как только вы отключитесь. Выберите один из двух вариантов, чтобы это исправить.
Вариант А: systemd (рекомендуется)
Управление через systemctl, автозапуск после перезагрузки VPS и автоматический перезапуск при падении. Обратная сторона — без RCON у сервера нет интерактивной консоли: команды в игре подаются только из чата (с правами оператора) или планируются заранее.
Создайте юнит:
sudo nano /etc/systemd/system/minecraft.service[Unit]
Description=Minecraft Java Edition server
After=network.target
[Service]
Type=simple
User=minecraft
Group=minecraft
WorkingDirectory=/opt/minecraft
ExecStart=/opt/minecraft/start.sh
Restart=on-failure
RestartSec=10
TimeoutStopSec=60
[Install]
WantedBy=multi-user.targetRestart=on-failure— автоперезапуск при падении сервера, но не после штатной остановки командойstop/systemctl stop.TimeoutStopSec=60— сколько секунд ждать корректного завершения перед принудительным убийством процесса. Увеличьте для больших миров — сохранение может занять больше времени.
Включите и запустите:
sudo systemctl daemon-reload
sudo systemctl enable --now minecraft
sudo systemctl status minecraftСмотрите лог сервера через journalctl:
sudo journalctl -u minecraft -fОстанавливайте сервер только так:
sudo systemctl stop minecraftПроверьте автозапуск:
systemctl is-enabled minecraftДолжно быть enabled.
Вариант Б: tmux или screen (нужна живая консоль)
Процесс работает в отсоединяемой (detached) сессии терминала — вы получаете прямой доступ к консоли сервера и можете набирать команды вроде save-all, whitelist add, stop напрямую. Обратная сторона — без дополнительной настройки нет ни автозапуска после перезагрузки, ни автоперезапуска при падении.
Установите tmux, если его ещё нет:
sudo apt install -y tmux # Ubuntu/Debian
sudo dnf install -y tmux # AlmaLinux/Rocky LinuxЗапустите сессию от имени пользователя minecraft:
sudo -iu minecraft
tmux new -s minecraft
./start.shОтсоединитесь от сессии, не останавливая сервер: Ctrl+B, затем D. Вернуться в консоль сервера позже:
sudo -iu minecraft
tmux attach -t minecraftЧтобы остановить сервер корректно — подключитесь к сессии, наберите stop и нажмите Enter.
sudo crontab -u minecraft -eДобавьте строку:
@reboot sleep 30 && /usr/bin/tmux new -d -s minecraft /opt/minecraft/start.shНо если нужен именно автозапуск и автоперезапуск при падении «из коробки» — это и есть вариант А (systemd).
Шаг 7. Откройте порт 25565 в файрволе
Клиенты подключаются к серверу по TCP-порту 25565 (или другому, если меняли server-port на шаге 4) — откройте его в файрволе.
Ubuntu/Debian (ufw):
sudo ufw allow 25565/tcpПодробнее о настройке ufw — в статье «Файрвол ufw».
AlmaLinux/Rocky Linux (firewalld):
sudo firewall-cmd --permanent --add-port=25565/tcp
sudo firewall-cmd --reloadЧто дальше
- Главное, что стоит регулярно бэкапить, — папка
world/(иworld_nether/,world_the_end/, если они сгенерированы) внутри/opt/minecraft. Настроить регулярные копии проще всего по статье «Резервное копирование с rsync». - Управлять доступом и правами игроков, не заводя им отдельные учётные записи на самом VPS, помогают белый список (
white-list+/whitelist add, шаг 4) и права оператора (/op <name>из консоли сервера). - Если на VPS запущено несколько сервисов и памяти не хватает — проверьте общую нагрузку через
htop/free -hи пересчитайте-Xmx(шаг 5) с учётом остальных процессов.