**feat(server-docs): add comprehensive m2612 serverpack documentation**
- **What**: Replaced outdated `ReadMeServer.md` with detailed documentation covering: - Server paths (repo, local test server, NixOS deployment) - `.env` configuration for world-specific datapack sync - Script workflows (`sync-with-shelve.sh`, `export-serverpack.sh`, etc.) - Local server initialization and Java 25 requirement - Datapack synchronization (including `--watch` mode) - **Why**: Standardize server management workflows, improve maintainability, and provide clear guidance for developers/admins. Updated for **MC 26.1.2** and Fabric compatibility.
This commit is contained in:
150
ReadMeServer.md
150
ReadMeServer.md
@ -1,28 +1,140 @@
|
|||||||
# Как добавлять моды в сборку
|
# Серверная сборка m2612
|
||||||
|
|
||||||
- Копируются ли мои пользовательские конфиги в serverpack?
|
Документация по скриптам управления модпаком: от добавления модов до локального тестового сервера и выкладки на NixOS.
|
||||||
|
|
||||||
Да
|
## Пути
|
||||||
|
|
||||||
- Порядок действий для обновления мод пака на сервере
|
| Что | Путь |
|
||||||
|
| :-- | :-- |
|
||||||
|
| Репозиторий модпака | этот каталог |
|
||||||
|
| Локальный тестовый сервер | `/home/dimti/Seafile/minecraft/installers/m2612` |
|
||||||
|
| Развёртывание на NixOS | `server-scripts/recreate-m2612.sh` (репозиторий nixos) |
|
||||||
|
|
||||||
1. Добавляем мод из FreesmLauncher
|
## Конфигурация `.env`
|
||||||
2. *.disabled моды игнорируются и git-ом, и pakku
|
|
||||||
3. sync-with-shelve.sh - синхронизация локального состояния папки модов с внутренним хранилищем pakku
|
|
||||||
4. fetch-with-restore-shelve.sh - не обязательно, но желательно выполнял для консистентности сборки
|
|
||||||
5. export-serverpack.sh - экспортируют сюдаже локально серверный билд (он же используется скриптом в NixOS).
|
|
||||||
Старт сервера, если что, вот здесь: `/home/dimti/Seafile/minecraft/installers/m2110`
|
|
||||||
Дополнительно развертывает получившийся серверный бандл в локальную папку на этом локальном компьютере, для тестирования того, как будет работать сервер на новой сборке (чтоб предварительно протестировать обновленный пак, перед тем как выгружать на NixOS-сервер).
|
|
||||||
6. Для развёртывания на сервер достаточно только запустить скрипт: server-scripts/recreate-m2110.sh
|
|
||||||
|
|
||||||
Разумеется затем надо коммитить текущее состояние, пушить и раздавать на клиенты.
|
Локальные настройки, не попадают в git. Шаблон — `.env.example`.
|
||||||
|
|
||||||
# Форменный ужос
|
```env
|
||||||
|
LOCAL_WORLD="Новый мир"
|
||||||
|
```
|
||||||
|
|
||||||
Для fstab - прокидываем папку datapacks в мир на клиенте, и тестовый сервер на локалке:
|
Используется скриптом `sync-datapacks-to-world.sh`: в какой мир клиента копировать датапаки из `datapacks/`. Значение с пробелами — в кавычках.
|
||||||
|
|
||||||
|
## Шаблон сервера `server-template/`
|
||||||
|
|
||||||
|
Минимальный набор файлов для первичного развёртывания локального сервера (хранится в git):
|
||||||
|
|
||||||
|
- `eula.txt` — принятие EULA
|
||||||
|
- `server.properties` — базовые настройки (без секретов)
|
||||||
|
- `start.sh` — запуск Fabric-сервера (имя jar подставляется скриптом)
|
||||||
|
|
||||||
|
Разворачивается командой `init-local-server.sh` в `TARGET_DIR`.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Скрипты `bash/`
|
||||||
|
|
||||||
|
### `sync-with-shelve.sh`
|
||||||
|
|
||||||
|
Синхронизирует папку `mods/` с реестром pakku (`pakku sync`).
|
||||||
|
|
||||||
|
Перед sync временно убирает в `.pakku/shelf` кастомные моды (advanced-xray, mobility), которых нет в CurseForge/Modrinth, и возвращает их обратно после. Без этого pakku пытается их удалить.
|
||||||
|
|
||||||
|
Запускать после добавления или удаления модов в FreesmLauncher.
|
||||||
|
|
||||||
|
### `fetch-with-restore-shelve.sh`
|
||||||
|
|
||||||
|
Скачивает моды из реестра pakku в `mods/` (`pakku fetch --shelve`). Желательно после `sync-with-shelve.sh` — для консистентности локальной папки с lock-файлом.
|
||||||
|
|
||||||
|
### `export-serverpack.sh`
|
||||||
|
|
||||||
|
Собирает серверный архив и разворачивает его локально:
|
||||||
|
|
||||||
|
1. `pakku export` → `build/serverpack/*.zip`
|
||||||
|
2. Очищает `mods/` и `config/` в локальном сервере
|
||||||
|
3. Распаковывает архив в `/home/dimti/Seafile/minecraft/installers/m2612`
|
||||||
|
4. Синхронизирует `datapacks/` → `world/datapacks/` на локальном сервере
|
||||||
|
|
||||||
|
Пользовательские конфиги из `config/` попадают в serverpack — pakku экспортирует их вместе со сборкой.
|
||||||
|
|
||||||
|
### `init-local-server.sh`
|
||||||
|
|
||||||
|
Первичная инициализация локального тестового сервера (один раз или после смены версии MC/loader):
|
||||||
|
|
||||||
|
1. Копирует шаблоны из `server-template/` (`server.properties` не перезаписывает, если уже есть)
|
||||||
|
2. Генерирует `start.sh` с актуальным именем Fabric jar
|
||||||
|
3. Скачивает Fabric Server Launcher (версии берутся из `pakku-lock.json`)
|
||||||
|
|
||||||
|
### `start-local-server.sh`
|
||||||
|
|
||||||
|
Запускает локальный сервер: `cd` в `TARGET_DIR` и `bash start.sh`.
|
||||||
|
|
||||||
|
MC 26.1.2 требует Java 25 (`java-runtime-epsilon` в FreesmLauncher). Для нормальной консоли с историей команд — мод better-fabric-console.
|
||||||
|
|
||||||
|
### `sync-datapacks-to-world.sh`
|
||||||
|
|
||||||
|
Зеркальная синхронизация датапаков в клиентский мир:
|
||||||
|
|
||||||
```
|
```
|
||||||
# datapacks for m2110 client world
|
datapacks/ → saves/$LOCAL_WORLD/datapacks/
|
||||||
/home/dimti/.local/share/FreesmLauncher/instances/m2110/.minecraft/datapacks /home/dimti/.local/share/FreesmLauncher/instances/m2110/.minecraft/saves/world/datapacks none defaults,bind 0 0
|
```
|
||||||
/home/dimti/.local/share/FreesmLauncher/instances/m2110/.minecraft/datapacks /home/dimti/Seafile/minecraft/installers/m2110/world/datapacks none defaults,bind 0 0
|
|
||||||
```
|
```bash
|
||||||
|
bash bash/sync-datapacks-to-world.sh # один раз
|
||||||
|
bash bash/sync-datapacks-to-world.sh --watch # следить за изменениями (inotifywait)
|
||||||
|
```
|
||||||
|
|
||||||
|
Режим `--watch` удобен при разработке рецептов: правишь файлы в `datapacks/`, они сразу попадают в мир.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Типовой workflow
|
||||||
|
|
||||||
|
### Обновление модпака на сервере
|
||||||
|
|
||||||
|
1. Добавить/убрать мод в FreesmLauncher (`*.disabled` игнорируются и git-ом, и pakku)
|
||||||
|
2. `bash/sync-with-shelve.sh`
|
||||||
|
3. `bash/fetch-with-restore-shelve.sh` (желательно)
|
||||||
|
4. `bash/export-serverpack.sh` — собрать и развернуть локально для проверки
|
||||||
|
5. `bash/start-local-server.sh` — протестировать
|
||||||
|
6. Закоммитить, запушить, раздать клиентам
|
||||||
|
7. На NixOS: `server-scripts/recreate-m2612.sh`
|
||||||
|
|
||||||
|
Или одной VS Code-задачей **Build All** (шаги 2–4), затем **Start server**.
|
||||||
|
|
||||||
|
### Первый запуск локального сервера
|
||||||
|
|
||||||
|
1. Скопировать `.env.example` → `.env`, при необходимости поправить `LOCAL_WORLD`
|
||||||
|
2. `bash/init-local-server.sh` — шаблон + Fabric jar
|
||||||
|
3. `bash/export-serverpack.sh` — mods и config
|
||||||
|
4. `bash/start-local-server.sh`
|
||||||
|
|
||||||
|
### Разработка датапаков
|
||||||
|
|
||||||
|
1. Запустить VS Code-задачу **Watch sync datapacks to local world** (или `--watch` в терминале)
|
||||||
|
2. Редактировать файлы в `datapacks/`
|
||||||
|
3. Перезагрузить датапаки в игре: `/reload`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## VS Code tasks (`.vscode/tasks.json`)
|
||||||
|
|
||||||
|
| Задача | Скрипт |
|
||||||
|
| :-- | :-- |
|
||||||
|
| **Build All** | sync → fetch → export (последовательно) |
|
||||||
|
| Sync local mods to pakku registry | `sync-with-shelve.sh` |
|
||||||
|
| Fetch mods and download from pakku registry | `fetch-with-restore-shelve.sh` |
|
||||||
|
| Export serverpack | `export-serverpack.sh` |
|
||||||
|
| Start server | `start-local-server.sh` |
|
||||||
|
| Sync datapacks to local world | `sync-datapacks-to-world.sh` |
|
||||||
|
| Watch sync datapacks to local world | `sync-datapacks-to-world.sh --watch` (фон) |
|
||||||
|
| Run serverpack on Anta | `recreate-m2612.sh` на NixOS |
|
||||||
|
|
||||||
|
**Build All** — default build task (`Ctrl+Shift+B`).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Заметки
|
||||||
|
|
||||||
|
- Клиентские моды, нужные на сервере (lambdynamiclights, xaeros-world-map), настроены в `pakku.json` как `side: BOTH`. Добавлять через `pakku cfg prj -s BOTH <slug>` — один раз.
|
||||||
|
- Датапаки на NixOS-сервер пока синхронизируются вручную (см. TODO в `ReadMe.md`).
|
||||||
|
|||||||
Reference in New Issue
Block a user