feat(avatar): NMSR skin renderer at avatar.${BASE_DOMAIN}, Drasl-backed
Add NMSR-as-a-Service (NickAcPT/nmsr-rs) rendering players' skins/avatars,
sourced from Drasl instead of Mojang.
- docker/nmsr/Dockerfile build from source, pinned to commit 948ba4bc027b
(ears feature, lavapipe software Vulkan)
- nmsr/config.toml.tmpl [mojank] -> http://auth.${BASE_DOMAIN}; Drasl
serves the Mojang-compatible routes at its bare
BaseURL and embeds absolute skin URLs that NMSR
fetches directly. allow_offline_mode_uuids=true.
- docker-compose.nmsr.yml nmsr service (build), host bind 127.0.0.1:9898
only, config mount; mounts the caddy avatar snippet
- caddy/conf.d/40-avatar.caddy avatar.${BASE_DOMAIN} -> reverse_proxy nmsr:8080
- nginx-front + LE_SUBDOMAINS public TLS vhost (HSTS) + cert for avatar
- render-config.sh / .gitignore render + ignore nmsr/config.toml
Skin resolution stays internal over mcnet (caddy alias -> drasl), no public
round-trip.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
37
nmsr/config.toml.tmpl
Normal file
37
nmsr/config.toml.tmpl
Normal file
@@ -0,0 +1,37 @@
|
||||
# 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 = "15m"
|
||||
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
|
||||
Reference in New Issue
Block a user