Minecraft Modpack Server
Хостинг модифицированных серверов Minecraft (CurseForge, Modrinth).
Метаданные навыка
| Источник | Опционально — установка: vibeos skills install official/gaming/minecraft-modpack-server |
| Путь | optional-skills/gaming/minecraft-modpack-server |
| Платформы | linux, macos |
Справочник: полный SKILL.md
Ниже приведено полное описание навыка, которое VibeOS загружает при его активации. Агент видит эти инструкции, когда навык активен.
Настройка сервера Minecraft Modpack
Когда использовать
- Пользователь хочет настроить модифицированный сервер Minecraft из zip-архива серверного мода
- Пользователю нужна помощь с конфигурацией сервера NeoForge/Forge
- Пользователь спрашивает о настройке производительности или резервном копировании сервера Minecraft
Сначала узнайте предпочтения пользователя
Перед началом настройки спросите пользователя:
- Название сервера / MOTD — что должно отображаться в списке серверов?
- Сид (Seed) — конкретный сид или случайный?
- Сложность — мирная / легкая / нормальная / сложная?
- Режим игры — выживание / творческий / приключение?
- Online mode — true (аутентификация Mojang, лицензионные аккаунты) или false (для LAN/пираток)?
- Количество игроков — сколько игроков ожидается? (влияет на настройку ОЗУ и дистанции обзора)
- Выделение ОЗУ — или позволить агенту решить на основе количества модов и доступной ОЗУ?
- Дистанция обзора / дистанция симуляции — или позволить агенту выбрать на основе количества игроков и железа?
- PvP — включено или выключено?
- Белый список (Whitelist) — открытый сервер или только по белому списку?
- Резервное копирование — нужны ли автоматические бэкапы? Как часто?
Используйте разумные значения по умолчанию, если пользователю всё равно, но всегда спрашивайте перед генерацией конфига.
Шаги
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
# Или для обычных сборок Forge:
# java -jar forge-*-installer.jar --installServer
Это загружает библиотеки, патчит серверный jar и т.д.
4. Примите EULA
echo "eula=true" > ~/minecraft-server/server/eula.txt
5. Настройте server.properties
Ключевые настройки для модифицированных/LAN-серверов:
motd=\u00a7b\u00a7lНазвание сервера \u00a7r\u00a78| \u00a7aНазвание сборки
server-port=25565
online-mode=true # false для LAN без аутентификации Mojang
enforce-secure-profile=true # должно соответствовать online-mode
difficulty=hard # большинство сборок сбалансированы под сложный режим
allow-flight=true # ОБЯЗАТЕЛЬНО для модов (летающие маунты/предметы)
spawn-protection=0 # разрешить всем строить на спавне
max-tick-time=180000 # для модов нужно больше времени на тик
enable-command-block=true
Настройки производительности (в зависимости от железа):
# 2 игрока, мощная машина:
view-distance=16
simulation-distance=10
# 4-6 игроков, средняя машина:
view-distance=10
simulation-distance=6
# 8+ игроков или слабое железо:
view-distance=8
simulation-distance=4
6. Настройте аргументы JVM (user_jvm_args.txt)
Масштабируйте ОЗУ в зависимости от количества игроков и модов. Эмпирическое правило для модов:
- 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'
#!/bin/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'
#!/bin/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] Папка мира не найдена" && exit 0
TIMESTAMP=$(date +%Y-%m-%d_%H-%M-%S)
BACKUP_FILE="$BACKUP_DIR/world_${TIMESTAMP}.tar.gz"
echo "[BACKUP] Начало в $(date)"
tar -czf "$BACKUP_FILE" -C "$SERVER_DIR" world
SIZE=$(du -h "$BACKUP_FILE" | cut -f1)
echo "[BACKUP] Сохранено: $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] Удалено $REMOVE старых бэкапов"
fi
echo "[BACKUP] Завершено в $(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 сервера в мультиплеере