Minecraft Modpack Server

Хостинг модифицированных серверов Minecraft (CurseForge, Modrinth).

Метаданные навыка

ИсточникОпциональный (устанавливается по запросу) — установите командой hermes skills install official/gaming/minecraft-modpack-server
Путьoptional-skills/gaming/minecraft-modpack-server
Версия1.0.0
АвторTeknium (teknium1), Hermes Agent
ЛицензияMIT
Платформыlinux, macos

Справочник: полный SKILL.md

инфо

Ниже приведено полное определение навыка, которое Hermes Agent загружает при его активации. Именно эти инструкции видит агент, когда навык задействован.

Настройка Minecraft Modpack Server

Когда использовать

  • Пользователь хочет поднять модифицированный сервер Minecraft из zip-архива серверного пака
  • Нужна помощь с настройкой сервера NeoForge/Forge
  • Вопросы об оптимизации производительности сервера Minecraft или настройке бэкапов

Сначала уточните предпочтения пользователя

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

  • Название сервера / MOTD — что должно отображаться в списке серверов?
  • Сид — конкретный сид или случайный?
  • Сложность — peaceful / easy / normal / hard?
  • Игровой режим — survival / creative / adventure?
  • Online mode — true (авторизация Mojang, лицензионные аккаунты) или false (подходит для LAN/пиратских клиентов)?
  • Количество игроков — сколько планируется одновременно? (влияет на выделение RAM и дальность прорисовки)
  • Объём RAM — задать вручную или агент рассчитает исходя из числа модов и доступной памяти?
  • View distance / simulation distance — задать вручную или агент подберёт по числу игроков и железу?
  • PvP — включить или выключить?
  • Вайтлист — открытый сервер или только по списку?
  • Бэкапы — нужны автоматические? Как часто?

Если пользователю всё равно — используйте разумные значения по умолчанию, но всегда уточняйте перед генерацией конфига.

Шаги

1. Скачать и изучить пак

mkdir -p ~/minecraft-server
cd ~/minecraft-server
wget -O serverpack.zip "<URL>"
unzip -o serverpack.zip -d server
ls server/

Ищите: startserver.sh, установочный jar (neoforge/forge), user_jvm_args.txt, папку mods/. По скрипту определите: тип загрузчика модов, версию и требуемую версию Java.

2. Установить Java

  • Minecraft 1.21+ → Java 21: sudo apt install openjdk-21-jre-headless
  • Minecraft 1.18–1.20 → Java 17: sudo apt install openjdk-17-jre-headless
  • Minecraft 1.16 и ниже → Java 8: sudo apt install openjdk-8-jre-headless
  • Проверка: java -version

3. Установить загрузчик модов

В большинстве серверных паков есть установочный скрипт. Переменная вида INSTALL_ONLY позволяет выполнить только установку, без запуска сервера:

cd ~/minecraft-server/server
ATM10_INSTALL_ONLY=true bash startserver.sh
# Or for generic Forge packs:
# java -jar forge-*-installer.jar --installServer

Скрипт скачает библиотеки, пропатчит серверный jar и т. д.

4. Принять EULA

echo "eula=true" > ~/minecraft-server/server/eula.txt

5. Настроить server.properties

Основные параметры для модпака/LAN:

motd=\u00a7b\u00a7lServer Name \u00a7r\u00a78| \u00a7aModpack Name
server-port=25565
online-mode=true          # false for LAN without Mojang auth
enforce-secure-profile=true  # match online-mode
difficulty=hard            # most modpacks balance around hard
allow-flight=true          # REQUIRED for modded (flying mounts/items)
spawn-protection=0         # let everyone build at spawn
max-tick-time=180000       # modded needs longer tick timeout
enable-command-block=true

Параметры производительности (подбираются под железо):

# 2 players, beefy machine:
view-distance=16
simulation-distance=10

# 4-6 players, moderate machine:
view-distance=10
simulation-distance=6

# 8+ players or weaker hardware:
view-distance=8
simulation-distance=4

6. Настроить JVM-аргументы (user_jvm_args.txt)

