Перейти к содержанию

Minecraft в 2026 году: различия между версиями

Материал из RAMBA Wiki
Новая страница: «= Установка Minecraft Java Server на Ubuntu 24.04 LTS = == Системные требования == '''Минимальная конфигурация''' * CPU: 2 vCPU * RAM: 4 ГБ * Диск: 20 ГБ SSD '''Рекомендуемая конфигурация''' * CPU: 4 vCPU * RAM: 8 ГБ * Диск: 50 ГБ SSD == Обновление системы == Обновляем пакеты операционной системы: <syntaxhig...»
 
Нет описания правки
 
Строка 1: Строка 1:
= Установка Minecraft Java Server на Ubuntu 24.04 LTS =
<div class="portal-header">
<div class="portal-title">Minecraft Java Server</div>
<div class="portal-subtitle">
Установка и эксплуатация выделенного сервера Minecraft на Ubuntu 24.04 LTS
</div>
</div>
 
<div class="portal-card">
'''Minecraft Java Server''' — выделенный сервер для Minecraft Java Edition.
 
В этой статье рассматривается установка сервера на '''Ubuntu 24.04 LTS''' с отдельным системным пользователем, автоматическим запуском через systemd, RCON-управлением и резервным копированием.
 
Конфигурация подходит для виртуальной машины, физического сервера или LXC-контейнера.
</div>
 
__TOC__
 
== Архитектура ==
 
Базовая схема сервера:
 
<syntaxhighlight lang="text">
                    Игроки
                      │
                      │ TCP :25565
                      ▼
              ┌───────────────┐
              │  Minecraft  │
              │ Java Server  │
              └───────┬───────┘
                      │
              ┌────────┴────────┐
              │                │
              ▼                ▼
          systemd              RCON
                                  │
                                  ▼
                              mcrcon
</syntaxhighlight>
 
В production-конфигурации Minecraft запускается не вручную, а как системная служба.


== Системные требования ==
== Системные требования ==


'''Минимальная конфигурация'''
{| class="wikitable"
! Параметр
! Минимально
! Рекомендуется
|-
| CPU
| 2 vCPU
| 4+ производительных ядра
|-
| RAM
| 4 ГБ
| 8 ГБ и более
|-
| Диск
| 20 ГБ
| 50+ ГБ SSD
|-
| ОС
| Ubuntu 24.04 LTS
| Ubuntu 24.04 LTS
|-
| Сеть
| 25565/TCP
| Статический IP или NAT
|}


* CPU: 2 vCPU
При большой дальности прорисовки, большом количестве игроков или тяжёлых модификациях требования к CPU и RAM могут значительно возрастать.
* RAM: 4 ГБ
* Диск: 20 ГБ SSD


'''Рекомендуемая конфигурация'''
== Подготовка системы ==


* CPU: 4 vCPU
Обновляем систему:
* RAM: 8 ГБ
* Диск: 50 ГБ SSD


== Обновление системы ==
<syntaxhighlight lang="bash">
apt update
apt upgrade -y
</syntaxhighlight>


Обновляем пакеты операционной системы:
Устанавливаем необходимые инструменты:


<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
apt update && apt upgrade -y
apt install -y \
apt install wget curl git nano unzip screen -y
    wget \
    curl \
    git \
    nano \
    unzip \
    build-essential
</syntaxhighlight>
</syntaxhighlight>


== Установка Java ==
Проверяем время и часовой пояс:
 
<syntaxhighlight lang="bash">
timedatectl
</syntaxhighlight>


Проверяем доступные версии Java:
При необходимости:


<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
apt search openjdk
timedatectl set-timezone Europe/Moscow
</syntaxhighlight>
</syntaxhighlight>


Устанавливаем рекомендуемую версию Java для используемой версии Minecraft.
== Установка Java ==
 
Версия Java зависит от версии Minecraft.
 
Перед установкой рекомендуется проверить требования конкретной версии сервера.


Пример для Java 25:
Для современных версий Minecraft обычно используется Java 21:


<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
apt install openjdk-25-jdk -y
apt install -y openjdk-21-jdk
</syntaxhighlight>
</syntaxhighlight>


Проверяем установку:
Проверяем:


<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
Строка 46: Строка 122:
</syntaxhighlight>
</syntaxhighlight>


Пример результата:
Пример:


<syntaxhighlight lang="text">
<syntaxhighlight lang="text">
openjdk version "25"
openjdk version "21"
OpenJDK Runtime Environment
OpenJDK Runtime Environment
OpenJDK 64-Bit Server VM
OpenJDK 64-Bit Server VM
</syntaxhighlight>
=== Проверка установленной Java ===
Путь до Java:
<syntaxhighlight lang="bash">
which java
</syntaxhighlight>
Обычно:
<syntaxhighlight lang="text">
/usr/bin/java
</syntaxhighlight>
</syntaxhighlight>


== Создание пользователя Minecraft ==
== Создание пользователя Minecraft ==


