Конфигурация
Сервер читает один JSON-файл (флаг --config). Разделы независимы: работает тот, что описан. Обзор и примеры — в разделе Конфигурация.
auth
providerstringобязательно
jsonfile, sql или http.configobjectобязательно
sessions.backendstring
memory или redis.sessions.redisAddrstring
backend: redis.accessTTLduration
15m.refreshTTLduration
720h.Поля config по провайдерам:
- jsonfile —
path,hash,fields{username, password, uuid} - sql —
driver,dsn,table,hash,fields{username, password, uuid} - http —
url,usernameField,passwordField,uuidField,successField
Значения hash: argon2id, bcrypt, sha256, sha512, md5, plain. Подробнее — Аутентификация.
config.querystring
sql: свой запрос вместо table/fields, когда нужна связка таблиц или учёт флага бана. Логин — единственный подстановочный знак, выбираются пароль и (необязательно) UUID.storage
backendstringобязательно
fs или s3.configobjectобязательно
Поля config:
- fs —
root,xaccelPrefix - s3 —
endpoint,region,bucket,accessKeyId,secretAccessKey,pathStyle,secure
Подробнее — Хранилище.
build
profilesDirstringобязательно
trustedSigningKeysarray
signingKeyPathstringобязательно
api
addrstringобязательно
0.0.0.0:8099.xAccelboolean
X-Accel-Redirect (для файлового хранилища).yggdrasil
enabledboolean
serverNamestring
rsaKeyPathstring
skinProviderstring
template, json или sql.skinConfigobject
skinDomainsarray
Подробнее — Вход в игре и скины.
modules
dirstring
configobject
{ "greeter": { … } }.Подробнее — Модули.
launcher
dirstring
<dir>/<версия>/<артефакты>. Публикуется командой launcher publish.Подробнее — Обновление лаунчера.
branding
namestring
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
storeobject
memory или sql (driver: sqlite/postgres/mysql, dsn).requireReport · requireChallenge · requireLauncher · requireHardwareKeyboolean
minScore · minKinds · clusterScore · fanOutLimit · maxClusterSizenumber
vmPolicystring
allow · flag · deny.hardwareBanTTL · retention · ipRetentionstring
Подробнее — Машины и баны.
rateLimit
Включён по умолчанию: публичный вход, открытый для перебора паролей, — не то состояние, которое кто-то выбирает осознанно.
disabledboolean
backendstring
memory (по умолчанию) или redis — общий счётчик на несколько экземпляров.redisAddrstring
backend: redis.loginobject
{ "limit": 10, "per": "5m" }.accountobject
{ "limit": 50, "per": "15m" }. Жёсткий лимит здесь дал бы любому способ заблокировать конкретного игрока чужими неудачными попытками.challengeobject
{ "limit": 60, "per": "1m" }.Тратится только неудачная попытка входа: игрок, который вводит пароль верно, в счётчики не попадает вообще.
news
sourceobject
{ "type": "file" | "http", "config": { … } }. Нет блока — новостей нет.limitnumber
20.Подробнее — Новости.