Home » Как создать сервер Minecraft на Ubuntu 24
Как создать сервер Minecraft на Ubuntu 24

Как создать сервер Minecraft на Ubuntu 24

Подъём собственного сервера Minecraft — это то, что хочется сделать каждому разработчику или энтузиасту хотя бы раз в жизни. Особенно если есть команда друзей или коллег, которые готовы окунуться в виртуальный мир кубиков и креатива. Ubuntu 24 стал отличной базой для таких экспериментов: стабильная LTS-версия, актуальные пакеты Java, простая настройка и минимальные системные требования. В этой статье разберём весь процесс от выбора железа до автоматизации запуска и обслуживания сервера. Никаких лишних телодвижений — только практика и рабочие решения.

Как это работает: архитектура и принципы

Сервер Minecraft — это Java-приложение, которое обрабатывает подключения игроков, управляет игровым миром, обрабатывает события и синхронизирует данные между клиентами. Всё довольно просто: клиенты подключаются по TCP (порт 25565 по умолчанию), отправляют пакеты с действиями, а сервер их обрабатывает и рассылает обновления всем подключённым игрокам.

Основные компоненты:

  • Server.jar — основной исполняемый файл сервера
  • world/ — папка с игровым миром (сохранения, структуры, игроки)
  • server.properties — конфигурационный файл с настройками
  • whitelist.json — список разрешённых игроков
  • logs/ — папка с логами сервера

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

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

Minecraft сервер довольно требователен к ресурсам, особенно к RAM и CPU. Вот практичная табличка с рекомендациями:

Количество игроков RAM (минимум/рекомендуется) CPU Диск
1-5 1GB / 2GB 2+ ГГц одноядерный 2GB SSD
5-10 2GB / 4GB 2+ ГГц двухъядерный 5GB SSD
10-20 4GB / 8GB 3+ ГГц четырёхъядерный 10GB SSD
20+ 8GB+ Выделенный сервер 20GB+ NVMe

Для тестирования и небольшого сервера подойдёт VPS, а для серьёзных проектов лучше брать выделенный сервер.

Пошаговая настройка сервера

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

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

sudo apt update && sudo apt upgrade -y
sudo apt install openjdk-21-jdk-headless wget screen htop nano -y

Проверяем версию Java:

java -version

Шаг 2: Создание пользователя для сервера

Не запускаем сервер от root — создаём отдельного пользователя:

sudo adduser minecraft
sudo usermod -aG sudo minecraft
sudo su - minecraft

Шаг 3: Скачивание и первый запуск

Создаём директорию для сервера и скачиваем последнюю версию:

mkdir ~/minecraft-server
cd ~/minecraft-server
wget https://piston-data.mojang.com/v1/objects/59353fb40c36d304f2035d51e7d6e6baa98dc05c/server.jar

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

java -Xmx2G -Xms1G -jar server.jar nogui

Сервер завершится с ошибкой — это нормально. Нужно принять лицензионное соглашение:

nano eula.txt

Меняем eula=false на eula=true.

Шаг 4: Настройка server.properties

Основные параметры, которые стоит настроить:

nano server.properties

Ключевые настройки:

server-port=25565
max-players=20
motd=Мой крутой сервер
difficulty=normal
gamemode=survival
pvp=true
enable-command-block=true
spawn-protection=16
max-world-size=29999984
view-distance=10
simulation-distance=10

Шаг 5: Создание стартового скрипта

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

nano start.sh

Содержимое скрипта:

#!/bin/bash
java -Xmx2G -Xms1G -XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -XX:G1NewSizePercent=30 -XX:G1MaxNewSizePercent=40 -XX:G1HeapRegionSize=8M -XX:G1ReservePercent=20 -XX:G1HeapWastePercent=5 -XX:G1MixedGCCountTarget=4 -XX:InitiatingHeapOccupancyPercent=15 -XX:G1MixedGCLiveThresholdPercent=90 -XX:G1RSetUpdatingPauseTimePercent=5 -XX:SurvivorRatio=32 -XX:+PerfDisableSharedMem -XX:MaxTenuringThreshold=1 -jar server.jar nogui

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

chmod +x start.sh

Автоматизация и управление сервером

Создание systemd сервиса

Для автоматического запуска при загрузке системы создаём systemd unit:

sudo nano /etc/systemd/system/minecraft.service

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

[Unit]
Description=Minecraft Server
After=network.target

[Service]
Type=forking
User=minecraft
WorkingDirectory=/home/minecraft/minecraft-server
ExecStart=/usr/bin/screen -dmS minecraft /home/minecraft/minecraft-server/start.sh
ExecStop=/usr/bin/screen -S minecraft -X stuff "stop\n"
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target

Активируем сервис:

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

Скрипт для управления сервером

Создаём удобный скрипт для управления:

nano ~/minecraft-control.sh
#!/bin/bash

SERVER_DIR="/home/minecraft/minecraft-server"
SCREEN_NAME="minecraft"