По соображениям безопасности сервер Minecraft не рекомендуется запускать от имени пользователя root.
Minecraft не следует запускать от имени root.


Создаем отдельного системного пользователя:
Создаём отдельного системного пользователя:


<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
useradd -r -m -U -d /opt/minecraft -s /bin/bash minecraft
useradd \
    --system \
    --create-home \
    --user-group \
    --home-dir /opt/minecraft \
    --shell /bin/bash \
    minecraft
</syntaxhighlight>
</syntaxhighlight>


Переходим под созданного пользователя:
Проверяем:
 
<syntaxhighlight lang="bash">
id minecraft
</syntaxhighlight>
 
Переходим под него:


<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
Строка 70: Строка 172:
</syntaxhighlight>
</syntaxhighlight>


== Подготовка каталогов ==
Домашним каталогом пользователя будет:
 
<syntaxhighlight lang="text">
/opt/minecraft
</syntaxhighlight>
 
== Структура каталогов ==


Создаем структуру каталогов:
Создаём:


<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
Строка 80: Строка 188:
</syntaxhighlight>
</syntaxhighlight>


Назначение каталогов:
Структура:
 
<syntaxhighlight lang="text">
/opt/minecraft/
├── server/
│  ├── server.jar
│  ├── server.properties
│  ├── eula.txt
│  ├── world/
│  └── logs/
│
├── backups/
│
└── tools/
</syntaxhighlight>
 
Назначение:


* '''server''' — файлы сервера Minecraft
* '''server''' — сервер Minecraft;
* '''backups''' — резервные копии
* '''backups''' — резервные копии;
* '''tools''' — вспомогательные утилиты
* '''tools''' — вспомогательные утилиты.


== Установка mcrcon ==
== Установка mcrcon ==


RCON позволяет удаленно управлять сервером Minecraft через консоль.
'''mcrcon''' используется для отправки команд Minecraft через RCON.


Клонируем репозиторий:
Клонируем проект:


<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
Строка 96: Строка 220:
</syntaxhighlight>
</syntaxhighlight>


Компилируем утилиту:
Компилируем:


<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
Строка 103: Строка 227:
</syntaxhighlight>
</syntaxhighlight>


Проверяем работоспособность:
Проверяем:


<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
Строка 109: Строка 233:
</syntaxhighlight>
</syntaxhighlight>


== Установка сервера Minecraft ==
== Установка Minecraft Server ==


Переходим в каталог сервера:
Переходим:


<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
cd ~/server
cd /opt/minecraft/server
</syntaxhighlight>
</syntaxhighlight>


Скачиваем актуальную версию сервера Minecraft с официального сайта Mojang.
Актуальный файл '''server.jar''' необходимо скачивать с официального сайта Minecraft/Mojang.
 
После получения ссылки:
 
<syntaxhighlight lang="bash">
wget -O server.jar \
'https://piston-data.mojang.com/.../server.jar'
</syntaxhighlight>


Пример:
Проверяем:


<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
wget https://piston-data.mojang.com/.../server.jar
ls -lh server.jar
</syntaxhighlight>
</syntaxhighlight>


Первый запуск:
== Первый запуск ==
 
Первый запуск нужен для генерации конфигурации:


<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
java -Xms4G -Xmx6G -jar server.jar nogui
java -Xms2G -Xmx4G -jar server.jar nogui
</syntaxhighlight>
</syntaxhighlight>


После первого запуска будут автоматически созданы конфигурационные файлы.
Сервер остановится, поскольку EULA ещё не принята.
 
После запуска появятся:
 
<syntaxhighlight lang="text">
eula.txt
server.properties
logs/
</syntaxhighlight>


== Принятие лицензионного соглашения EULA ==
== Принятие EULA ==


Открываем файл:
Открываем:


<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
Строка 141: Строка 282:
</syntaxhighlight>
</syntaxhighlight>


Изменяем параметр:
Меняем:


<syntaxhighlight lang="text">
<syntaxhighlight lang="text">
Строка 153: Строка 294:
</syntaxhighlight>
</syntaxhighlight>


Сохраняем изменения.
Сохраняем файл.


== Настройка RCON ==
== Базовая настройка server.properties ==


Открываем файл конфигурации:
Открываем:


<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
Строка 163: Строка 304:
</syntaxhighlight>
</syntaxhighlight>


Находим и изменяем следующие параметры:
Основные параметры:
 
<syntaxhighlight lang="properties">
server-port=25565
 
max-players=100
 
online-mode=true
 
enable-command-block=false
 
view-distance=10
simulation-distance=10
 
motd=RAMBA-ART Minecraft Server
</syntaxhighlight>
 
Для публичного сервера рекомендуется оставлять:
 
<syntaxhighlight lang="properties">
online-mode=true
</syntaxhighlight>
 
Это включает проверку учётных записей Mojang/Microsoft.
 
