Docs/docs/services/lxc207-games/minecraft.md

11 KiB
Raw Blame History

Minecraft Server (Forge 1.20.1) — LXC 207

Контейнер: games (207)
Путь: /mnt/minecraft
Порты: 25565 (игра), 8080 (раздача модов через nginx)
Тип: Forge 1.20.1 + AutoModpack + Offline Mode


📋 Описание

Сервер Minecraft на базе Forge 1.20.1 с автоматической раздачей модов клиентам. Конфигурация включает серверную часть и вспомогательный контейнер nginx для HTTP-раздачи файлов модов (AutoModpack).

Особенности:

  • Пиратский доступ: ONLINE_MODE: "false" (вход без проверки лицензии).
  • Авто-установка модов: Клиенту достаточно установить AutoModpack, моды скачаются сами.
  • Разделение задач: Игровой сервер и веб-сервер (nginx) в одном docker-compose.
  • Оптимизация: Выделено 8 ГБ оперативной памяти, Java 17.

🗂️ Структура файлов

/mnt/minecraft/
├── docker-compose.yml      # Основной конфиг запуска
├── data/                   # Рабочая директория (синхронизируется с контейнером)
│   ├── world/              # Сохранение мира
│   ├── server.properties   # Настройки сервера
│   └── ...
├── mods/                   # Папка с модами (монтируется в контейнер)
│   └── *.jar               # Файлы модов
├── config/                 # Конфиги модов
│   └── automodpack.json    # Настройки раздачи модов
└── automodpack/            # Дополнительные данные AutoModpack
    └── automodpack.json

⚙️ Установка и настройка

Шаг 1: Создание структуры папок

mkdir -p /mnt/minecraft/{data,mods,config,automodpack}
chown -R 1000:1000 /mnt/minecraft

Шаг 2: Конфигурация Docker Compose

Создайте файл /mnt/minecraft/docker-compose.yml:

services:
  minecraft:
    image: itzg/minecraft-server:java17
    container_name: minecraft
    ports:
      - "25565:25565"
    environment:
      EULA: "TRUE"
      TYPE: FORGE
      VERSION: "1.20.1"
      MEMORY: "8G"
      ONLINE_MODE: "false"
      OVERRIDE_SERVER_PROPERTIES: "TRUE"
      SERVER_PASSWORD: ""
      RCON_PASSWORD: "rcon_secret_password"
      ENABLE_RCON: "true"
      DIFFICULTY: "easy"
      MAX_PLAYERS: "20"
      MOTD: "Welcome to Olimp Minecraft!"
      PORT: "25565"
      ALLOW_FLIGHT: "true"
      ENABLE_COMMAND_BLOCK: "true"
      TZ: "Asia/Yekaterinburg"
    volumes:
      - /mnt/minecraft//data
      - /mnt/minecraft/mods:/mods:ro
      - /mnt/minecraft/config:/config:ro
      - /mnt/minecraft/automodpack:/automodpack
    restart: unless-stopped
    logging:
      driver: "json-file"
      options:
        max-size: "10m"
        max-file: "3"

  modpack-server:
    image: nginx:alpine
    container_name: minecraft-mods
    ports:
      - "8080:80"
    volumes:
      - /mnt/minecraft/mods:/usr/share/nginx/html:ro
    restart: unless-stopped

Шаг 3: Настройка AutoModpack

Создайте файл /mnt/minecraft/config/automodpack.json:

{
  "port": 8080,
  "host": "0.0.0.0",
  "modsDirectory": "/mods",
  "allowDownload": true,
  "requireAuth": false,
  "logLevel": "info"
}

Шаг 4: Запуск сервера

cd /mnt/minecraft
docker compose up -d

Шаг 5: Проверка запуска

docker logs -f minecraft
Ожидаемый вывод успешного запуска:
[Server thread/INFO]: Done (XX.XXXs)! For help, type "help"
[AutoModpack]: Hosting modpack on Minecraft port

🧩 Моды

⚠️ Важно: Все моды должны быть для Forge 1.20.1.
Моды для Fabric/Quilt не совместимы и вызовут краш сервера.

Принцип работы

  1. Моды добавляются в папку /mnt/minecraft/mods/.
  2. Сервер перезапускается: docker restart minecraft.
  3. AutoModpack автоматически обновляет список доступных модов.
  4. Клиенты при подключении скачивают новые моды через порт 8080.

Шаблоны для описания (заполняется по мере добавления)

🎨 Графика и визуал

Моды, улучшающие графику, оптимизирующие рендеринг. ⚠️ Клиентские моды (Oculus, Rubidium, Sodium) не ставить на сервер!

[Шаблон для заполнения]
- Название мода: 
- Версия: 
- Ссылка: 
- Зависимости: 
- Примечание: 

🧱 Новые блоки и предметы

Моды, добавляющие контент: блоки, предметы, механизмы.

