NMSR has no per-request avatar refresh (the `?skin=` override is ignored by this build), so the only lever for a changed skin to appear is the resolve cache. Drop resolve_cache_duration 15m -> 60s so account-page skin changes propagate within ~1 min; texture cache stays 48h (Drasl skin URLs are content-hashed, so a new skin is always a new URL — never stale). Cost is one extra internal Drasl profile lookup per avatar per minute, trivial for 4-10 players. Update the now-stale "~15 min" copy (skinLead + skinPreviewNote, en/es/eu) and code comments to "~1 min". Add plan/19-routes.md: a reference for the nmsr / landing / auth HTTP routes (public via caddy + browser->Drasl + internal service-to-service), indexed in plan/00-overview.md. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
47 lines
1.9 KiB
Cheetah
47 lines
1.9 KiB
Cheetah
# NMSR-aas config — renders to nmsr/config.toml (gitignored) via
|
|
# tooling/render-config.sh. Only ${BASE_DOMAIN} is substituted.
|
|
#
|
|
# Skins come from Drasl, NOT Mojang. Drasl exposes Mojang-compatible routes at
|
|
# the bare BaseURL:
|
|
# session_server -> {url}/session/minecraft/profile/{uuid}
|
|
# mojang_api_server -> {url}/users/profiles/minecraft/{name}
|
|
# and embeds absolute skin URLs (http://auth.${BASE_DOMAIN}/web/texture/skin/…)
|
|
# in the profile, which NMSR fetches directly (textures_server is only a
|
|
# fallback). NMSR resolves auth.${BASE_DOMAIN} internally over the docker
|
|
# network (caddy holds the mcnet alias → drasl), so no public round-trip.
|
|
|
|
[server]
|
|
address = "0.0.0.0"
|
|
port = 8080
|
|
|
|
[caching]
|
|
cleanup_interval = "1h"
|
|
# resolve_cache_duration caches the uuid -> profile (incl. skin URL) lookup, so
|
|
# it bounds how long a changed skin keeps showing the OLD avatar. Kept short so
|
|
# skin changes on the account page propagate within ~1 min (NMSR has no
|
|
# per-request force-refresh; a `?skin=` override is ignored by this build). Cost
|
|
# is one extra internal Drasl profile lookup per avatar per minute — trivial over
|
|
# mcnet for a 4-10 player server. For an instant global flush: restart nmsr.
|
|
resolve_cache_duration = "60s"
|
|
# texture cache stays long: Drasl skin URLs are content-hashed
|
|
# (/web/texture/skin/<sha256>.png), so a new skin = new URL = fresh fetch; this
|
|
# 48h cache never serves a stale skin.
|
|
texture_cache_duration = "48h"
|
|
|
|
[caching.cache_biases]
|
|
|
|
[mojank]
|
|
# Point every Mojang endpoint at Drasl (internal, plain http via the caddy alias).
|
|
session_server = "http://auth.${BASE_DOMAIN}"
|
|
textures_server = "http://auth.${BASE_DOMAIN}"
|
|
mojang_api_server = "http://auth.${BASE_DOMAIN}"
|
|
session_server_rate_limit = 10
|
|
# This is an offline-mode (authlib-injector) server — Drasl issues v3 offline
|
|
# UUIDs, so they must be accepted.
|
|
allow_offline_mode_uuids = true
|
|
use_dashless_uuids = false
|
|
|
|
[rendering]
|
|
sample_count = 1
|
|
use_smaa = true
|