== Настройка RCON ==
 
В `server.properties`:


<syntaxhighlight lang="properties">
<syntaxhighlight lang="properties">
enable-rcon=true
enable-rcon=true
rcon.port=25575
rcon.port=25575
rcon.password=Укажите_Сложный_Пароль
rcon.password=CHANGE_THIS_PASSWORD
broadcast-rcon-to-ops=true
</syntaxhighlight>
 
После изменения сервер необходимо перезапустить.
 
=== Безопасность RCON ===
 
RCON не рекомендуется публиковать напрямую в Интернет.
 
Предпочтительная схема:
 
<syntaxhighlight lang="text">
mcrcon
  │
  │ 127.0.0.1:25575
  ▼
Minecraft Server
</syntaxhighlight>
 
То есть порт `25575` должен использоваться только локально либо через защищённую административную сеть/VPN.
 
== Проверка ручного запуска ==
 
Запускаем:
 
<syntaxhighlight lang="bash">
cd /opt/minecraft/server
 
java -Xms4G -Xmx6G \
    -jar server.jar \
    nogui
</syntaxhighlight>
 
Если сервер успешно загрузился, в консоли появится сообщение примерно:
 
<syntaxhighlight lang="text">
Done (...)! For help, type "help"
</syntaxhighlight>
</syntaxhighlight>


Сохраняем файл.
После проверки останавливаем:
 
<syntaxhighlight lang="text">
stop
</syntaxhighlight>


== Создание службы systemd ==
== Создание systemd-службы ==


Выходим из пользователя minecraft:
Выходим из пользователя Minecraft:


<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
Строка 181: Строка 390:
</syntaxhighlight>
</syntaxhighlight>


Создаем сервис:
Создаём:


<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
Строка 187: Строка 396:
</syntaxhighlight>
</syntaxhighlight>


Содержимое файла:
Содержимое:


<syntaxhighlight lang="ini">
<syntaxhighlight lang="ini">
[Unit]
[Unit]
Description=Minecraft Java Server
Description=Minecraft Java Server
After=network.target
After=network-online.target
Wants=network-online.target


[Service]
[Service]
Type=simple
User=minecraft
User=minecraft
Group=minecraft
Group=minecraft
Строка 200: Строка 412:
WorkingDirectory=/opt/minecraft/server
WorkingDirectory=/opt/minecraft/server


ExecStart=/usr/bin/java -Xms4G -Xmx6G -jar server.jar nogui
ExecStart=/usr/bin/java \
ExecStop=/opt/minecraft/tools/mcrcon/mcrcon -H 127.0.0.1 -P 25575 -p Укажите_Сложный_Пароль stop
    -Xms4G \
    -Xmx6G \
    -jar /opt/minecraft/server/server.jar \
    nogui


Restart=always
Restart=on-failure
RestartSec=10
RestartSec=10


Nice=1
SuccessExitStatus=0 143
KillMode=none
 
SuccessExitStatus=0 1
LimitNOFILE=65535


[Install]
[Install]
WantedBy=multi-user.target </syntaxhighlight>
WantedBy=multi-user.target
</syntaxhighlight>


Активируем сервис:
Применяем:


<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
systemctl daemon-reload
systemctl daemon-reload
systemctl enable minecraft
systemctl enable --now minecraft
</syntaxhighlight>
 
Проверяем:
 
<syntaxhighlight lang="bash">
systemctl status minecraft
</syntaxhighlight>
 
== Управление сервером ==
 
Запуск:
 
<syntaxhighlight lang="bash">
systemctl start minecraft
systemctl start minecraft
</syntaxhighlight>
</syntaxhighlight>


Проверяем состояние:
Остановка:
 
<syntaxhighlight lang="bash">
systemctl stop minecraft
</syntaxhighlight>
 
Перезапуск:
 
<syntaxhighlight lang="bash">
systemctl restart minecraft
</syntaxhighlight>
 
Статус:


<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
Строка 227: Строка 468:
</syntaxhighlight>
</syntaxhighlight>


Просмотр логов:
Логи:


<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
journalctl -u minecraft -f
journalctl -u minecraft -f
</syntaxhighlight>
Последние 100 строк:
<syntaxhighlight lang="bash">
journalctl -u minecraft -n 100
</syntaxhighlight>
== Подключение через RCON ==
Под пользователем Minecraft:
<syntaxhighlight lang="bash">
su - minecraft
</syntaxhighlight>
Подключение:
<syntaxhighlight lang="bash">
/opt/minecraft/tools/mcrcon/mcrcon \
    -H 127.0.0.1 \
    -P 25575 \
    -p 'CHANGE_THIS_PASSWORD' \
    -t
</syntaxhighlight>
После подключения можно выполнять команды сервера:
<syntaxhighlight lang="text">
list
say Server restart in 5 minutes
save-all
whitelist list
stop
</syntaxhighlight>
Выход из интерактивного режима mcrcon:
<syntaxhighlight lang="text">
Q
</syntaxhighlight>
</syntaxhighlight>


