# 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 `, `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 и скорости 5–10 cps завершение займёт 12–18 часов. ### 📊 Ожидаемый расход места | Радиус | Чанков | Примерный размер (с модами) | |--------|--------|----------------------------| | 2000 | ~12 200 | 0.2–0.5 ГБ | | 5000 | ~30 600 | 0.5–1.5 ГБ | | 10000 | ~122 000 | 2–5 ГБ | > 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://: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` и перезапуске контейнера.