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

362 lines
11 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: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://<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` и перезапуске контейнера.