# 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` и перезапуске контейнера.