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

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

Сервер читает один JSON-файл (флаг --config). Разделы независимы: работает тот, что описан. Обзор и примеры — в разделе Конфигурация.

auth

providerstringобязательно

jsonfile, sql или http.

configobjectобязательно

Настройки выбранного провайдера (см. ниже).

sessions.backendstring

memory или redis.

sessions.redisAddrstring

Адрес Redis при backend: redis.

accessTTLduration

Время жизни токена доступа, например 15m.

refreshTTLduration

Время жизни токена обновления, например 720h.

Поля config по провайдерам:

  • jsonfilepath, hash, fields{username, password, uuid}
  • sqldriver, dsn, table, hash, fields{username, password, uuid}
  • httpurl, usernameField, passwordField, uuidField, successField

Значения hash: argon2id, bcrypt, sha256, sha512, md5, plain. Подробнее — Аутентификация.

config.querystring

Для sql: свой запрос вместо table/fields, когда нужна связка таблиц или учёт флага бана. Логин — единственный подстановочный знак, выбираются пароль и (необязательно) UUID.

storage

backendstringобязательно

fs или s3.

configobjectобязательно

Настройки бэкенда.

Поля config:

  • fsroot, xaccelPrefix
  • s3endpoint, region, bucket, accessKeyId, secretAccessKey, pathStyle, secure

Подробнее — Хранилище.

build

profilesDirstringобязательно

Каталог с папками профилей сборок.

trustedSigningKeysarray

Ключи, которые лаунчер обязан принимать помимо активного: публичный ключ в hex или путь к файлу ключа. Нужны для смены ключа — см. Ключ подписи.

signingKeyPathstringобязательно

Путь к ключу подписи Ed25519. Создаётся автоматически, если файла ещё нет.

api

addrstringобязательно

Адрес публичного слушателя, например 0.0.0.0:8099.

xAccelboolean

Раздавать файлы через nginx X-Accel-Redirect (для файлового хранилища).

yggdrasil

enabledboolean

Включает вход в игре.

serverNamestring

Имя, которое видит authlib-injector.

rsaKeyPathstring

Путь к RSA-ключу для подписи текстур. Создаётся автоматически.

skinProviderstring

template, json или sql.

skinConfigobject

Настройки адаптера скинов.

skinDomainsarray

Домены, с которых игра примет текстуры.

Подробнее — Вход в игре и скины.

modules

dirstring

Каталог с исполняемыми файлами модулей. Каждый подхватывается при запуске.

configobject

Конфигурация модулей по имени файла: { "greeter": { … } }.

Подробнее — Модули.

launcher

dirstring

Каталог с версиями лаунчера: <dir>/<версия>/<артефакты>. Публикуется командой launcher publish.

Подробнее — Обновление лаунчера.

branding

namestring

Имя, которое лаунчер показывает вместо «LAMINARA».

windowTitlestring

Заголовок окна лаунчера.

taglinestring

Строка над формой входа.

primaryColorstring

Акцентный цвет, например #4ade80.

primaryInkstring

Цвет текста на акцентном фоне.

backgroundColorstring

Фон приложения.

logoPathstring

Файл логотипа (.svg/.png). Встраивается в конфиг лаунчера как data-URI.

heroMediaPathstring

Фоновое видео или картинка главного экрана.

siteUrlstring

Ссылка на сайт проекта.

Блок отдаётся командой client-config и запекается в лаунчер при сборке.

access

sourcesobject

Источники списков доступа по имени: { "closed-beta": { "type": "file" | "http", "config": { … } } }.

rulesarray

Правила: builds (шаблоны имён), source, visibility (listed/hidden), message.

publicObjectsboolean

Оставить /objects/ без авторизации даже при наличии правил. По умолчанию false.

Подробнее — Доступ к сборкам.

hwid

modestring

off · observe (по умолчанию) · enforce.

saltPathstring

Файл соли, которой хешируются измерения. Запекается в лаунчер командой client-config.

ticketSecretPathstring

Ключ HMAC для тикетов входа в игру.

storeobject

memory или sql (driver: sqlite/postgres/mysql, dsn).

requireReport · requireChallenge · requireLauncher · requireHardwareKeyboolean

Строгость: отчёт обязателен, ответ на nonce обязателен, вход в игру только через лаунчер, ключ машины только в TPM.

minScore · minKinds · clusterScore · fanOutLimit · maxClusterSizenumber

Пороги совпадения и границы кластера.

vmPolicystring

allow · flag · deny.

hardwareBanTTL · retention · ipRetentionstring

Срок аппаратного бана и хранения данных.

Подробнее — Машины и баны.

rateLimit

Включён по умолчанию: публичный вход, открытый для перебора паролей, — не то состояние, которое кто-то выбирает осознанно.

disabledboolean

Выключить все бюджеты. Только для сервера, недоступного из интернета.

backendstring

memory (по умолчанию) или redis — общий счётчик на несколько экземпляров.

redisAddrstring

Адрес Redis для backend: redis.

loginobject

Бюджет на один адрес: { "limit": 10, "per": "5m" }.

accountobject

Бюджет на один ник, намеренно щедрый: { "limit": 50, "per": "15m" }. Жёсткий лимит здесь дал бы любому способ заблокировать конкретного игрока чужими неудачными попытками.

challengeobject

Бюджет на запросы nonce: { "limit": 60, "per": "1m" }.

Тратится только неудачная попытка входа: игрок, который вводит пароль верно, в счётчики не попадает вообще.

news

sourceobject

{ "type": "file" | "http", "config": { … } }. Нет блока — новостей нет.

limitnumber

Сколько записей отдавать лаунчеру. По умолчанию 20.

Подробнее — Новости.