diff --git a/docs/services/lxc207-games/minecraft.md b/docs/services/lxc207-games/minecraft.md new file mode 100644 index 0000000..0e76efa --- /dev/null +++ b/docs/services/lxc207-games/minecraft.md @@ -0,0 +1,361 @@ +# 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. + +--- + +## 🗂️ Структура файлов + +```text +/mnt/minecraft/ +├── docker-compose.yml # Основной конфиг запуска +├── data/ # Рабочая директория (синхронизируется с контейнером) +│ ├── world/ # Сохранение мира +│ ├── server.properties # Настройки сервера +│ └── ... +├── mods/ # Папка с модами (монтируется в контейнер) +│ └── *.jar # Файлы модов +├── config/ # Конфиги модов +│ └── automodpack.json # Настройки раздачи модов +└── automodpack/ # Дополнительные данные AutoModpack + └── automodpack.json +``` +--- + +## ⚙️ Установка и настройка + +### Шаг 1: Создание структуры папок + +```bash +mkdir -p /mnt/minecraft/{data,mods,config,automodpack} +chown -R 1000:1000 /mnt/minecraft +``` +### Шаг 2: Конфигурация Docker Compose + +Создайте файл `/mnt/minecraft/docker-compose.yml`: + +```yaml +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`: + +```json +{ + "port": 8080, + "host": "0.0.0.0", + "modsDirectory": "/mods", + "allowDownload": true, + "requireAuth": false, + "logLevel": "info" +} +``` +### Шаг 4: Запуск сервера + +```bash +cd /mnt/minecraft +docker compose up -d +``` +### Шаг 5: Проверка запуска + +```bash +docker logs -f minecraft +``` +```text +Ожидаемый вывод успешного запуска: +[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) **не ставить на сервер**! + +```text +[Шаблон для заполнения] +- Название мода: +- Версия: +- Ссылка: +- Зависимости: +- Примечание: +``` +#### 🧱 Новые блоки и предметы +> *Моды, добавляющие контент: блоки, предметы, механизмы.* + +```text +[Шаблон для заполнения] +- Название мода: +- Версия: +- Ссылка: +- Зависимости: +- Примечание: +``` +#### 👹 Мобы и существа +> *Моды, добавляющие новых мобов, боссов, животных.* + +```text +[Шаблон для заполнения] +- Название мода: +- Версия: +- Ссылка: +- Зависимости: +- Примечание: +``` +#### ⚡ Оптимизация сервера +> *Моды, снижающие нагрузку на сервер: память, ЦП, диск.* + +```text +[Шаблон для заполнения] +- Название мода: +- Версия: +- Ссылка: +- Зависимости: +- Примечание: +``` +### Как добавить мод + +```bash +# 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](https://modrinth.com/mod/automodpack) + +### Настройка + +1. Установить Forge 1.20.1 и AutoModpack (client) в лаунчер. +2. Создать файл `config/automodpack.json` в папке профиля клиента: + +```json +{ + "serverUrl": "http://:8080" +} +``` +*Замените `` на `192.168.1.207` (локально) или ваш внешний домен.* + +### Подключение + +1. Запустить Minecraft. +2. Multiplayer → Add Server. +3. Адрес: `192.168.1.207:25565`. +4. При входе моды скачаются автоматически. + +--- + +## 🔧 Полезные команды + +### Управление сервером + +```bash +# Запуск / остановка +cd /mnt/minecraft +docker compose up -d +docker compose down + +# Перезапуск (после добавления модов) +docker restart minecraft + +# Просмотр логов +docker logs -f minecraft +``` +### Администрирование (RCON) + +```bash +# Выдать права оператора (выполнить внутри контейнера) +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 +``` +### Работа с модами + +```bash +# Список файлов в папке +ls -lh /mnt/minecraft/mods/ + +# Удаление мода +rm /mnt/minecraft/mods/<название>.jar +docker restart minecraft +``` +--- + +## 🚨 Решение проблем + +### Ошибка "Invalid Session" (Недействительная сессия) + +**Причина**: Сервер требует лицензию, а клиент не прошел проверку (пиратка). +**Решение**: +1. Убедитесь, что в `docker-compose.yml` указано: `ONLINE_MODE: "false"`. +2. Перезапустите контейнеры: + +```bash +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. Очистить кэш внутри контейнера и перезапуститься. + +```bash +# Проверка всех модов на целостность +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 с клиента: + +```bash +telnet 192.168.1.207 8080 +``` +2. Убедитесь, что `modpack-server` (nginx) запущен: + +```bash +docker ps | grep minecraft-mods +``` +3. Проверьте конфиг `automodpack.json` на клиенте (указан правильный IP). + +--- + +## 🔐 Безопасность + +### Настройки для пиратского сервера + +Так как `ONLINE_MODE: "false"`, любой может зайти под любым ником. Рекомендуется: + +1. **Пароль на сервер**: Укажите `SERVER_PASSWORD` в `docker-compose.yml`. +2. **Белый список (Whitelist)**: + - Включите в настройках или через RCON: `whitelist on`. + - Добавляйте игроков: `whitelist add <ник>`. + +```bash +# Включить вайтлист через RCON +docker exec -it minecraft rcon-cli whitelist on +docker exec -it minecraft rcon-cli whitelist add zailon +``` +### Резервное копирование + +```bash +# Копирование мира +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` и перезапуске контейнера.