== Настройка Firewall ==
== Настройка Firewall ==


Если используется UFW:
Для игроков требуется только:
 
<syntaxhighlight lang="text">
25565/TCP
</syntaxhighlight>
 
При использовании UFW:


<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
Строка 241: Строка 528:
</syntaxhighlight>
</syntaxhighlight>


Для доступа к RCON извне:
Проверяем:
 
<syntaxhighlight lang="bash">
ufw status
</syntaxhighlight>
 
'''RCON-порт 25575/TCP не следует открывать для всего Интернета.'''
 
Если сервер находится в LXC или VM под Proxmox, правила можно централизованно управлять через Proxmox Firewall.
 
== Проверка порта Minecraft ==
 
Проверяем локально:
 
<syntaxhighlight lang="bash">
ss -ltnp | grep 25565
</syntaxhighlight>
 
Ожидаемый результат:
 
<syntaxhighlight lang="text">
LISTEN ... :25565
</syntaxhighlight>
 
Также можно проверить процесс:
 
<syntaxhighlight lang="bash">
ps aux | grep '[s]erver.jar'
</syntaxhighlight>
 
== Резервное копирование ==
 
Для корректного backup мира желательно сначала заставить Minecraft записать данные на диск.
 
Создаём конфигурационный файл для RCON:
 
<syntaxhighlight lang="bash">
nano /opt/minecraft/.rcon.env
</syntaxhighlight>
 
Содержимое:


<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
ufw allow 25575/tcp
RCON_HOST=127.0.0.1
RCON_PORT=25575
RCON_PASSWORD='CHANGE_THIS_PASSWORD'
</syntaxhighlight>
</syntaxhighlight>


''Примечание: при использовании LXC-контейнеров Proxmox рекомендуется настраивать правила через Firewall Proxmox, а не через UFW внутри контейнера.''
Ограничиваем доступ:


== Создание резервных копий ==
<syntaxhighlight lang="bash">
chown minecraft:minecraft /opt/minecraft/.rcon.env
chmod 600 /opt/minecraft/.rcon.env
</syntaxhighlight>


Создаем файл:
Создаём backup-скрипт:


<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
Строка 261: Строка 593:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
#!/bin/bash
#!/bin/bash
set -e
source /opt/minecraft/.rcon.env


RCON="/opt/minecraft/tools/mcrcon/mcrcon"
RCON="/opt/minecraft/tools/mcrcon/mcrcon"
PASSWORD="Укажите_Сложный_Пароль"


$RCON -H 127.0.0.1 -P 25575 -p $PASSWORD save-off
BACKUP_DIR="/opt/minecraft/backups"
$RCON -H 127.0.0.1 -P 25575 -p $PASSWORD save-all
SERVER_DIR="/opt/minecraft/server"
 
TIMESTAMP="$(date +%F-%H-%M-%S)"
BACKUP_FILE="${BACKUP_DIR}/minecraft-${TIMESTAMP}.tar.gz"
 
$RCON \
    -H "$RCON_HOST" \
    -P "$RCON_PORT" \
    -p "$RCON_PASSWORD" \
    "save-off"
 
$RCON \
    -H "$RCON_HOST" \
    -P "$RCON_PORT" \
    -p "$RCON_PASSWORD" \
    "save-all flush"


tar -czf /opt/minecraft/backups/server-$(date +%F-%H-%M).tar.gz /opt/minecraft/server
tar \
    --exclude='./logs' \
    -czf "$BACKUP_FILE" \
    -C "$SERVER_DIR" \
    .


$RCON -H 127.0.0.1 -P 25575 -p $PASSWORD save-on
$RCON \
    -H "$RCON_HOST" \
    -P "$RCON_PORT" \
    -p "$RCON_PASSWORD" \
    "save-on"


find /opt/minecraft/backups -type f -mtime +7 -delete </syntaxhighlight>
find "$BACKUP_DIR" \
    -type f \
    -name 'minecraft-*.tar.gz' \
    -mtime +7 \
    -delete
</syntaxhighlight>


Делаем скрипт исполняемым:
Делаем исполняемым:


<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
chmod +x /opt/minecraft/tools/backup.sh
chmod +x /opt/minecraft/tools/backup.sh
chown minecraft:minecraft /opt/minecraft/tools/backup.sh
</syntaxhighlight>
Тестируем:
<syntaxhighlight lang="bash">
su - minecraft -c '/opt/minecraft/tools/backup.sh'
</syntaxhighlight>
Проверяем:
<syntaxhighlight lang="bash">
ls -lh /opt/minecraft/backups/
</syntaxhighlight>
</syntaxhighlight>


== Настройка автоматического резервного копирования ==
== Автоматическое резервное копирование ==


Переходим под пользователя minecraft:
Переходим:


<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
Строка 288: Строка 664:
</syntaxhighlight>
</syntaxhighlight>


