这个项目能做什么
泠 Yggdrasil 是一个为 Minecraft 打造的 Yggdrasil 外置鉴权系统,完整兼容 authlib 体系,提供账户注册、登录、角色管理与皮肤/披风托管能力。内置 Web 安装向导、二次元风格的管控面板与多层级安全体系,让你在几分钟内搭起一套安全又好看的外置登录服务。
## 快速开始
环境要求:Java 25(推荐;理论上支持 Java 21+),建议至少 512 MB 可用内存。
三步启动:
1. 确认 Java 版本
2. 下载 LingYggdrasil-2.2.7.jar,放入独立空目录
3. 启动(该目录将成为数据目录)
首次启动会自动进入安装向导(`http://<服务器地址>:35598`),按提示完成管理员账户、数据库与邮箱配置即可。安装完成后,程序会同时提供三个服务:
| 端口 | 用途 | 访问范围 |
|------|------|----------|
| 35565 | 用户端(注册、登录、仪表盘、皮肤、好友等) | 对外公开 |
| 35577 | Yggdrasil API(供 Minecraft 启动器调用) | 对外公开 |
| 35599 | 管理后台 | 应保持私密 |
| 35598 | 安装向导 | 仅首次安装时开放 |
## 功能特性
### 开箱即用
- Web 安装向导:首次启动自动引导设置管理员账户、数据库与邮件服务
- 多数据库支持:SQLite、MySQL、PostgreSQL
- 单 JAR 部署:打包为单个可执行 JAR
### 插件系统
- 外部插件加载:启动时自动扫描 `plugins/` 目录并加载插件 jar
- `plugin.yml` 描述:仿 Paper 风格,声明名称、版本、作者、依赖、图标与权限节点
- 后台插件管理:支持手动启停
- 插件二级菜单:插件可注册至多一个后台二级菜单
- 动态权限节点:内置节点与插件节点统一由来源动态注册
- 插件开发 API:构建同步产出 `LingYggdrasil-plugin-api-2.2.7.jar`
### 安全体系
- Argon2 密码加密:6 级强度可调
- 邮箱验证:支持域名黑白名单控制
- 同 IP 注册限制:防止批量注册
- 名称黑名单:支持通配符
- 独立会话体系:用户端、管理端、API 使用相互隔离的会话 Cookie
- Root 完整性保护:校验 `root_info` 表
- 登录与操作限流:关键操作均有频率限制
### 用户端
- 角色管理:创建多个游戏角色,每个角色拥有独立的 Yggdrasil Token 与 UUID
- 皮肤 & 披风:上传、管理个人皮肤与披风,支持别名命名、公开/私有可控
- 材质库:公共材质广场,按热度排序,无限滚动懒加载
- 点赞 & 收藏:为材质点赞助力上热门
- 共享材质:好友共享与我的收藏双板块
- 好友系统:好友代码添加、好友详情卡片、拉黑管理、勾选式材质共享
- 3D 皮肤预览:集成 skinview3d,支持 360° 旋转预览
- 安全设置:自助修改密码、邮箱、昵称,查看与重新生成 Token
- 操作日志:查看、下载与清空自己的操作日志
- 主题与语言:浅色/深色主题切换,10 种语言随账户持久化
### 管理后台
- 仪表盘总览:用户数、角色数、皮肤/披风数量等核心数据,组件支持拖拽排序
- 用户管理:查看、搜索、创建、编辑、封禁用户
- 角色管理:全局 CRUD,支持名称修改、所有权转移与形态切换
- 皮肤 & 披风管理:全局管理纹理资源,配置上传大小、数量、存储路径与频率限制
- 安全设置:6 级加密等级可视化卡片
- 系统管理:站点信息、功能开关、域名、公告、备案、操作日志等分组配置
- 权限组:管理员权限组与用户权限组,精细控制菜单可见性与功能可用性
- 世界树设置:签名算法、Token 有效期、频率限制、UUID 版本等协议配置
### Yggdrasil 协议
- 完整协议实现:兼容主流 Minecraft 启动器的 Yggdrasil 认证接入
- 三种签名模式:Ed448(现代)、RSA-SHA512、RSA-SHA1(兼容)
- Token 体系:每个角色自动生成 64 位高强度 Token
- 纹理托管:公开暴露 `/textures/{type}/{hash}` 端点
- 会话管理:完整的登入、登出与会话校验流程
- 便利查询扩展:提供按名查询、批量查询等扩展端点
### 国际化
内置简体中文、繁体中文、中文(華夏)、English、Русский、Deutsch、Français、Italiano、日本語、한국어 共 10 种语言。语言包为 JSON 格式,支持外部覆盖与深度合并。
## 客户端接入
以 HMCL 等支持自定义 Yggdrasil 的启动器为例:
1. 在启动器的「账户」或「登录方式」设置中,选择「自定义 Yggdrasil / 外置登录」
2. 认证服务器地址填写 API 根地址(例如 `https://example.com`,直连则填 `http://<IP>:35577`)
3. 用户名填写角色名,密码填写该角色的 Yggdrasil Token
## 技术栈
| 组件 | 技术 |
|------|------|
| 语言 | Java 25 |
| Web 框架 | Javalin |
| 数据库连接 | HikariCP 连接池 |
| 数据库 | SQLite / MySQL / PostgreSQL |
| 加密 | Bouncy Castle(Argon2、Ed448、RSA) |
| 邮件 | Eclipse Angus Mail |
| 日志 | Logback + SLF4J |
| 序列化 | Jackson |
| 构建工具 | Maven |
## 许可协议
本项目采用 GNU Affero General Public License v3.0 许可协议。
评论
0 人表达喜爱 · 满10人后显示 Deer Point
登录后参与讨论。