Перейти к содержимому
Главная страница » Установка и запуск Minecraft в Docker

Установка и запуск Minecraft в Docker

В этом посте будет показано, как настроить свой собственный игровой сервер minecraft в docker с помощью docker-compose на виртуальный VPS/VDS сервер.

Требования

Поскольку мы будем запускать minecraft как контейнер docker, нам потребуются docker и docker-compose. Вы можете перейти по ссылкам на их веб-сайт, чтобы получить инструкции по его установке.

Вкратце, для установки docker потребуется следующее:

curl https://get.docker.com | bash
sudo usermod -aG docker $USER

И следующие действия для установки docker-compose:

sudo curl -L "https://github.com/docker/compose/releases/download/1.28.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

Обратите внимание, что я установил версию 1.28.5, в будущем она может устареть, поэтому я рекомендую получать последнюю версию с их веб-сайта.

Вы можете проверить, были ли установлены docker и docker-compose, выполнив:

docker --version
docker-compose --version

Конфигурация

Создайте каталог проекта:

mkdir -p ~/mincraft

Перейдите в каталог:

cd ~/minecraft

Создайте docker-compose.yml файл и откройте его с помощью выбранного вами редактора, затем предоставьте это содержимое:

version: "3.8"

services:
  minecraft-server:
    image: itzg/minecraft-server:latest
    container_name: minecraft-server
    ports:
      - 25565:25565
    environment:
      SERVER_NAME: "Dockerized-Minecraft-Server"
      MOTD: "Forge Minecraft Server"
      EULA: "TRUE"
      TYPE: "FORGE"
      VERSION: "1.17.1"
      MODE: "survival"
      MEMORY: "1G"
      LEVEL_TYPE: "DEFAULT"
      ENABLE_RCON: "true"
      RCON_PASSWORD: password
      RCON_PORT: 28016
      SERVER_PORT: 25565
      ENABLE_WHITELIST: "true"
      WHITELIST: "${WHITELISTED_PLAYERS}"
      OPS: "${OPS_PLAYERS}"
      MAX_PLAYERS: 20
      ANNOUNCE_PLAYER_ACHIEVEMENTS: "true"
      SPAWN_ANIMALS: "true"
      SPAWN_MONSTERS: "true"
      PVP: "true"
      LEVEL: "cold"
      TZ: "Africa/Johannesburg"
      GUI: "FALSE"
      MODS_FILE: /extras/mods.txt
      REMOVE_OLD_MODS: "true"
    restart: unless-stopped
    user: "${UID}:${GID}"
    volumes:
      - ./data:/data
      - ./mods.txt:/extras/mods.txt:ro
    logging:
      driver: "json-file"
      options:
        max-size: "1m"

Мы хотим, чтобы пользователь, создающий каталог данных, был тем же пользователем, которого используем мы, чтобы избежать проблем с разрешениями, поэтому нам нужно создать .env файл и установить для UID и GID значений userid и groupid нашего пользователя:

echo UID=$(id -u) > .env
echo GID=$(id -g) >> .env

Ваш, скорее всего, будет отличаться, но мой выглядит так:

cat .env
UID=501
GID=20

Далее нам нужно настроить белый список и игроков ops в WHITELISTED_PLAYERS и OPS_PLAYERS, чтобы конечный результат выглядел примерно так:

UID=501
GID=20
WHITELISTED_PLAYERS=mygamertag,player2,player3
OPS_PLAYERS=mygamertag

Если вам не нужны моды, вы можете удалить запись MODS_FILE и REMOVE_OLD_MODS, но в этом случае я буду устанавливать мод Fast Leaf Decay из curseforge.com.

Создайте файл ~/minecraft/mods.txt и добавьте jar, который вы хотите добавить в файл, в качестве примера:

https://media.forgecdn.net/files/3399/353/FastLeafDecay-26.jar

Запустите сервер Minecraft

Как только это будет установлено, запустите сервер minecraft:

