362 lines
11 KiB
Markdown
362 lines
11 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.
|
||
|
||
### Шаблоны для описания (заполняется по мере добавления)
|
||
|
||
#### 🎨 Графика и визуал
|
||
> *Моды, улучшающие графику, оптимизирующие рендеринг.*
|
||
> ⚠️ Клиентские моды (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` и перезапуске контейнера.
|