repgraphics/nitrocraft is a self-hosted Minecraft avatar/render API built with Nitro and minecraft-toolkit.
- UUID-based avatars, skins, capes, and head/body renders
- Player lookup endpoints (
uuid/username) - Server status endpoints (Java, Bedrock, auto)
- Built-in cache support (
redis,memory, ornone) - Optional outbound/inbound rate limiting
docker run -d --name nitrocraft \
-p 3000:3000 \
-v nitrocraft-images:/home/app/nitrocraft/images \
-e NODE_ENV=production \
-e BIND=0.0.0.0 \
-e EXTERNAL_URL=http://localhost:3000 \
-e CACHE_BACKEND=memory \
docker.io/repgraphics/nitrocraft:latestOpen http://localhost:3000.
docker network create nitrocraft
docker volume create nitrocraft-images
docker run -d --name nitrocraft-redis --network nitrocraft redis:7-alpine
docker run -d --name nitrocraft \
--network nitrocraft \
-p 3000:3000 \
-v nitrocraft-images:/home/app/nitrocraft/images \
-e NODE_ENV=production \
-e BIND=0.0.0.0 \
-e EXTERNAL_URL=http://localhost:3000 \
-e CACHE_BACKEND=redis \
-e REDIS_URL=redis://nitrocraft-redis:6379 \
docker.io/repgraphics/nitrocraft:latestdocker compose up -dReplace {uuid} with a valid Minecraft UUID:
/avatars/{uuid}?size=160&overlay/skins/{uuid}/capes/{uuid}/renders/head/{uuid}?scale=6&overlay/renders/body/{uuid}?scale=6&overlay/players/{uuid-or-username}/status/mc
CACHE_BACKEND:redis,memory, ornoneREDIS_URL: required whenCACHE_BACKEND=redisCORS_ORIGIN: empty/Allallows all originsREQUESTS_RATE_LIMIT: inbound per-IP rate limit (empty disables)REQUESTS_RATE_LIMIT_WINDOW_MS: limiter window in msSESSIONS_RATE_LIMIT: outbound Mojang session requests/secSTATUS_ALLOW_PRIVATE_TARGETS: allow private/local/status/*probes (falserecommended)DEFAULT_REDIRECT_ALLOWLIST: allowlist for externaldefault=redirect hostsPORT,BIND,EXTERNAL_URL
- Render endpoints require native
canvasruntime libraries (already included in this image). - This is a Linux image. On Windows, run via Docker Desktop (Linux containers/WSL2).