441 lines
18 KiB
Markdown
441 lines
18 KiB
Markdown
# 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.
|
||
|
||
#### ⚡ Оптимизация сервера
|
||
> *Моды, оптимизирующие сервер, снижающие потребление ОЗУ и нагрузку на ЦП.*
|
||
|
||
- Название мода: **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) |
|
||
|
||
> 💡 **Совет**: При добавлении нового мода всегда проверяйте его зависимости на 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/
|
||
|
||
# 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` и перезапуске контейнера.
|