Как установить Minecraft сервер на CentOS 7: Java, firewall, systemd и резервные копии

Как установить Minecraft сервер на CentOS 7

Установка Minecraft сервера на CentOS 7 остаётся популярным решением для пользователей, которым нужен полный контроль над версией сервера, плагинами, модами, файлами мира, резервными копиями и параметрами запуска Java. В отличие от готовых игровых панелей, ручная установка даёт прозрачную среду: вы понимаете, где лежат файлы, как запускается процесс, какой порт открыт, как настроен автозапуск и что именно нужно восстановить в случае сбоя. Это особенно полезно, если сервер будет использоваться долго, а не только для короткого теста.

Практически весь процесс сводится к нескольким шагам: подготовить CentOS 7, установить Java, создать отдельного пользователя, скачать серверный .jar, настроить systemd unit и открыть порт в firewall. Чаще всего такую схему разворачивают на VPS, потому что там есть root-доступ и можно гибко управлять ресурсами. Для более тяжёлых модпаков, больших миров и значительной нагрузки подойдёт выделенный сервер. А для хранения резервных копий вне игрового хоста удобно использовать облачное хранилище.

До начала установки важно выяснить, какая версия Java требуется вашему Minecraft серверу. Старые версии обычно работают на Java 8, а новые часто требуют Java 17. Это один из самых важных подготовительных шагов, потому что очень многие проблемы со стартом сервера связаны не с самим Minecraft, а с неверной Java средой.

1) Подготовка системы и отдельный пользователь

Не запускайте Minecraft от root. Намного безопаснее создать отдельного пользователя minecraft и разместить все файлы сервера под ним. Это уменьшает риск избыточных прав, упрощает обслуживание и делает резервное копирование более понятным. Одновременно полезно обновить систему и поставить базовые инструменты для администрирования.

sudo yum update -y
sudo yum install -y wget curl nano tar unzip screen

sudo useradd -r -m -U -d /opt/minecraft -s /bin/bash minecraft
sudo mkdir -p /opt/minecraft/server
sudo chown -R minecraft:minecraft /opt/minecraft

Такой подход удобен и в будущем. Если позже понадобится второй сервер, тестовая среда или другая версия Minecraft, вы сможете просто создать дополнительную поддиректорию и не путать игровые файлы с системными.

2) Установка Java

Следующий шаг — установка Java. На CentOS 7 обычно проще всего использовать OpenJDK из репозиториев. Установите именно ту версию, которая нужна вашей сборке сервера. После установки обязательно проверьте активную версию командой java -version, чтобы убедиться, что система видит нужный runtime.

sudo yum install -y java-17-openjdk java-17-openjdk-headless
java -version

Если вашей версии сервера нужна Java 8, используйте пакеты java-1.8.0-openjdk. Этот шаг кажется простым, но на практике именно он часто решает проблему ещё до того, как она появится.

3) Загрузка server.jar и первый запуск

Переключитесь на пользователя minecraft, перейдите в рабочую директорию и скачайте серверный .jar файл. Здесь ссылка остаётся условной, потому что конкретный URL зависит от того, используете ли вы vanilla, Paper, Spigot или другую серверную сборку.

sudo su - minecraft
cd /opt/minecraft/server

wget -O server.jar YOUR_SERVER_JAR_URL
ls -lh

Первый запуск нужен для генерации исходных файлов, включая eula.txt и server.properties. Для первой проверки используйте умеренный объём памяти. Не нужно сразу отдавать серверу весь доступный RAM — операционной системе и файловому кешу тоже нужны ресурсы.

java -Xms1G -Xmx2G -jar server.jar nogui

После первого запуска сервер обычно остановится, потому что EULA ещё не принята. Откройте eula.txt и измените eula=false на eula=true. Без этого сервер не начнёт нормальную работу.

nano eula.txt
# замените:
eula=false

# на:
eula=true

4) Настройка server.properties

Файл server.properties содержит основные параметры работы сервера: порт, лимит игроков, MOTD, режим online-mode, whitelist, сложность, distance и другие настройки. Эти параметры влияют не только на игровой процесс, но и на нагрузку на сервер, поэтому лучше сразу заложить разумную базовую конфигурацию.

