Свой сервер
Файл запуска сервера
Серверный jar не запускается двойным щелчком — рядом с ним нужен файл запуска. Соберите его здесь: память, флаги и подсказка, какая нужна Java.
start.sh
#!/bin/sh
java -Xms3G -Xmx3G -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 -Dusing.aikars.flags=https://mcflags.emc.gs -Daikars.new.flags=true -jar server.jar --nogui
- Нужна Java
- 25 или новее
- Памяти серверу
- 3 ГБ
- Свободной памяти на машине
- от 5 ГБ
Положите рядом с jar, разрешите запуск — chmod +x start.sh — и запустите: ./start.sh
Запускаете через панель или systemd?
Одной строкой
Panel (Pterodactyl, Pufferpanel) запускает сервер сам и просит команду, а не файл: обёртку с циклом он не примет — перезапуск это его работа. Та же строка годится для screen и tmux.
java -Xms3G -Xmx3G -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 -Dusing.aikars.flags=https://mcflags.emc.gs -Daikars.new.flags=true -jar server.jar --nogui
Юнит systemd
Сервер, поднятый из screen, умирает вместе с перезагрузкой машины — и узнаёте вы об этом от игроков. Юнит поднимает его сам и перезапускает после падения.
[Unit]
Description=Minecraft server
After=network-online.target
Wants=network-online.target
[Service]
User=minecraft
WorkingDirectory=/opt/minecraft
ExecStart=java -Xms3G -Xmx3G -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 -Dusing.aikars.flags=https://mcflags.emc.gs -Daikars.new.flags=true -jar server.jar --nogui
Restart=on-failure
RestartSec=5
KillSignal=SIGINT
TimeoutStopSec=90
[Install]
WantedBy=multi-user.target
- Положите файл в
/etc/systemd/system/minecraft.serviceи поправьтеUserиWorkingDirectoryпод себя. sudo systemctl daemon-reloadsudo systemctl enable --now minecraft— запустит и включит автозапуск.- Консоль сервера дальше читают через
journalctl -u minecraft -f, а команды шлют по RCON: свой ввод у юнита забрать негде.
Что дальше
- Положите файл рядом с jar — в ту же папку, а не в соседнюю. Все пути в команде относительные, и запущенный из другого места сервер создаст мир там, откуда его позвали.
- Первый запуск закончится через секунду — сервер создаст eula.txt и остановится. Откройте файл, поменяйте eula=false на eula=true и запустите снова.
- UnsupportedClassVersionError при запуске — это не про сервер, а про Java. Стоит слишком старая: для вашей версии игры нужна Java 25 или новее. Проверить, какая стоит: java -version.
- Окно закрылось мгновенно и ничего не показало — значит сервер упал на старте. В start.bat для этого и стоит pause в конце: он оставляет окно открытым вместе с текстом ошибки.
Про память и флаги
- -Xms равен -Xmx намеренно. Так советует Aikar: куча сразу берётся целиком и не растёт по ходу игры, а память, отданная серверу, всё равно принадлежит только ему. Разные значения дают паузы там, где куча расширяется.
- Не отдавайте серверу всю память машины. Документация Paper советует оставить системе и самой JVM 1000–1500 МБ: «есть 8 ГБ — ставьте 6500 МБ, для запаса». Отсюда и строка «свободной памяти на машине» выше.
- Больше — не значит лучше. Paper пишет, что серверу с плагинами стоит дать 6–10 ГБ независимо от числа игроков, а 32 ГБ — это уже впустую потраченные деньги. Pufferfish советует никогда не давать одному серверу больше 16 ГБ.
- Набор флагов для большой кучи включается сам, начиная с 12 ГБ и выше. Отдельной кнопки у него нет намеренно: Aikar пишет «при 12 ГБ и меньше эти параметры менять не нужно», а кнопка позволила бы поставить их на четырёх — и стало бы хуже, чем без флагов вовсе.
- Без флагов — тоже вариант, и его советует сама PaperMC: на Java 17 и новее стоит сначала попробовать запуск без единого флага, а к набору Aikar идти, если начнутся лаги от сборщика мусора.
Флаги сверены с публикацией Aikar и документацией PaperMC и Velocity. Требования к Java — с Minecraft Wiki и docs.papermc.io.
Частые вопросы
Почему сервер Minecraft не запускается двойным щелчком?
Серверный jar так не запускается: нужен файл запуска, который вызывает Java с нужными аргументами. Это первое, что заводят — ещё до eula.txt.
Почему окно консоли закрывается сразу?
Сервер упал на старте, а окно закрылось вместе с ним, не показав ошибки. В .bat помогает pause в конце — он оставит сообщение на экране.
Сколько оперативной памяти выделить серверу?
Не всю, что есть на машине: системе надо оставить около гигабайта. PaperMC советует серверу с плагинами 6–10 ГБ независимо от числа игроков и называет 32 ГБ потраченными зря.