Открываем планировщик задач:
Открываем:


<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
Строка 294: Строка 670:
</syntaxhighlight>
</syntaxhighlight>


Добавляем задание:
Например, ежедневный backup в 04:00:
 
<syntaxhighlight lang="cron">
0 4 * * * /opt/minecraft/tools/backup.sh >> /opt/minecraft/backups/backup.log 2>&1
</syntaxhighlight>
 
Проверяем:


<syntaxhighlight lang="text">
<syntaxhighlight lang="bash">
0 4 * * * /opt/minecraft/tools/backup.sh
crontab -l
</syntaxhighlight>
</syntaxhighlight>


Резервная копия будет создаваться ежедневно в 04:00.
== Обновление Minecraft Server ==
 
Перед обновлением:
 
# создаём резервную копию;
# останавливаем сервер;
# сохраняем старый `server.jar`;
# устанавливаем новый;
# запускаем сервер;
# проверяем логи и совместимость мира.
 
Пример:
 
<syntaxhighlight lang="bash">
systemctl stop minecraft


== Подключение к консоли сервера ==
cp /opt/minecraft/server/server.jar \
  /opt/minecraft/server/server.jar.old
</syntaxhighlight>


Подключение через RCON:
После загрузки нового файла:


<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
/opt/minecraft/tools/mcrcon/mcrcon \
systemctl start minecraft
-H 127.0.0.1 \
journalctl -u minecraft -f
-P 25575 \
-p Укажите_Сложный_Пароль \
-t
</syntaxhighlight>
</syntaxhighlight>


Для выхода из консоли используйте:
== Проверка ресурсов ==
 
CPU и память:


<syntaxhighlight lang="text">
<syntaxhighlight lang="bash">
Q
top
</syntaxhighlight>
</syntaxhighlight>


== Полезные команды ==
или:
 
<syntaxhighlight lang="bash">
htop
</syntaxhighlight>


Запуск сервера:
Память:


<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
systemctl start minecraft
free -h
</syntaxhighlight>
</syntaxhighlight>


Остановка сервера:
Диск:


<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
systemctl stop minecraft
df -h
</syntaxhighlight>
</syntaxhighlight>


Перезапуск сервера:
Размер мира:


<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
systemctl restart minecraft
du -sh /opt/minecraft/server/world*
</syntaxhighlight>
</syntaxhighlight>


Проверка состояния:
== Java и Minecraft ==
 
Требования Java меняются вместе с Minecraft.
 
Общее правило:
 
{| class="wikitable"
! Minecraft
! Java
|-
| 1.20.5 и новее
| Java 21
|-
| Старые версии
| Требования зависят от конкретного релиза
|}
 
Перед обновлением необходимо проверять требования именно для устанавливаемой версии Minecraft.
 
Не стоит обновлять Java исключительно потому, что появилась более новая версия JDK.
 
== Типичные проблемы ==
 
=== Сервер не запускается ===
 
Проверяем:


<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
systemctl status minecraft
systemctl status minecraft
journalctl -u minecraft -n 100
</syntaxhighlight>
=== Ошибка памяти ===
Проверяем:
<syntaxhighlight lang="bash">
free -h
</syntaxhighlight>
При необходимости уменьшаем:
<syntaxhighlight lang="text">
-Xmx
</syntaxhighlight>
=== Клиенты не подключаются ===
Проверяем:
<syntaxhighlight lang="bash">
ss -ltnp | grep 25565
</syntaxhighlight>
Затем:
* Firewall;
* NAT;
* проброс портов;
* публичный IP;
* `server-port`;
* `server-ip`.
Обычно `server-ip` рекомендуется оставлять пустым.
=== RCON не работает ===
Проверяем:
<syntaxhighlight lang="bash">
grep -E 'enable-rcon|rcon.port' \
/opt/minecraft/server/server.properties
</syntaxhighlight>
</syntaxhighlight>


Просмотр логов:
И:


<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
journalctl -u minecraft -f
ss -ltnp | grep 25575
</syntaxhighlight>
</syntaxhighlight>


== Совместимость Minecraft и Java ==
== Рекомендации ==
 
Для production-сервера рекомендуется:
 
* запускать Minecraft от отдельного пользователя;
* использовать systemd;
* не открывать RCON в Интернет;
* выполнять ежедневные backup;
* хранить резервные копии вне основного сервера;
* использовать SSD;
* контролировать свободное место;
* регулярно проверять логи;
* делать backup перед обновлением;
* обновлять сервер только после проверки совместимости Java и Minecraft.
 
== Полезные команды ==


