跳到内容

关于 AsterYggdrasil

这一页不是接入手册

如果你只是想先把服务跑起来,去 快速开始

如果你想知道这个项目现在到底是什么、能不能拿来给自己的 Minecraft 服务器用,继续往下看。

它解决什么问题

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_urlyggdrasil_public_base_url;公开读对象存储/CDN 可以额外配置 yggdrasil_texture_public_base_url。如果缺少可用公开 URL,profile textures 响应会因为无法生成公网 URL 而失败。

签名私钥不应手动写入数据库。生产环境应通过管理端 config action 轮换,让服务端生成并维护成对的 RSA 私钥和公钥。

从哪里开始

Released under the MIT License.