Объём RAM подбирается под количество игроков и модов. Ориентир для модпаков:

  • 100–200 модов: 6–12 ГБ
  • 200–350+ модов: 12–24 ГБ
  • Оставляйте не менее 8 ГБ свободными для ОС и других задач
-Xms12G
-Xmx24G
-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

7. Открыть порт в файрволе

sudo ufw allow 25565/tcp comment "Minecraft Server"

Проверка: sudo ufw status | grep 25565

8. Создать скрипт запуска

cat > ~/start-minecraft.sh << 'EOF'
#!/usr/bin/env bash
cd ~/minecraft-server/server
java @user_jvm_args.txt @libraries/net/neoforged/neoforge/<VERSION>/unix_args.txt nogui
EOF
chmod +x ~/start-minecraft.sh

Примечание: для Forge (не NeoForge) путь к файлу аргументов отличается — уточняйте в startserver.sh.

9. Настроить автоматические бэкапы

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

cat > ~/minecraft-server/backup.sh << 'SCRIPT'
#!/usr/bin/env bash
SERVER_DIR="$HOME/minecraft-server/server"
BACKUP_DIR="$HOME/minecraft-server/backups"
WORLD_DIR="$SERVER_DIR/world"
MAX_BACKUPS=24
mkdir -p "$BACKUP_DIR"
[ ! -d "$WORLD_DIR" ] && echo "[BACKUP] No world folder" && exit 0
TIMESTAMP=$(date +%Y-%m-%d_%H-%M-%S)
BACKUP_FILE="$BACKUP_DIR/world_${TIMESTAMP}.tar.gz"
echo "[BACKUP] Starting at $(date)"
tar -czf "$BACKUP_FILE" -C "$SERVER_DIR" world
SIZE=$(du -h "$BACKUP_FILE" | cut -f1)
echo "[BACKUP] Saved: $BACKUP_FILE ($SIZE)"
BACKUP_COUNT=$(ls -1t "$BACKUP_DIR"/world_*.tar.gz 2>/dev/null | wc -l)
if [ "$BACKUP_COUNT" -gt "$MAX_BACKUPS" ]; then
    REMOVE=$((BACKUP_COUNT - MAX_BACKUPS))
    ls -1t "$BACKUP_DIR"/world_*.tar.gz | tail -n "$REMOVE" | xargs rm -f
    echo "[BACKUP] Pruned $REMOVE old backup(s)"
fi
echo "[BACKUP] Done at $(date)"
SCRIPT
chmod +x ~/minecraft-server/backup.sh

Добавьте запуск каждый час через cron:

(crontab -l 2>/dev/null | grep -v "minecraft/backup.sh"; echo "0 * * * * $HOME/minecraft-server/backup.sh >> $HOME/minecraft-server/backups/backup.log 2>&1") | crontab -

Подводные камни

  • ВСЕГДА устанавливайте allow-flight=true для модпаков — иначе сервер будет кикать игроков с джетпаками и летающими маунтами
  • max-tick-time=180000 или выше — модпаки часто дают длинные тики при генерации мира
  • Первый запуск МЕДЛЕННЫЙ (несколько минут для больших паков) — это нормально
  • Предупреждения “Can’t keep up!” при первом запуске — норма, пройдут после начальной генерации чанков
  • Если online-mode=false, также выставляйте enforce-secure-profile=false, иначе клиенты получат отказ
  • Скрипт startserver.sh из пака нередко содержит цикл авторестарта — создайте отдельный скрипт запуска без него
  • Для перегенерации мира с новым сидом удалите папку world/
  • В некоторых паках есть переменные среды для управления поведением (например, ATM10 использует ATM10_JAVA, ATM10_RESTART, ATM10_INSTALL_ONLY)

Проверка

  • pgrep -fa neoforge или pgrep -fa minecraft — проверить, что процесс запущен
  • Логи: tail -f ~/minecraft-server/server/logs/latest.log
  • Строка “Done (Xs)!” в логе означает, что сервер готов к подключению
  • Тест соединения: игрок добавляет IP сервера в раздел Multiplayer
перевод и редактура:

обновлено

⌕ ESC