Для небольшого приватного сервера стоит начать с умеренного max-players, включённого whitelist и аккуратных значений view-distance. Намного проще постепенно увеличивать нагрузку, чем сразу запускать сервер на завышенных параметрах и потом искать, из-за чего он тормозит.

nano server.properties
motd=CloudHosting Minecraft Server
server-port=25565
max-players=10
online-mode=true
white-list=true
view-distance=8
simulation-distance=6
difficulty=normal
spawn-protection=0

Если сервер предназначен для друзей или ограниченного сообщества, whitelist — хорошая практика уже на старте. Если позже вы захотите открыть его публично, это можно сделать после того, как базовая конфигурация будет проверена и стабилизирована.

5) Systemd unit для автозапуска

Для долгосрочной эксплуатации лучше использовать systemd unit, а не полагаться только на ручной запуск или screen. Systemd даёт автозапуск после reboot, быстрый контроль статуса и более предсказуемое поведение при restart. Это особенно удобно, если сервер должен жить постоянно, а не запускаться вручную каждый раз.

sudo nano /etc/systemd/system/minecraft.service
[Unit]
Description=Minecraft Server
After=network.target

[Service]
User=minecraft
Group=minecraft
WorkingDirectory=/opt/minecraft/server
ExecStart=/usr/bin/java -Xms1G -Xmx2G -jar /opt/minecraft/server/server.jar nogui
ExecStop=/bin/kill -SIGINT $MAINPID
Restart=on-failure
RestartSec=20
Nice=1
NoNewPrivileges=true
ProtectHome=true
ProtectSystem=full
PrivateTmp=true

[Install]
WantedBy=multi-user.target

После сохранения unit-файла перечитайте конфигурацию systemd, включите сервис и запустите его. Команда status сразу покажет, корректны ли путь к JAR, рабочая директория и команда запуска.

sudo systemctl daemon-reload
sudo systemctl enable minecraft
sudo systemctl start minecraft
sudo systemctl status minecraft

6) Firewall и первое подключение

Стандартный порт Minecraft Java Edition — 25565/TCP. Если сервер стартует, но клиент не подключается, наиболее вероятная причина — firewall. В CentOS 7 обычно используется firewalld, и порт нужно открыть как в локальной системе, так и, при необходимости, на стороне провайдера.

sudo firewall-cmd --permanent --add-port=25565/tcp
sudo firewall-cmd --reload
sudo firewall-cmd --list-ports
ss -lntp | grep 25565

После этого можно подключаться из клиента по IP-адресу сервера. Если нужен домен, добавьте A-запись на IP сервера. Для приватной среды лучше оставить online-mode=true и whitelist включённым, чтобы не открыть доступ всем желающим из интернета.

Производительность, безопасность и резервные копии

Производительность Minecraft сервера определяется не только объёмом RAM. Большое значение имеют single-thread производительность CPU, скорость диска, размер мира, поведение модов или плагинов, а также значения view-distance и simulation-distance. Очень большой Java heap не всегда помогает и иногда даже ухудшает работу из-за особенностей garbage collection. Поэтому ресурсы лучше увеличивать постепенно, исходя из реальной нагрузки.

С точки зрения безопасности важно запускать сервер под отдельным пользователем, не открывать лишние порты и регулярно обновлять Java. Если вы используете плагины или модифицированные серверные сборки, скачивайте их только из проверенных источников. Неудачный или вредоносный плагин может повлиять не только на стабильность мира, но и на безопасность всей среды.

Резервные копии крайне важны, потому что самая ценная часть сервера — это файлы мира и данные игроков. Переустановить сам сервер легко, а восстановить потерянный мир без backup почти невозможно. Самый простой вариант — периодически архивировать каталог сервера и хранить архив вне основной машины.

tar -czf /tmp/minecraft-backup-$(date +%F).tar.gz /opt/minecraft/server

Если сервер планируется как долгосрочный проект, зафиксируйте используемую версию Minecraft, версию Java, настройки systemd, открытые порты и процедуру backup. Такая документация сильно помогает при обновлениях, переносе на более мощный сервер и устранении неполадок. Надёжный Minecraft сервер — это не тот, который один раз запустился, а тот, который можно понятно сопровождать, восстанавливать и развивать дальше.