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

436 lines
21 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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
- /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.
#### ⚡ Оптимизация сервера
> *Моды, оптимизирующие сервер, снижающие потребление ОЗУ и нагрузку на ЦП.*
| Мод | Версия | Ссылка | Зависимости | Примечание |
|-----|--------|--------|-------------|------------|
| **FerriteCore** | 6.0.1 | [Modrinth](https://modrinth.com/mod/ferritecore) | Нет | Значительно снижает потребление оперативной памяти (до 50%). Обязателен для сборок с большим количеством модов. |
| **ModernFix** | 5.27.8 | [Modrinth](https://modrinth.com/mod/modernfix) | Нет | Комплексная оптимизация: ускоряет запуск, снижает нагрузку на диск и ЦП, исправляет утечки памяти. Конфиг генерируется автоматически. |
| **AI Improvements** | 0.5.2 | [CurseForge](https://www.curseforge.com/minecraft/mc-mods/ai-improvements) | Нет | Оптимизирует логику поведения мобов (путь, поиск цели), снижая нагрузку на сервер при большом количестве сущностей. |
| **Spark** | 1.10.53 | [Modrinth](https://modrinth.com/mod/spark) | Нет | Профайлер для диагностики лагов. Позволяет анализировать нагрузку на ЦП, память и тик-тайм через команды `/spark`. |
---
#### 🧱 Новые блоки и предметы
> *Моды, добавляющие контент: блоки, предметы, механизмы, улучшения ванили.*
| Мод | Версия | Ссылка | Зависимости | Примечание |
|-----|--------|--------|-------------|------------|
| **Create** | 6.0.8 | [Modrinth](https://modrinth.com/mod/create) | Встроенные (Flywheel) | Глобальный мод на механизмы, конвейеры, поезда и декор. Требует много ресурсов при активной работе механизмов. |
| **Supplementaries** | 3.1.43 | [Modrinth](https://modrinth.com/mod/supplementaries) | Moonlight Lib | Добавляет уютные декоративные блоки, функциональные предметы (доски, глобусы, клетки) и мелкие улучшения геймплея. |
| **Farmer's Delight** | 1.2.11 | [Modrinth](https://modrinth.com/mod/farmers-delight) | Нет | Расширенная система фермерства, готовки и еды. Добавляет новые культуры, кухонные блоки и рецепты. |
| **Amendments** | 2.2.5 | [Modrinth](https://modrinth.com/mod/amendments) | Moonlight Lib | Визуальные и механические улучшения ванильных блоков (лестницы, заборы, кровати, таблички). Делает мир более детализированным. |
---
#### 🗺️ Генерация мира и структуры
> *Моды, изменяющие ландшафт или добавляющие новые постройки.*
| Мод | Версия | Ссылка | Зависимости | Примечание |
|-----|--------|--------|-------------|------------|
| **Tectonic** | 3.0.17 | [Modrinth](https://modrinth.com/mod/tectonic) | Lithostitched | Полная переработка генерации ландшафта: более реалистичные горы, долины, плавные переходы биомов. |
| **When Dungeons Arise** | 2.1.58 | [Modrinth](https://modrinth.com/mod/when-dungeons-arise) | Нет | Добавляет масштабные и сложные данжи с уникальным лутом. Включает наземные и подводные структуры (Seven Seas). |
| **YUNG's Better [Structures]** | 3.0.3 4.0.4 | [Modrinth Collection](https://modrinth.com/user/YUNG) | YUNG's API | Улучшенные версии ванильных структур (шахты, крепости, храмы, океанские монументы, темницы, мосты). Более продуманный дизайн, лут и логика. |
| **Repurposed Structures** | 7.1.21 | [Modrinth](https://modrinth.com/mod/repurposed-structures) | Нет | Добавляет вариации ванильных структур в другие биомы (например, крепости в джунглях, деревни в пустошах). |
---
#### 🧭 Утилиты и навигация
> *Моды для удобства игры и перемещения.*
| Мод | Версия | Ссылка | Зависимости | Примечание |
|-----|--------|--------|-------------|------------|
| **Waystones** | 14.1.20 | [Modrinth](https://modrinth.com/mod/waystones) | Balm | Система телепортации через активированные камни. Позволяет создавать точки быстрого перемещения с настройкой стоимости и доступности. |
| **Explorer's Compass** | 1.4.0 | [Modrinth](https://modrinth.com/mod/explorers-compass) | Нет | Компас для поиска конкретных структур. Позволяет задать координаты и тип постройки для навигации. |
---
#### 👹 Мобы и существа
> *Моды, добавляющие новых мобов, боссов, животных.*
| Мод | Версия | Ссылка | Зависимости | Примечание |
|-----|--------|--------|-------------|------------|
| **Alex's Mobs** | 1.22.9 | [Modrinth](https://modrinth.com/mod/alexsmobs) | Citadel, GeckoLib | Огромное количество новых животных и монстров (более 80 видов). Добавляет новые биомы, лут и механики приручения. |
| **Mowzie's Mobs** | 1.8.2 | [Modrinth](https://modrinth.com/mod/mowzies-mobs) | GeckoLib | Несколько уникальных и сложных мобов/боссов с продвинутой анимацией и поведением (Foliaath, Frostmaw и др.). |
#### 🔧 Технические / Библиотеки
> *Обязательные зависимости для работы основных модов.*
| Мод | Версия | Для чего нужен | Ссылка |
|-----|--------|---------------|---------|
| **YUNG's API** | 4.0.6 | База для всех модов YUNG's | [Modrinth](https://modrinth.com/mod/yungs-api) |
| **Moonlight Lib** | 2.16.28 | Для Supplementaries, Amendments | [Modrinth](https://modrinth.com/mod/moonlight) |
| **Citadel** | 2.6.3 | Анимации и данные для Alex's Mobs | [Modrinth](https://modrinth.com/mod/citadel) |
| **GeckoLib** | 4.8.3 | Движок анимаций для нескольких модов | [Modrinth](https://modrinth.com/mod/geckolib) |
| **Balm** | 7.3.38 | Общие утилиты для Waystones и др. | [Modrinth](https://modrinth.com/mod/balm) |
| **Lithostitched** | 1.4.11 | Зависимость для Tectonic | [Modrinth](https://modrinth.com/mod/lithostitched) |
| **AutoModpack** | 4.0.5 | Авто-раздача модов клиентам | [Modrinth](https://modrinth.com/mod/automodpack) |
#### ⚙️ Утилиты мира и генерации
> *Моды для управления миром, прегенерации и оптимизации загрузки чанков.*
| Мод | Версия | Ссылка | Зависимости | Примечание |
|-----|--------|--------|-------------|------------|
| **Chunky** | 1.3.x | [Modrinth](https://modrinth.com/mod/chunky) | Нет | Прегенерация чанков по радиусу. **Только серверный мод** — размещать в `/mods-server-only`, клиентам не передаётся. Устраняет лаги при исследовании мира. Управление через RCON: `chunky radius <N>`, `chunky start`. |
```
### 🗺️ Быстрый старт Chunky (прегенерация)
```bash
# Задать радиус и центр (координаты спавна)
docker exec minecraft rcon-cli "chunky radius 5000"
docker exec minecraft rcon-cli "chunky center 0 0"
docker exec minecraft rcon-cli "chunky confirm"
# Запустить преген
docker exec minecraft rcon-cli "chunky start"
# Следить за прогрессом
docker exec minecraft rcon-cli "chunky progress"
```
или в новом терминале
```bash
while true; do clear; echo "=== $(date) ==="; echo "📊 Место на SSD:"; df -h /mnt/minecraftssd | grep vmsystem; echo ""; echo "🗺️ Прогресс прегена:"; docker exec minecraft rcon-cli "chunky progress"; echo ""; echo "📁 Размер мира:"; du -sh /mnt/minecraftssd/data/world/region/; sleep 30; done
```
| Команда | Назначение |
|---------|------------|
| `chunky pause` / `continue` | Временная остановка / возобновление |
| `chunky cancel` | Полная отмена задачи |
| `chunky world minecraft:the_nether` | Преген только Незера |
| `chunky shape square` | Генерация квадратной области вместо круга |
> ⚠️ **Совет**: Запускайте преген при отсутствии игроков. Процесс нагружает диск и одно ядро ЦП, но не блокирует игру. При радиусе 5000 и скорости 510 cps завершение займёт 1218 часов.
### 📊 Ожидаемый расход места
| Радиус | Чанков | Примерный размер (с модами) |
|--------|--------|----------------------------|
| 2000 | ~12 200 | 0.20.5 ГБ |
| 5000 | ~30 600 | 0.51.5 ГБ |
| 10000 | ~122 000 | 25 ГБ |
> Chunky не перезаписывает существующие чанки. Можно увеличивать радиус в любой момент — будут сгенерированы только новые области.
> 💡 **Совет**: При добавлении нового мода всегда проверяйте его зависимости на Modrinth/CurseForge.Missing dependency = краш при загрузке.
### Как добавить мод
```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/
# 3. Проверить целостность еще раз!
cd /mnt/minecraft/mods/
for f in *.jar; do if unzip -t "$f" &>/dev/null; then echo "✅ $f"; else echo "❌ ПОВРЕЖДЁН: $f"; ls -lh "$f"; fi; done
# 5. Перезапустить сервер
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://<IP_СЕРВЕРА>:8080"
}
```
*Замените `<IP_СЕРВЕРА>` на `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` и перезапуске контейнера.