关于 AsterYggdrasil
它解决什么问题
AsterYggdrasil 是一个自托管的 Minecraft 皮肤站和 Yggdrasil/authlib-injector 认证服务器。
简单说,它让你可以把“账号登录、玩家档案、皮肤/披风材质、启动器认证、服务端进服验证”放在自己的服务里,而不是依赖第三方皮肤站或临时拼出来的脚本。
它现在已经不是空壳。当前代码里已经有:
- 站点账号的注册、登录、刷新、退出和管理员初始化。
/api/yggdrasil协议根路径,包含 metadata、authserver、sessionserver、profile lookup 和公开材质读取。- Minecraft profile 独立建模,一个站点账号可以拥有多个 profile。
- skin/cape 上传、PNG 重编码、旧式 cape 兼容、hash 公开读取和 local/S3/MinIO 对象存储。
- wardrobe 和公共材质库,支持提交、审核、标签、复制、举报和下架。
- 分权 operator 和图形验证码策略。
- 运行时配置、签名密钥轮换、审计日志和周期维护任务。
这些能力是后端真实存在的,不是路线图上的愿望。文档会尽量按这个边界写,避免把尚未落地的能力写成已经可用的功能。
适合谁
如果你在运营一个离线登录或 authlib-injector 生态下的 Minecraft 服务器,希望玩家能有自己的账号、角色名、皮肤和披风,AsterYggdrasil 适合你试。
如果你不想把玩家身份和材质托管在不受控的平台上,希望自己掌握数据库、材质文件、签名密钥和备份,AsterYggdrasil 也适合你试。
如果你在做自己的皮肤站、启动器或服务器面板,想要一个 Rust 后端作为 Yggdrasil 协议基础,也可以把它当成二次开发起点。
如果你想要单一二进制直接部署,不想维护复杂的 PHP 运行环境、Web 服务器插件和一堆扩展依赖,AsterYggdrasil 也符合这个方向。
不适合谁
如果你需要一个已经打磨完整的商业级运营后台,且不准备自己做上线前验证,当前版本还不适合直接当最终产品。产品前端已经覆盖账号、profile、wardrobe、公共材质库和管理后台核心流程,但它仍然是 alpha。
如果你需要多主高可用、复杂封禁系统或完整商业级运营后台,当前版本还不适合直接承担这些场景。对象存储已经支持 local、S3 和 MinIO;材质和上传头像都会走同一个 backend。S3/MinIO 走服务端 streaming 上传,不支持客户端 presigned 上传。
如果目标是运行 Mojang 官方在线模式服务器,AsterYggdrasil 并不面向这个场景。它面向的是自建 Yggdrasil/authlib-injector 接入。
现在的边界
玩家档案名支持受控改名。要换名,必须走用户或管理员 API;服务端会保留 UUID、材质绑定和审计链路,并临时失效相关 Yggdrasil token。不要直接改数据库,否则启动器缓存、token、服务端白名单和材质签名会出现不一致。
材质上传只接受 PNG。服务端会重编码为安全 PNG,并以处理后的内容计算 hash。你上传的原始文件不会长期保存。
公开材质 URL 必须是客户端能访问的绝对 URL。生产部署时应配置 public_site_url 或 yggdrasil_public_base_url;公开读对象存储/CDN 可以额外配置 yggdrasil_texture_public_base_url。如果缺少可用公开 URL,profile textures 响应会因为无法生成公网 URL 而失败。
签名私钥不应手动写入数据库。生产环境应通过管理端 config action 轮换,让服务端生成并维护成对的 RSA 私钥和公钥。
从哪里开始
- 想先跑起来:看 快速开始。
- 想知道普通用户怎么用:看 用户手册。
- 想接启动器或服务端:看 Yggdrasil API 和 启动器登录。
- 想上线部署:看 Docker 部署。