case "$1" in
    start)
        echo "Запуск сервера..."
        cd $SERVER_DIR
        screen -dmS $SCREEN_NAME ./start.sh
        ;;
    stop)
        echo "Остановка сервера..."
        screen -S $SCREEN_NAME -X stuff "stop\n"
        ;;
    restart)
        echo "Перезапуск сервера..."
        screen -S $SCREEN_NAME -X stuff "stop\n"
        sleep 10
        cd $SERVER_DIR
        screen -dmS $SCREEN_NAME ./start.sh
        ;;
    console)
        screen -r $SCREEN_NAME
        ;;
    backup)
        echo "Создание бэкапа..."
        tar -czf "backup-$(date +%Y%m%d-%H%M%S).tar.gz" world/
        ;;
    *)
        echo "Использование: $0 {start|stop|restart|console|backup}"
        exit 1
        ;;
esac

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

chmod +x ~/minecraft-control.sh

Безопасность и сетевые настройки

Настройка файрвола

Открываем необходимые порты:

sudo ufw allow 25565/tcp
sudo ufw allow ssh
sudo ufw enable

Настройка whitelist и op-права

Включаем whitelist в server.properties:

white-list=true

Добавляем игроков в whitelist:

screen -S minecraft -X stuff "whitelist add PlayerName\n"
screen -S minecraft -X stuff "op PlayerName\n"

Мониторинг и оптимизация

Мониторинг ресурсов

Простой скрипт для мониторинга:

nano ~/monitor.sh
#!/bin/bash

echo "=== Minecraft Server Monitor ==="
echo "CPU Usage:"
top -bn1 | grep "Cpu(s)" | awk '{print $2}' | cut -d'%' -f1

echo "Memory Usage:"
free -h | grep "Mem:"

echo "Disk Usage:"
df -h /home/minecraft/minecraft-server

echo "Active Players:"
if screen -list | grep -q "minecraft"; then
    screen -S minecraft -X stuff "list\n"
    sleep 1
    tail -n 2 /home/minecraft/minecraft-server/logs/latest.log | grep "players online"
else
    echo "Server is not running"
fi

Автоматические бэкапы

Создаём скрипт для автоматического бэкапа:

nano ~/backup.sh
#!/bin/bash

BACKUP_DIR="/home/minecraft/backups"
WORLD_DIR="/home/minecraft/minecraft-server/world"
TIMESTAMP=$(date +%Y%m%d_%H%M%S)

mkdir -p $BACKUP_DIR

# Отключаем автосохранение
screen -S minecraft -X stuff "save-off\n"
screen -S minecraft -X stuff "save-all\n"
sleep 5

# Создаём бэкап
tar -czf "$BACKUP_DIR/world_backup_$TIMESTAMP.tar.gz" -C "/home/minecraft/minecraft-server" world/

# Включаем автосохранение
screen -S minecraft -X stuff "save-on\n"

# Удаляем старые бэкапы (старше 7 дней)
find $BACKUP_DIR -name "world_backup_*.tar.gz" -mtime +7 -delete

echo "Backup created: world_backup_$TIMESTAMP.tar.gz"

Добавляем в crontab:

crontab -e
0 */6 * * * /home/minecraft/backup.sh

Альтернативные серверы и дистрибутивы

Ванильный сервер — не единственный вариант. Вот сравнение популярных решений:

Сервер Особенности Производительность Плагины
Vanilla Официальный, стабильный Базовая Нет
Paper Оптимизированный, много настроек Высокая Bukkit/Spigot
Fabric Модульный, быстрые обновления Высокая Fabric моды
Forge Много модов, сложная настройка Средняя Forge моды

Установка Paper сервера

Paper — отличная альтернатива для продакшена:

cd ~/minecraft-server
wget https://api.papermc.io/v2/projects/paper/versions/1.20.4/builds/497/downloads/paper-1.20.4-497.jar
mv paper-1.20.4-497.jar paper.jar

Меняем в start.sh:

java -Xmx2G -Xms1G -jar paper.jar nogui

Интеграция с другими инструментами

Интеграция с Discord

Можно настроить бота для уведомлений о статусе сервера:

pip3 install discord.py mcstatus

Веб-панель управления

Pterodactyl Panel — удобное решение для управления игровыми серверами через веб-интерфейс. Позволяет создавать пользователей, управлять файлами, смотреть логи и контролировать ресурсы.

Интеграция с Prometheus

Для мониторинга можно использовать minecraft-exporter:

docker run -d -p 9150:9150 --name minecraft-exporter \
  -e MINECRAFT_SERVER_HOST=localhost \
  -e MINECRAFT_SERVER_PORT=25565 \
  itzg/minecraft-exporter

Производительность и оптимизация

JVM флаги для оптимизации

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

java -Xmx4G -Xms4G \
  -XX:+UseG1GC \
  -XX:+ParallelRefProcEnabled \
  -XX:MaxGCPauseMillis=200 \
  -XX:+UnlockExperimentalVMOptions \
  -XX:+DisableExplicitGC \
  -XX:+AlwaysPreTouch \
  -XX:G1NewSizePercent=30 \
  -XX:G1MaxNewSizePercent=40 \
  -XX:G1HeapRegionSize=8M \
  -XX:G1ReservePercent=20 \
  -XX:G1HeapWastePercent=5 \
  -XX:G1MixedGCCountTarget=4 \
  -XX:InitiatingHeapOccupancyPercent=15 \
  -XX:G1MixedGCLiveThresholdPercent=90 \
  -XX:G1RSetUpdatingPauseTimePercent=5 \
  -XX:SurvivorRatio=32 \
  -XX:+PerfDisableSharedMem \
  -XX:MaxTenuringThreshold=1 \
  -jar server.jar nogui

