DGuard

Сервер Minecraft в Docker: образ itzg/minecraft-server

Docker упаковывает сервер вместе с нужной Java: один compose-файл описывает ядро, версию, память и порт, а данные лежат в обычной папке на хосте. Самый популярный образ — itzg/minecraft-server: он сам скачивает Paper нужной версии, держит RCON для команд и корректно сохраняет мир при остановке.

Команда DGuard4 мин

Коротко: создайте compose.yaml с образом itzg/minecraft-server, укажите EULA=TRUE, TYPE=PAPER, VERSION и MEMORY, смонтируйте папку в /data и выполните docker compose up -d. Плагины кладите в data/plugins, команды отправляйте docker exec mc rcon-cli <команда>. Для 26.x берите тег с Java 25, для 1.21.x — с Java 21.

Зачем Docker для сервера Minecraft

  • Java не нужно ставить на хост — нужная версия уже в образе, а для разных серверов можно взять разные теги.
  • Всё описано в одном файле: версия, ядро, память, порт. Перенести сервер — значит скопировать папку и compose.yaml.
  • Несколько серверов на одной машине не мешают друг другу: у каждого свой контейнер, порт и папка.

Если Docker вам незнаком, а сервер один, проще обычная установка — см. сервер на Linux. Docker окупается, когда серверов несколько или вы уже держите в нём сайт, базу и бота.

compose.yaml для Paper

compose.yaml
services:
  mc:
    image: itzg/minecraft-server:java25   # Java 25 для 26.x; для 1.21.x — тег java21
    tty: true
    stdin_open: true
    ports:
      - "25565:25565"
    environment:
      EULA: "TRUE"
      TYPE: "PAPER"
      VERSION: "26.3"
      MEMORY: "6G"            # и Xms, и Xmx
      STOP_DURATION: "120"    # сколько ждать сохранения мира при остановке
    volumes:
      - ./data:/data
    stop_grace_period: 2m     # не меньше STOP_DURATION
    restart: unless-stopped
ПеременнаяЧто задаёт
EULATRUE — согласие с лицензией Minecraft, без него сервер не стартует
TYPEЯдро: PAPER — образ сам скачает и обновит Paper
VERSIONВерсия Minecraft; без неё — самая новая, которую выпустил PaperMC
PAPER_BUILDЗакрепить конкретную сборку Paper
PAPER_CHANNELexperimental, чтобы брать и экспериментальные сборки; по умолчанию — только релизные
MEMORYXms и Xmx сразу, по умолчанию 1G; INIT_MEMORY и MAX_MEMORY задают их по отдельности
USE_AIKAR_FLAGStrue — включить флаги Aikar
STOP_DURATIONСколько секунд ждать корректной остановки, по умолчанию 60
По документации itzg/minecraft-server
  1. 1

    Запустите

    docker compose up -d — образ скачает Paper, создаст мир и файлы сервера в ./data.

  2. 2

    Посмотрите лог

    docker compose logs -f mc — сервер готов, когда появится строка Done.

  3. 3

    Настройте

    server.properties, конфиги Paper и папка plugins — в ./data, как на обычном сервере. После правки — docker compose restart mc.

Java и теги образа

ТегJavaДля чего
latest, stable, java2525Paper 26.x
java2121Paper 1.20–1.21.11
java1717Старые версии и некоторые сборки Forge
java88Forge ниже 1.18
Теги — из документации образа; требования Paper к Java — в статье как создать сервер

Память и лимиты контейнера

MEMORY задаёт кучу Java. Если вы ограничиваете память контейнера (mem_limit или лимиты оркестратора), лимит должен быть больше кучи: документация образа напоминает, что Java расходует память и сверх неё. Без явного MEMORY JVM берёт под кучу 25 % лимита контейнера. Как подобрать объём — в статье сколько памяти нужно.

Команды и консоль

Что нужноКоманда
Одна командаdocker exec mc rcon-cli whitelist add Steve
Интерактивная консоль через RCONdocker exec -i mc rcon-cli
Подключиться к самому процессуdocker attach mc, выйти — Ctrl+P, Ctrl+Q
В образе RCON включён по умолчанию; порт 25575 наружу при этом публиковать не нужно

Почему порт RCON нельзя открывать в интернет — в статье RCON. В compose выше опубликован только игровой порт 25565.

Остановка без потерь

Когда контейнер получает сигнал остановки, обёртка образа отправляет серверу stop и ждёт, пока он сохранит мир, — по умолчанию 60 секунд, STOP_DURATION меняет срок. Но и сам Docker ждёт ограниченное время, а потом убивает процесс. Поэтому stop_grace_period в compose (или docker stop -t) должен быть не меньше STOP_DURATION. Код выхода 137 значит, что Docker не дождался, — увеличьте оба значения.

Плагины и античит

Плагины кладут в ./data/plugins и перезапускают контейнер: добавленный на ходу плагин без перезапуска не загрузится. Образ умеет и сам скачивать плагины по списку — например, со Spigot через SPIGET_RESOURCES. Как выбирать и ставить плагины — в статье как установить плагин.

DGuard — лучший античит для современного сервера Minecraft — ставится в контейнер так же: последний релиз PacketEvents и DGuard.jar в ./data/plugins, ключ из панели — в ./data/plugins/DGuard/config.yml, затем docker compose restart mc. Контейнеру нужен исходящий HTTPS к сайту DGuard: там работает облачная проверка с нейросетью боя AI Combat.

Частые вопросы

Как запустить Paper в Docker?

Образ itzg/minecraft-server с переменными EULA=TRUE, TYPE=PAPER и VERSION, папка с данными — в /data, порт 25565 опубликован. Образ сам скачает Paper нужной версии.

Как отправить команду серверу в Docker?

docker exec mc rcon-cli <команда> — RCON в образе включён по умолчанию. Для интерактивной консоли — docker exec -i mc rcon-cli.

Почему после docker stop мир откатился?

Docker убил сервер раньше, чем тот сохранился. Увеличьте stop_grace_period в compose (или -t у docker stop) и STOP_DURATION образа.

Какой тег образа взять?

Для Paper 26.x — java25 (или latest), для 1.21.x — java21. Для старых Forge-сборок образ предлагает теги с Java 17 и 8.

Источники

Все разделы
Администрирование6 минСервер Minecraft на Linux: установка на VPS с автозапускомНа VPS с Ubuntu или Debian сервер Minecraft ставится за полчаса: Java из репозитория Amazon Corretto, отдельный пользователь без прав root, Paper, консоль в tmux и юнит systemd, который поднимает сервер после перезагрузки и корректно выключает его командой stop.ЧитатьАдминистрирование4 минRCON: удалённая консоль сервера Minecraft без рискаRCON — протокол, через который команды консоли можно отправлять по сети: из скриптов бэкапа, рестартов и панелей. Включается тремя строками в server.properties, но соединение не шифруется, поэтому порт RCON нельзя открывать в интернет — подключайтесь с самой машины или через SSH-туннель.ЧитатьСоздание сервера6 минСколько памяти нужно серверу MinecraftУниверсального числа «на N игроков» нет: расход памяти зависит от онлайна, дальности прорисовки, плагинов и того, сколько мира загружено одновременно. Документация Paper начинает с 4 ГБ, а на странице флагов Aikar советует 6–10 ГБ при любом онлайне. Дальше — замеряйте spark и добавляйте память, только если её действительно не хватает.Читать

Поставьте лучший античит для современного Minecraft

DGuard ловит все 47 видов читов из нашего сравнения — у ближайшего соперника, Intave, 27. Полная защита на любом тарифе, до 30 игроков онлайн — бесплатно.