{| class="wikitable"
{| class="wikitable"
! Версия Minecraft
! Задача
! Команда
|-
| Запуск
| <code>systemctl start minecraft</code>
|-
| Остановка
| <code>systemctl stop minecraft</code>
|-
| Перезапуск
| <code>systemctl restart minecraft</code>
|-
| Статус
| <code>systemctl status minecraft</code>
|-
| Логи
| <code>journalctl -u minecraft -f</code>
|-
| Проверить порт
| <code>ss -ltnp | grep 25565</code>
|-
| Проверить Java
| <code>java -version</code>
|-
| Проверить память
| <code>free -h</code>
|-
| Проверить диск
| <code>df -h</code>
|}
 
== Итоговая архитектура ==
 
<syntaxhighlight lang="text">
              Minecraft Client
                      │
                      │ TCP :25565
                      ▼
        ┌──────────────────────────┐
        │    Minecraft Server    │
        │                          │
        │        server.jar        │
        └────────────┬─────────────┘
                    │
        ┌────────────┼────────────┐
        │            │            │
        ▼            ▼            ▼
    systemd      mcrcon      backups
                      │
                      ▼
                localhost RCON
</syntaxhighlight>
 
Такой вариант удобен для постоянной эксплуатации, обновления, диагностики и восстановления сервера.
 
== См. также ==
 
* [[Proxmox VE]]
* [[Linux]]
* [[Minecraft]]
* [[Резервное копирование]]
* [[Мониторинг]]
 
== Внешние ссылки ==


| ! Требуемая Java |
* [https://www.minecraft.net/ Официальный сайт Minecraft]
| ---------------- |
* [https://www.minecraft.net/download/server Minecraft Java Server]
| Minecraft 1.20.x |
* [https://github.com/Tiiffi/mcrcon mcrcon]
| Java 17          |
| -                |
| Minecraft 1.21.x |
| Java 21          |
| -                |
| Minecraft 26.x.x |
| Java 25          |
| }                |


''Перед обновлением сервера всегда проверяйте требования к версии Java для используемой версии Minecraft.''
[[Категория:Minecraft]]
[[Категория:Linux]]
[[Категория:Ubuntu]]
[[Категория:Игровые серверы]]
[[Категория:Администрирование]]
[[Категория:RAMBA ART]]

Текущая версия от 13:30, 2 сентября 2026

Minecraft Java Server

Установка и эксплуатация выделенного сервера Minecraft на Ubuntu 24.04 LTS

Minecraft Java Server — выделенный сервер для Minecraft Java Edition.

В этой статье рассматривается установка сервера на Ubuntu 24.04 LTS с отдельным системным пользователем, автоматическим запуском через systemd, RCON-управлением и резервным копированием.

Конфигурация подходит для виртуальной машины, физического сервера или LXC-контейнера.

Архитектура

Базовая схема сервера:

                    Игроки
                       │
                       │ TCP :25565
                       ▼
               ┌───────────────┐
               │   Minecraft   │
               │ Java Server   │
               └───────┬───────┘
                       │
              ┌────────┴────────┐
              │                 │
              ▼                 ▼
          systemd              RCON
                                  │
                                  ▼
                               mcrcon

В production-конфигурации Minecraft запускается не вручную, а как системная служба.

Системные требования

Параметр Минимально Рекомендуется
CPU 2 vCPU 4+ производительных ядра
RAM 4 ГБ 8 ГБ и более
Диск 20 ГБ 50+ ГБ SSD
ОС Ubuntu 24.04 LTS Ubuntu 24.04 LTS
Сеть 25565/TCP Статический IP или NAT

При большой дальности прорисовки, большом количестве игроков или тяжёлых модификациях требования к CPU и RAM могут значительно возрастать.

Подготовка системы

Обновляем систему:

apt update
apt upgrade -y

Устанавливаем необходимые инструменты:

apt install -y \
    wget \
    curl \
    git \
    nano \
    unzip \
    build-essential

Проверяем время и часовой пояс:

timedatectl

При необходимости:

timedatectl set-timezone Europe/Moscow

Установка Java

Версия Java зависит от версии Minecraft.

Перед установкой рекомендуется проверить требования конкретной версии сервера.

Для современных версий Minecraft обычно используется Java 21:

apt install -y openjdk-21-jdk

Проверяем:

java -version

Пример:

openjdk version "21"
OpenJDK Runtime Environment
OpenJDK 64-Bit Server VM

Проверка установленной Java

Путь до Java:

which java

Обычно:

/usr/bin/java

Создание пользователя Minecraft

Minecraft не следует запускать от имени root.

Создаём отдельного системного пользователя:

useradd \
    --system \
    --create-home \
    --user-group \
    --home-dir /opt/minecraft \
    --shell /bin/bash \
    minecraft

Проверяем:

id minecraft

Переходим под него:

su - minecraft

Домашним каталогом пользователя будет:

/opt/minecraft

Структура каталогов

Создаём:

mkdir -p ~/server
mkdir -p ~/backups
mkdir -p ~/tools

Структура:

/opt/minecraft/
├── server/
│   ├── server.jar
│   ├── server.properties
│   ├── eula.txt
│   ├── world/
│   └── logs/
│
├── backups/
│
└── tools/

Назначение:

  • server — сервер Minecraft;
  • backups — резервные копии;
  • tools — вспомогательные утилиты.

Установка mcrcon

mcrcon используется для отправки команд Minecraft через RCON.

Клонируем проект:

git clone https://github.com/Tiiffi/mcrcon.git ~/tools/mcrcon

Компилируем:

cd ~/tools/mcrcon
make

Проверяем:

./mcrcon -v

Установка Minecraft Server

Переходим:

cd /opt/minecraft/server

Актуальный файл server.jar необходимо скачивать с официального сайта Minecraft/Mojang.

После получения ссылки:

wget -O server.jar \
'https://piston-data.mojang.com/.../server.jar'

Проверяем:

ls -lh server.jar

Первый запуск

Первый запуск нужен для генерации конфигурации:

java -Xms2G -Xmx4G -jar server.jar nogui

Сервер остановится, поскольку EULA ещё не принята.

После запуска появятся:

eula.txt
server.properties
logs/

Принятие EULA

Открываем:

nano eula.txt

Меняем:

eula=false

на:

eula=true

Сохраняем файл.

Базовая настройка server.properties

Открываем:

nano server.properties

Основные параметры:

server-port=25565

max-players=100

online-mode=true

enable-command-block=false

view-distance=10
simulation-distance=10

motd=RAMBA-ART Minecraft Server

Для публичного сервера рекомендуется оставлять:

online-mode=true

Это включает проверку учётных записей Mojang/Microsoft.

Настройка RCON

В `server.properties`:

enable-rcon=true
rcon.port=25575
rcon.password=CHANGE_THIS_PASSWORD
broadcast-rcon-to-ops=true

После изменения сервер необходимо перезапустить.

Безопасность RCON

RCON не рекомендуется публиковать напрямую в Интернет.

Предпочтительная схема:

mcrcon
   │
   │ 127.0.0.1:25575
   ▼
Minecraft Server

То есть порт `25575` должен использоваться только локально либо через защищённую административную сеть/VPN.

Проверка ручного запуска

Запускаем:

cd /opt/minecraft/server

java -Xms4G -Xmx6G \
    -jar server.jar \
    nogui

Если сервер успешно загрузился, в консоли появится сообщение примерно:

Done (...)! For help, type "help"

После проверки останавливаем:

stop

Создание systemd-службы

Выходим из пользователя Minecraft:

exit

Создаём:

nano /etc/systemd/system/minecraft.service

Содержимое:

[Unit]
Description=Minecraft Java Server
After=network-online.target
Wants=network-online.target

[Service]
Type=simple

User=minecraft
Group=minecraft

WorkingDirectory=/opt/minecraft/server

ExecStart=/usr/bin/java \
    -Xms4G \
    -Xmx6G \
    -jar /opt/minecraft/server/server.jar \
    nogui

Restart=on-failure
RestartSec=10

SuccessExitStatus=0 143

LimitNOFILE=65535

[Install]
WantedBy=multi-user.target

Применяем:

systemctl daemon-reload
systemctl enable --now minecraft

Проверяем:

systemctl status minecraft

Управление сервером

Запуск:

systemctl start minecraft

Остановка:

systemctl stop minecraft

Перезапуск:

systemctl restart minecraft

Статус:

systemctl status minecraft

Логи:

journalctl -u minecraft -f

Последние 100 строк:

journalctl -u minecraft -n 100

Подключение через RCON

Под пользователем Minecraft:

su - minecraft

Подключение:

/opt/minecraft/tools/mcrcon/mcrcon \
    -H 127.0.0.1 \
    -P 25575 \
    -p 'CHANGE_THIS_PASSWORD' \
    -t

После подключения можно выполнять команды сервера:

list
say Server restart in 5 minutes
save-all
whitelist list
stop

Выход из интерактивного режима mcrcon:

Q

Настройка Firewall

Для игроков требуется только:

25565/TCP

При использовании UFW:

ufw allow 25565/tcp

Проверяем:

ufw status

RCON-порт 25575/TCP не следует открывать для всего Интернета.

Если сервер находится в LXC или VM под Proxmox, правила можно централизованно управлять через Proxmox Firewall.

Проверка порта Minecraft

Проверяем локально:

ss -ltnp | grep 25565

Ожидаемый результат:

LISTEN ... :25565

Также можно проверить процесс:

ps aux | grep '[s]erver.jar'

Резервное копирование

Для корректного backup мира желательно сначала заставить Minecraft записать данные на диск.

Создаём конфигурационный файл для RCON:

nano /opt/minecraft/.rcon.env

Содержимое:

RCON_HOST=127.0.0.1
RCON_PORT=25575
RCON_PASSWORD='CHANGE_THIS_PASSWORD'

Ограничиваем доступ:

chown minecraft:minecraft /opt/minecraft/.rcon.env
chmod 600 /opt/minecraft/.rcon.env

Создаём backup-скрипт:

nano /opt/minecraft/tools/backup.sh

Содержимое:

#!/bin/bash

set -e

source /opt/minecraft/.rcon.env

RCON="/opt/minecraft/tools/mcrcon/mcrcon"

BACKUP_DIR="/opt/minecraft/backups"
SERVER_DIR="/opt/minecraft/server"

TIMESTAMP="$(date +%F-%H-%M-%S)"
BACKUP_FILE="${BACKUP_DIR}/minecraft-${TIMESTAMP}.tar.gz"

$RCON \
    -H "$RCON_HOST" \
    -P "$RCON_PORT" \
    -p "$RCON_PASSWORD" \
    "save-off"

$RCON \
    -H "$RCON_HOST" \
    -P "$RCON_PORT" \
    -p "$RCON_PASSWORD" \
    "save-all flush"

tar \
    --exclude='./logs' \
    -czf "$BACKUP_FILE" \
    -C "$SERVER_DIR" \
    .

$RCON \
    -H "$RCON_HOST" \
    -P "$RCON_PORT" \
    -p "$RCON_PASSWORD" \
    "save-on"

find "$BACKUP_DIR" \
    -type f \
    -name 'minecraft-*.tar.gz' \
    -mtime +7 \
    -delete

Делаем исполняемым:

chmod +x /opt/minecraft/tools/backup.sh
chown minecraft:minecraft /opt/minecraft/tools/backup.sh

Тестируем:

su - minecraft -c '/opt/minecraft/tools/backup.sh'

Проверяем:

ls -lh /opt/minecraft/backups/

Автоматическое резервное копирование

Переходим:

su - minecraft

Открываем:

crontab -e

Например, ежедневный backup в 04:00:

0 4 * * * /opt/minecraft/tools/backup.sh >> /opt/minecraft/backups/backup.log 2>&1

Проверяем:

crontab -l

Обновление Minecraft Server

Перед обновлением:

  1. создаём резервную копию;
  2. останавливаем сервер;
  3. сохраняем старый `server.jar`;
  4. устанавливаем новый;
  5. запускаем сервер;
  6. проверяем логи и совместимость мира.

Пример:

systemctl stop minecraft

cp /opt/minecraft/server/server.jar \
   /opt/minecraft/server/server.jar.old

После загрузки нового файла:

systemctl start minecraft
journalctl -u minecraft -f

Проверка ресурсов

CPU и память:

top

или:

htop

Память:

free -h

Диск:

df -h

Размер мира:

du -sh /opt/minecraft/server/world*

Java и Minecraft

Требования Java меняются вместе с Minecraft.

Общее правило:

Minecraft Java
1.20.5 и новее Java 21
Старые версии Требования зависят от конкретного релиза

Перед обновлением необходимо проверять требования именно для устанавливаемой версии Minecraft.

Не стоит обновлять Java исключительно потому, что появилась более новая версия JDK.

Типичные проблемы

Сервер не запускается

Проверяем:

systemctl status minecraft
journalctl -u minecraft -n 100

Ошибка памяти

Проверяем:

free -h

При необходимости уменьшаем:

-Xmx

Клиенты не подключаются

Проверяем:

ss -ltnp | grep 25565

Затем:

  • Firewall;
  • NAT;
  • проброс портов;
  • публичный IP;
  • `server-port`;
  • `server-ip`.

Обычно `server-ip` рекомендуется оставлять пустым.

RCON не работает

Проверяем:

grep -E 'enable-rcon|rcon.port' \
/opt/minecraft/server/server.properties

И:

ss -ltnp | grep 25575

Рекомендации

Для production-сервера рекомендуется:

  • запускать Minecraft от отдельного пользователя;
  • использовать systemd;
  • не открывать RCON в Интернет;
  • выполнять ежедневные backup;
  • хранить резервные копии вне основного сервера;
  • использовать SSD;
  • контролировать свободное место;
  • регулярно проверять логи;
  • делать backup перед обновлением;
  • обновлять сервер только после проверки совместимости Java и Minecraft.

Полезные команды

Задача Команда
Запуск systemctl start minecraft
Остановка systemctl stop minecraft
Перезапуск systemctl restart minecraft
Статус systemctl status minecraft
Логи journalctl -u minecraft -f
Проверить порт grep 25565
Проверить Java java -version
Проверить память free -h
Проверить диск df -h

Итоговая архитектура

               Minecraft Client
                      │
                      │ TCP :25565
                      ▼
        ┌──────────────────────────┐
        │     Minecraft Server     │
        │                          │
        │        server.jar        │
        └────────────┬─────────────┘
                     │
        ┌────────────┼────────────┐
        │            │            │
        ▼            ▼            ▼
     systemd       mcrcon       backups
                      │
                      ▼
                localhost RCON

Такой вариант удобен для постоянной эксплуатации, обновления, диагностики и восстановления сервера.

См. также

Внешние ссылки