Настройки server.properties для производительности

view-distance=8
simulation-distance=6
entity-activation-range=32
max-tick-time=60000
network-compression-threshold=256

Troubleshooting: частые проблемы и решения

Проблемы с памятью

Проблема: OutOfMemoryError
Решение: Увеличить выделенную память или оптимизировать настройки сервера.

Проблемы с подключением

Проблема: Can’t connect to server
Решение: Проверить файрвол, порты, и настройки server.properties.

sudo netstat -tlnp | grep :25565
sudo ufw status

Проблемы с производительностью

Проблема: Лаги и фризы
Решение: Оптимизировать JVM флаги, уменьшить view-distance, использовать Paper.

Автоматизация через скрипты

Скрипт для автоматического обновления

#!/bin/bash

SERVER_DIR="/home/minecraft/minecraft-server"
BACKUP_DIR="/home/minecraft/backups"
TIMESTAMP=$(date +%Y%m%d_%H%M%S)

# Создаём бэкап
echo "Creating backup..."
cd $SERVER_DIR
tar -czf "$BACKUP_DIR/pre_update_backup_$TIMESTAMP.tar.gz" .

# Останавливаем сервер
echo "Stopping server..."
screen -S minecraft -X stuff "stop\n"
sleep 10

# Скачиваем новую версию
echo "Downloading new version..."
wget -O server.jar.new https://piston-data.mojang.com/v1/objects/59353fb40c36d304f2035d51e7d6e6baa98dc05c/server.jar

# Заменяем старую версию
mv server.jar server.jar.old
mv server.jar.new server.jar

# Запускаем сервер
echo "Starting server..."
screen -dmS minecraft ./start.sh

echo "Update completed!"

Интересные факты и нестандартные применения

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

  • Образование: Создание интерактивных уроков истории, математики, программирования
  • Архитектура: Проектирование зданий и городов в масштабе
  • Тестирование: Создание стресс-тестов для серверной инфраструктуры
  • Визуализация данных: Представление сложных данных в 3D-формате

Например, можно создать скрипт, который читает данные из базы данных и строит графики прямо в игровом мире:

#!/bin/bash
# Скрипт для создания статистики игроков
echo "tellraw @a [{\"text\":\"Онлайн игроков: \",\"color\":\"green\"},{\"text\":\"$(screen -S minecraft -X stuff 'list\n' && sleep 1 && tail -n 1 logs/latest.log | grep -o '[0-9]\+' | head -1)\",\"color\":\"yellow\"}]" | screen -S minecraft -X stuff

Статистика и мониторинг

Для серьёзного мониторинга можно использовать ELK Stack или Grafana. Minecraft генерирует достаточно логов для анализа:

  • Время входа/выхода игроков
  • Использование ресурсов сервера
  • Частота событий в игре
  • Производительность различных регионов мира

Простой скрипт для сбора базовой статистики:

#!/bin/bash
LOG_FILE="/home/minecraft/minecraft-server/logs/latest.log"
STATS_FILE="/home/minecraft/server_stats.json"

JOINS=$(grep -c "joined the game" $LOG_FILE)
LEAVES=$(grep -c "left the game" $LOG_FILE)
CURRENT_PLAYERS=$(screen -S minecraft -X stuff "list\n" && sleep 1 && tail -n 1 $LOG_FILE | grep -o '[0-9]\+' | head -1)

echo "{\"timestamp\":\"$(date -Iseconds)\",\"joins\":$JOINS,\"leaves\":$LEAVES,\"current_players\":$CURRENT_PLAYERS}" >> $STATS_FILE

Выводы и рекомендации

Создание собственного Minecraft сервера на Ubuntu 24 — отличный способ получить полный контроль над игровым процессом и изучить принципы работы серверных приложений. Основные рекомендации:

  • Для экспериментов: Начинайте с VPS с 2-4 ГБ RAM
  • Для продакшена: Используйте выделенный сервер с быстрым SSD
  • Безопасность: Всегда используйте whitelist и файрвол
  • Мониторинг: Настройте автоматические бэкапы и мониторинг ресурсов
  • Производительность: Рассмотрите Paper вместо ванильного сервера

Автоматизация управления сервером через скрипты и systemd сервисы существенно упрощает администрирование и позволяет сосредоточиться на игровом процессе, а не на технических проблемах. Грамотно настроенный сервер может работать месяцами без вмешательства администратора.

Помните: Minecraft сервер — это не только развлечение, но и отличная платформа для изучения системного администрирования, сетевых технологий и автоматизации. Экспериментируйте, изучайте логи, оптимизируйте производительность — и получайте удовольствие от процесса!


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

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

Leave a reply

Your email address will not be published. Required fields are marked