docker-compose up -d

Пока сервер загружается, вы можете следить за логами:

docker-compose logs -f minecraft-server
...
minecraft-server      | [20:18:55] [modloading-worker-1/INFO]: Forge mod loading, version 37.0.103, for MC 1.17.1 with MCP 20210706.113038
minecraft-server      | [20:18:55] [modloading-worker-1/INFO]: MinecraftForge v37.0.103 Initialized
minecraft-server      | [20:19:00] [main/INFO]: Reloading ResourceManager: Default, forge-1.17.1-37.0.103-universal.jar, FastLeafDecay-26.jar
minecraft-server      | [20:19:06] [Server thread/INFO]: Starting Minecraft server on *:25565
minecraft-server      | [20:19:10] [Server thread/INFO]: Preparing level "cold"
minecraft-server      | [20:19:12] [Worker-Main-2/INFO]: Preparing spawn area: 0%
minecraft-server      | [20:19:18] [Worker-Main-2/INFO]: Preparing spawn area: 9%
minecraft-server      | [20:19:19] [Worker-Main-2/INFO]: Preparing spawn area: 23%
minecraft-server      | [20:19:20] [Server thread/INFO]: Time elapsed: 9527 ms
minecraft-server      | [20:19:20] [Server thread/INFO]: Done (9.928s)! For help, type "help"
minecraft-server      | [20:19:20] [Server thread/INFO]: Starting remote control listener
minecraft-server      | [20:19:20] [Server thread/INFO]: Thread RCON Listener started
minecraft-server      | [20:19:20] [Server thread/INFO]: RCON running on 0.0.0.0:28016
minecraft-server      | [20:19:20] [RCON Listener #1/INFO]: Thread RCON Client /172.19.0.3 started

Как только сервер загрузится, мы можем проверить это с помощью команды healthcheck:

docker exec -it minecraft-server mc-monitor status


localhost:25565 : version=1.17.1 online=0 max=20 motd='Forge Minecraft Server'

Командная строка Minecraft

Мы можем получить доступ к командной строке minecraft с помощью следующего:

docker-compose exec minecraft-server rcon-cli> 

Чтобы внести наших игроков в белый список:

> /whitelist list
There are 3 whitelisted players: x, x, x

Чтобы перезапустить сервер:

> /stop

Установить Minecraft

Установите minecraft java edition на свой ПК с:

После установки установите клиент forge:

Откройте minecraft, и вы должны увидеть forge в разделе наших установок:

Minecraft

Когда мы запустим нашу установку forge, вы должны увидеть что-то вроде этого:

Minecraft

Затем в разделе многопользовательской игры вы должны увидеть серверы ниже:

Minecraft

Скорее всего, по умолчанию у вас не будет серверов, поэтому добавьте свой сервер, вам понадобится IP-адрес того места, где запущен minecraft:

Minecraft

Сохраните его и присоединяйтесь к своему серверу, и вы должны быть подключены к своему серверу.

Примечание о модах Forge

Для правильной работы модов

Создайте скрипт резервного копирования в /opt/scripts/backup_minecraft.sh со следующим содержимым:

#!/usr/bin/env bash
tar -zcvf /opt/backups/minecraft/backup-$(date +%F).tar.gz ~/minecraft
find /opt/backups/minecraft/ -type f -name "backup-*.tar.gz" -mtime +7 -exec rm {} \;

Этот скрипт сожмет каталог проекта minecraft в архив и удалит все резервные копии старше 7 дней, которые мы запустим в cronjob.

Измените разрешения нашего скрипта резервного копирования, чтобы сделать его исполняемым:

chmod +x /opt/scripts/backup_minecraft.sh

Откройте crontab с помощью crontab -e и добавляйте выражение cron в резервную копию ежедневно в 00:00:

00 00 * * * /opt/scripts/backup_minecraft.sh

Руководство по началу работы

Это хороший туториал, на который я наткнулся для начала работы:

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *