Подробный гайд: Установка и настройка сервера Minecraft на Alt Linux
Системные требования
| Компонент | Минимум | Рекомендация |
|---|---|---|
| CPU | 2 ядра | 4+ ядра (высокая однопоточная производительность) |
| ОЗУ | 2 ГБ | 4–8 ГБ (зависит от модов/плагинов и числа игроков) |
| Диск | 10 ГБ | SSD, 20+ ГБ (мир растёт быстро) |
| ОС | Alt Linux 10/11 (Server/Workstation) | Последнее стабильное обновление |
| Java | 21 | OpenJDK 21 (требуется для Minecraft 1.20.5+) |
Важно:
- Начиная с версии 1.20.5 Mojang официально требует Java 21. Более старые версии не поддерживаются.
Шаг 1. Обновление системы и установка Java
Alt Linux использует apt-get (обёртку над RPM).
Обновите репозитории и установите headless-версию OpenJDK:
sudo apt-get update
sudo apt-get upgrade -y
sudo apt-get install java-21-openjdk-headless wget curl -y
Проверьте версию:
java -version
# Ожидаемый вывод: openjdk version "21.0.x" ...
Если пакет не найден, убедитесь, что подключён репозиторий p10 или sisyphus: sudo apt-get install alt-repo-setup (обычно уже настроен в стандартных сборках).
Шаг 2. Создание выделенного пользователя
Никогда не запускайте сервер от root.
Создайте системного пользователя:
sudo useradd -m -s /bin/bash -U minecraft
sudo passwd minecraft # задайте пароль или оставьте заблокированным, если вход по SSH-ключам
Переключитесь на него:
su - minecraft
Шаг 3. Загрузка ядра сервера
Создайте рабочую директорию и загрузите официальный server.jar:
mkdir ~/minecraft-server && cd ~/minecraft-server
Скачайте актуальную версию с официального сайта:
# 1. Откройте https://www.minecraft.net/ru-ru/download/server
# 2. Скопируйте прямую ссылку на server.jar
# 3. Вставьте в команду ниже:
wget -O server.jar "https://piston-data.mojang.com/v1/objects/.../server.jar"
Альтернатива:
- Для стабильности и производительности рекомендуется PaperMC или Fabric. Скачайте их paperclip.jar / fabric-server-launch.jar с официальных сайтов по аналогичной схеме.
Шаг 4. Первый запуск и принятие EULA
java -Xmx2G -Xms2G -jar server.jar nogui
Сервер завершится с ошибкой "You need to agree to the EULA".
Примите лицензию:
sed -i 's/eula=false/eula=true/' eula.txt
Шаг 5. Базовая настройка server.properties
Отредактируйте файл:
nano server.properties
Ключевые параметры:
# Сетевые
server-port=25565
online-mode=true # Оставьте true для безопасности
white-list=false # Включите true + используйте /whitelist add для приватных серверов
# Мир и геймплей
difficulty=normal
max-players=20
view-distance=8 # 6-10 оптимально для производительности
simulation-distance=6 # Снижает нагрузку на CPU
motd=A Minecraft Server on Alt Linux
# Производительность
max-tick-time=60000 # 60 сек, предотвращает краши при лагах
network-compression-threshold=256
Сохраните (Ctrl+O, Enter, Ctrl+X).
Шаг 6. Создание systemd-сервиса
Вернитесь в root (exit) и создайте unit-файл:
sudo nano /etc/systemd/system/minecraft.service
Вставьте:
[Unit]
Description=Minecraft Server
After=network.target
[Service]
Type=simple
User=minecraft
Group=minecraft
WorkingDirectory=/home/minecraft/minecraft-server
ExecStart=/usr/bin/java -Xmx4G -Xms4G -jar server.jar nogui
Restart=on-failure
RestartSec=10
SuccessExitStatus=0 1
Environment=LANG=en_US.UTF-8
[Install]
WantedBy=multi-user.target
Активируйте и запустите:
sudo systemctl daemon-reload
sudo systemctl enable --now minecraft
sudo systemctl status minecraft
Управление: sudo systemctl start|stop|restart minecraft
Шаг 7. Настройка брандмауэра
Alt Linux Server обычно использует firewalld.
Разрешите порт 25565:
sudo systemctl enable --now firewalld
sudo firewall-cmd --permanent --add-port=25565/tcp
sudo firewall-cmd --reload
Если в вашей сборке используется iptables:
sudo iptables -A INPUT -p tcp --dport 25565 -j ACCEPT
sudo iptables-save | sudo tee /etc/sysconfig/iptables
sudo systemctl restart iptables
Проверьте открытость порта (с другой машины или через nmap):
nmap -p 25565 ваш_внешний_IP
Шаг 8. Оптимизация JVM и безопасность
Рекомендуемые флаги Java 21 (Aikar's Flags)
Замените ExecStart в сервисе на:
ExecStart=/usr/bin/java -Xms4G -Xmx4G \
-XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 \
-XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC \
-XX:+AlwaysPreTouch -XX:G1HeapRegionSize=16M \
-Dlog4j2.formatMsgNoLookups=true \
-jar server.jar nogui
Подстройте -Xms и -Xmx под ваш объём ОЗУ. Разница между ними не должна превышать 1–2 ГБ для стабильности.
Безопасность
- online-mode=true — обязательно, если не используете лицензионный прокси (AuthMe/BungeeCord).
- Регулярно обновляйте ядро сервера и Java.
- Отключите RCON, если не используете: enable-rcon=false.
- Настройте whitelist для приватных серверов.
- Ограничьте доступ к серверу по IP через firewall-cmd --add-rich-rule или iptables -s.
Шаг 9. Резервное копирование и обслуживание
Создайте скрипт бэкапа:
sudo nano /usr/local/bin/mc-backup.sh
#!/bin/bash
BACKUP_DIR="/var/backups/minecraft"
DATE=$(date +%F_%H-%M)
mkdir -p "$BACKUP_DIR"
systemctl stop minecraft
tar -czf "$BACKUP_DIR/world_$DATE.tar.gz" -C /home/minecraft/minecraft-server world server.properties eula.txt
systemctl start minecraft
# Удаляем бэкапы старше 14 дней
find "$BACKUP_DIR" -name "world_*.tar.gz" -mtime +14 -delete
Сделайте исполняемым и добавьте в cron:
sudo chmod +x /usr/local/bin/mc-backup.sh
sudo crontab -e
# Добавьте строку (бэкап каждый день в 03:00):
0 3 * * * /usr/local/bin/mc-backup.sh >> /var/log/mc-backup.log 2>&1
Диагностика и частые ошибки
| Проблема | Решение |
|---|---|
| Failed to bind to port | Порт занят или нет прав. sudo ss -tulpn | grep 25565. Проверьте firewall-cmd/iptables. |
| OutOfMemoryError | Уменьшите -Xmx или увеличьте ОЗУ. Проверьте view-distance и количество игроков. |
| Сервис не стартует | journalctl -u minecraft -e --no-pager покажет точную ошибку. Часто: права на папку, отсутствие eula=true, битый server.jar. |
| Лаги, высокий TPS drop | Снизьте simulation-distance, отключите лишние плагины, проверьте диски (iostat), используйте PaperMC. |
| Игроки не подключаются | Проверьте внешний IP, проброс портов на роутере, online-mode, статус фаервола. |
Просмотр логов в реальном времени:
journalctl -u minecraft -f
# или через консоль сервера (если используется tmux/screen)
sudo -u minecraft tmux attach -t mc # при ручной консоли
Итоговый чек-лист
- [ ] Установлена Java 21 (headless)
- [ ] Сервер запущен от пользователя minecraft
- [ ] eula=true указан
- [ ] server.properties настроен под ваш проект
- [ ] systemd сервис активен и включён в автозагрузку
- [ ] Порт 25565 открыт в фаерволе
- [ ] JVM-флаги оптимизированы
- [ ] Настроен автоматический бэкап
- [ ] online-mode=true и/или whitelist активны
Если планируете устанавливать плагины (Paper/Spigot) или моды (Fabric/Forge), структура директорий и запуск не меняются, но потребуются дополнительные флаги JVM и совместимые версии библиотек.