[Шаблон для заполнения]
- Название мода: 
- Версия: 
- Ссылка: 
- Зависимости: 
- Примечание: 

👹 Мобы и существа

Моды, добавляющие новых мобов, боссов, животных.

[Шаблон для заполнения]
- Название мода: 
- Версия: 
- Ссылка: 
- Зависимости: 
- Примечание: 

Оптимизация сервера

Моды, снижающие нагрузку на сервер: память, ЦП, диск.

[Шаблон для заполнения]
- Название мода: 
- Версия: 
- Ссылка: 
- Зависимости: 
- Примечание: 

Как добавить мод

# 1. Скачать мод (проверить: Forge 1.20.1)
wget -O modname.jar "ссылкааайл"

# 2. Проверить целостность (обязательно!)
file modname.jar
# Должно быть: "Java archive data" или "Zip archive data"

# 3. Переместить в папку модов
mv modname.jar /mnt/minecraft/mods/

# 4. Перезапустить сервер
docker restart minecraft

🎮 Подключение клиента

Требования к клиенту

  1. Minecraft 1.20.1
  2. Forge 1.20.1 (установить в лаунчере)
  3. AutoModpack (client)скачать с Modrinth

Настройка

  1. Установить Forge 1.20.1 и AutoModpack (client) в лаунчер.
  2. Создать файл config/automodpack.json в папке профиля клиента:
{
  "serverUrl": "http://<IP_СЕРВЕРА>:8080"
}

Замените <IP_СЕРВЕРА> на 192.168.1.207 (локально) или ваш внешний домен.

Подключение

  1. Запустить Minecraft.
  2. Multiplayer → Add Server.
  3. Адрес: 192.168.1.207:25565.
  4. При входе моды скачаются автоматически.

🔧 Полезные команды

Управление сервером

# Запуск / остановка
cd /mnt/minecraft
docker compose up -d
docker compose down

# Перезапуск (после добавления модов)
docker restart minecraft

# Просмотр логов
docker logs -f minecraft

Администрирование (RCON)

# Выдать права оператора (выполнить внутри контейнера)
docker exec -it minecraft rcon-cli op <имя_игрока>

# Другие команды
docker exec -it minecraft rcon-cli gamemode creative <имя_игрока>
docker exec -it minecraft rcon-cli whitelist on
docker exec -it minecraft rcon-cli stop

Работа с модами

# Список файлов в папке
ls -lh /mnt/minecraft/mods/

# Удаление мода
rm /mnt/minecraft/mods/<название>.jar
docker restart minecraft

🚨 Решение проблем

Ошибка "Invalid Session" (Недействительная сессия)

Причина: Сервер требует лицензию, а клиент не прошел проверку (пиратка). Решение:

  1. Убедитесь, что в docker-compose.yml указано: ONLINE_MODE: "false".
  2. Перезапустите контейнеры:
cd /mnt/minecraft
docker compose down
docker compose up -d

Краш при запуске: java.util.zip.ZipException: zip END header not found

Причина: Один из файлов .jar в папке /mnt/minecraft/mods/ поврежден или скачан не полностью (например, скачалась HTML страница вместо мода). Решение:

  1. Найти битый файл командой проверки целостности.
  2. Удалить его.
  3. Очистить кэш внутри контейнера и перезапуститься.
# Проверка всех модов на целостность
for f in *.jar; do
  if unzip -t "$f" &>/dev/null; then
    echo "✅ $f"
  else
    echo "❌ ПОВРЕЖДЁН: $f"
    ls -lh "$f"
  fi
done

# Очистка и перезапуск
rm -rf /mnt/minecraft/data/mods/*
docker restart minecraft

Клиент не скачивает моды

  1. Проверьте доступность порта 8080 с клиента:
telnet 192.168.1.207 8080
  1. Убедитесь, что modpack-server (nginx) запущен:
docker ps | grep minecraft-mods
  1. Проверьте конфиг automodpack.json на клиенте (указан правильный IP).

🔐 Безопасность

Настройки для пиратского сервера

Так как ONLINE_MODE: "false", любой может зайти под любым ником. Рекомендуется:

  1. Пароль на сервер: Укажите SERVER_PASSWORD в docker-compose.yml.
  2. Белый список (Whitelist):
    • Включите в настройках или через RCON: whitelist on.
    • Добавляйте игроков: whitelist add <ник>.
# Включить вайтлист через RCON
docker exec -it minecraft rcon-cli whitelist on
docker exec -it minecraft rcon-cli whitelist add zailon

Резервное копирование

# Копирование мира
tar -czf /backup/minecraft_world_$(date +%F).tar.gz /mnt/minecraft/data/world/

🔄 Обновление

Обновление модов

  1. Скачать новую версию .jar.
  2. Заменить старый файл в /mnt/minecraft/mods/.
  3. Перезапустить сервер.

Обновление ядра Forge

Обновляется автоматически при изменении переменной VERSION или FORGEVERSION в docker-compose.yml и перезапуске контейнера.