Как создать сервер Minecraft: пошагово на Linux VPS (Java Edition)
Установите с нуля сервер Minecraft Java Edition для игры с друзьями на Ubuntu 24.04: Java 21, server.jar или Paper, настройки памяти, файрвол, служба systemd и резервные копии мира.
Когда у вас свой сервер Minecraft, правила устанавливаете вы: кто может зайти, какие плагины работают, когда делается резервная копия мира. Сервер можно поднять и на домашнем компьютере, но выключите компьютер — выключится и игра, а ещё придётся возиться с пробросом портов на роутере. Linux VPS работает круглосуточно и имеет постоянный IP-адрес.
В этом руководстве мы установим сервер Minecraft: Java Edition на Ubuntu 24.04. Для Bedrock Edition (версии для телефонов, консолей и Windows) нужна отдельная серверная программа; описанные здесь шаги относятся к Java Edition.
1. Установите Java 21
Подключитесь к серверу по SSH. Minecraft 1.20.5 и новее требует как минимум Java 21. Эта версия есть в репозиториях Ubuntu 24.04; поскольку графического интерфейса на сервере нет, достаточно пакета «headless»:
sudo apt update && sudo apt upgrade -y
sudo apt install -y openjdk-21-jre-headless
java -version
В выводе должно быть openjdk version "21.... Будущие версии Minecraft могут потребовать более новую Java. Если при запуске сервера появляется ошибка UnsupportedClassVersionError, посмотрите нужную версию Java в примечаниях к выпуску и проверьте командой apt search openjdk, какие версии есть в репозитории.
Если вы недавно знакомы с командной строкой, начните с нашей статьи об основных командах Linux.
2. Создайте отдельного пользователя
Не запускайте сервер от root. Если в плагине или серверной программе найдётся уязвимость, злоумышленник должен получить доступ только к файлам этого пользователя:
sudo adduser --system --group --home /opt/minecraft minecraft
sudo -u minecraft mkdir -p /opt/minecraft/server
3. Скачайте файл сервера
Есть два распространённых варианта:
- Официальный сервер (vanilla): неизменённый сервер от Mojang. Откройте на minecraft.net страницу «Download Minecraft: Java Edition Server» и скопируйте ссылку на
server.jar. Ссылка меняется с каждой версией, поэтому постоянный адрес мы здесь не приводим. - Paper: серверная программа с papermc.io, в которой сделаны улучшения производительности и которая умеет запускать плагины Bukkit/Spigot. Если вам нужны плагины или производительность важна из-за растущего числа игроков, большинство выбирает Paper. Скопируйте ссылку на нужную версию со страницы загрузки Paper.
Скачайте файл по скопированной ссылке и сохраните под именем server.jar:
cd /opt/minecraft/server
sudo -u minecraft wget -O server.jar "KOPYALADIGINIZ_BAGLANTI"
Замените KOPYALADIGINIZ_BAGLANTI на скопированную ссылку.
4. Первый запуск и EULA
Запустите сервер один раз вручную. При первом старте он создаст нужные файлы и завершится, потому что EULA ещё не принята:
sudo -u minecraft java -Xms1G -Xmx1G -jar server.jar nogui
Прочитав лицензионное соглашение Minecraft (EULA), примите его:
sudo -u minecraft sed -i 's/eula=false/eula=true/' eula.txt
5. Настройки памяти: -Xms и -Xmx
-Xmx задаёт максимальный объём памяти, который может использовать Java, -Xms — объём, выделяемый при запуске. На серверах их часто делают одинаковыми. Главное — не отдавать Minecraft всю оперативную память сервера: оставьте около 1–1,5 ГБ для операционной системы и собственных накладных расходов Java. Например, на сервере с 4 ГБ RAM разумно указать -Xms2G -Xmx2G или максимум -Xms3G -Xmx3G.
Выделять больше памяти, чем нужно, тоже плохо: сборщику мусора (garbage collector) приходится очищать большую область, и кратковременных подвисаний может стать больше.
6. Основные настройки server.properties
Файл /opt/minecraft/server/server.properties — главный файл настроек сервера:
sudo -u minecraft nano /opt/minecraft/server/server.properties
Строки, на которые стоит посмотреть в первую очередь:
motd=Arkadaslarla Minecraft
max-players=10
online-mode=true
white-list=true
enforce-whitelist=true
difficulty=normal
view-distance=10
simulation-distance=8
motd: описание, которое видно в списке серверов.online-mode=true: игроки проверяются через настоящий аккаунт Minecraft. Если поставитьfalse, любой сможет зайти под любым ником (включая ваш); не отключайте эту настройку.white-listиenforce-whitelist: зайти могут только разрешённые вами игроки. Если вы не делаете публичный сервер, это самая эффективная защита.view-distanceиsimulation-distance: определяют, сколько чанков загружается вокруг игрока. Если серверу тяжело, эти значения стоит снижать в первую очередь.
Игроков добавляют в белый список из консоли сервера командой whitelist add OyuncuAdi. Как отправлять команды в консоль, разберём ниже.
7. Откройте порт в файрволе
Minecraft Java Edition по умолчанию использует порт 25565/TCP:
sudo ufw allow OpenSSH
sudo ufw allow 25565/tcp
sudo ufw enable
Убедитесь, что правило для SSH добавлено до команды ufw enable, иначе соединение может оборваться. Для общей безопасности сервера выполните также шаги из нашего руководства по безопасности Linux-сервера.
8. Служба systemd: постоянная работа без screen
Запуск внутри screen или tmux годится для проверки, но после перезагрузки сервера игра сама не поднимется. С systemd мы получим и автозапуск, и корректное завершение. Чтобы отправлять команды в консоль, используем FIFO (именованный канал): к этому файлу будет подключён ввод сервера.
Сначала юнит сокета:
sudo nano /etc/systemd/system/minecraft.socket
[Unit]
Description=Minecraft konsol girisi
[Socket]
ListenFIFO=/run/minecraft.stdin
SocketUser=minecraft
SocketGroup=minecraft
SocketMode=0660
[Install]
WantedBy=sockets.target
Затем юнит службы:
sudo nano /etc/systemd/system/minecraft.service
[Unit]
Description=Minecraft Java sunucusu
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=minecraft
Group=minecraft
WorkingDirectory=/opt/minecraft/server
Sockets=minecraft.socket
StandardInput=socket
StandardOutput=journal
StandardError=journal
ExecStart=/usr/bin/java -Xms2G -Xmx2G -jar server.jar nogui
ExecStop=/bin/sh -c 'if kill -0 $MAINPID 2>/dev/null; then echo stop > /run/minecraft.stdin; while kill -0 $MAINPID 2>/dev/null; do sleep 1; done; fi'
TimeoutStopSec=120
SuccessExitStatus=0 1 143
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target
Если сервер ещё работает, строка ExecStop отправляет ему команду stop и ждёт, пока мир сохранится и процесс завершится. Так при systemctl stop или перезагрузке сервера мир не останется сохранённым наполовину. Строка StandardOutput=journal важна: раз мы подключили ввод к FIFO, нужно явно указать, что вывод идёт в журнал.
Включите и запустите службы:
sudo systemctl daemon-reload
sudo systemctl enable --now minecraft.socket minecraft.service
systemctl status minecraft
Чтобы отправить команду в консоль и следить за выводом:
echo "whitelist add OyuncuAdi" | sudo tee /run/minecraft.stdin > /dev/null
journalctl -u minecraft -f
Так же можно отправлять любые консольные команды, например say, op или save-all.
9. Делайте резервные копии мира
Данные мира хранятся в папке world внутри папки сервера. Paper держит измерения Нижнего мира и Края отдельно — в папках world_nether и world_the_end. Чтобы получить целостную копию на работающем сервере, временно отключите автосохранение, сбросьте данные на диск, заархивируйте их и снова включите сохранение:
sudo mkdir -p /var/backups/minecraft
echo "save-off" | sudo tee /run/minecraft.stdin > /dev/null
echo "save-all flush" | sudo tee /run/minecraft.stdin > /dev/null
sleep 15
sudo tar czf /var/backups/minecraft/dunya-$(date +%F-%H%M).tar.gz -C /opt/minecraft/server world world_nether world_the_end
echo "save-on" | sudo tee /run/minecraft.stdin > /dev/null
На vanilla-сервере есть только папка world, поэтому уберите две другие папки из строки tar. Эти команды можно поместить в скрипт и добавить в crontab пользователя root для ежедневных копий. Регулярно копируйте резервные копии и за пределы сервера: копия, лежащая только на том же диске, не спасёт при проблемах с диском.
Сколько нужно RAM и процессора?
Назвать точную цифру сложно: количество плагинов, исследованная территория, построенные фермы и дальность прорисовки напрямую влияют на потребление памяти. В качестве грубой начальной оценки:
- 2–5 игроков, без плагинов: обычно хватает 2 ГБ для Minecraft (всего 3–4 ГБ RAM на сервере).
- 5–15 игроков или несколько плагинов: комфортнее выделить 3–4 ГБ.
- Модпаки или более многолюдные серверы: может понадобиться 6 ГБ и больше.
Основной игровой цикл сервера Minecraft в значительной степени выполняется на одном ядре процессора, поэтому важнее не число ядер, а производительность одного ядра и стабильность ресурсов. VDS, ресурсы которого не делятся с другими, даёт более ровную работу на многолюдных серверах. Если не хотите заниматься установкой, посмотрите наши пакеты игровых серверов: в них vCPU AMD EPYC 7642, память DDR4 ECC и NVMe-диск, а после оплаты наша команда настраивает сервер и передаёт его вам.
Часто задаваемые вопросы
Могут ли игроки Bedrock Edition зайти на этот сервер?
Напрямую — нет: Java и Bedrock используют разные протоколы. Если вы используете Paper, плагин вроде Geyser позволяет игрокам Bedrock подключаться к Java-серверу. Для этого нужно также открыть в файрволе UDP-порт, который использует Bedrock.
Сервер выдаёт «Unable to access jarfile». Почему?
Неверное имя файла или папка. Проверьте командой ls -l /opt/minecraft/server, что файл server.jar на месте и лежит в той же папке, что указана в WorkingDirectory службы systemd.
Игроки не могут подключиться. Что проверить?
Сначала убедитесь через systemctl status minecraft, что служба работает, а через sudo ufw status — что есть правило для 25565/tcp. Если включён белый список, проверьте, что игрок в него добавлен и использует ту же версию Minecraft, что и сервер.
Как обновить сервер до новой версии Minecraft?
Сначала сделайте резервную копию мира, затем остановите сервер командой sudo systemctl stop minecraft, скачайте новый server.jar вместо старого и снова запустите службу. Если вы используете плагины, заранее проверьте их совместимость с новой версией.
Можно ли подключаться по доменному имени?
Да. Создайте для домена A-запись с IP-адресом VPS, и игроки смогут подключаться по адресу вроде mc.ornek.com вместо IP. Поскольку порт по умолчанию 25565, указывать его не нужно.
Читайте также
Если на VPS с 512 МБ или 1 ГБ RAM падают приложения, swap — первая помощь. Как добавить swap в Ubuntu 24.04, в...
Бот не должен засыпать вместе с ноутбуком. Пошагово: запуск Telegram-бота на Python 24/7 на VPS с Ubuntu 24.04...
Собираетесь запустить сервер Metin2, но не знаете, хватит ли VPS или нужен VDS? Сравниваем общий и выделенный...