Перейти к содержимому

Конфигурация

Сервер читает один JSON-файл, путь задаётся флагом --config. Файл состоит из независимых разделов — включён только тот, что вы описали. Нет раздела yggdrasil — вход в игре просто не поднимается; нет storage — сервер работает без раздачи файлов.

Полный список полей с типами — в справочнике конфигурации. Здесь — что каждый раздел даёт.

Разделы

auth — кто такие игроки

Откуда брать аккаунты и как проверять пароль. Laminara не хранит аккаунты: она спрашивает ваш источник (JSON-файл, SQL-база или HTTP-API) и владеет только сессиями. Здесь же выбирается алгоритм хеша пароля и хранилище сессий (в памяти или Redis). Подробно — в разделе Аутентификация.

storage — где лежат файлы

Хранилище объектов: локальная файловая система или S3-совместимое. От него зависит, как сервер отдаёт байты лаунчеру. Что выбрать — в разделе Хранилище.

build — куда складывать сборки

Каталог профилей (profilesDir) и путь к ключу подписи (signingKeyPath). Ключ Ed25519 создаётся автоматически при первом запуске, если файла ещё нет. Его публичная часть попадает в лаунчер вместе со всем кольцом ключей.

api — публичный слушатель

Адрес, на котором сервер обслуживает лаунчер, раздачу объектов и (если включён) Yggdrasil. Флаг xAccel включает выдачу файлов силами nginx через X-Accel-Redirect — см. Продакшен.

yggdrasil — вход в игре

Включает authlib-injector-совместимый сервер аутентификации и подпись скинов. Тут же выбирается адаптер скинов. Подробно — в разделе Вход в игре и скины.

Минимальный пример

Достаточный, чтобы собирать и раздавать сборки: аккаунты из JSON-файла, файловое хранилище, публичный порт.

{
"auth": {
"provider": "jsonfile",
"config": { "path": "/var/lib/laminara/users.json", "hash": "argon2id" },
"sessions": { "backend": "memory" }
},
"storage": {
"backend": "fs",
"config": { "root": "/var/lib/laminara/objects" }
},
"build": {
"profilesDir": "/var/lib/laminara/profiles",
"signingKeyPath": "/var/lib/laminara/signing.key"
},
"api": { "addr": "0.0.0.0:8099" }
}