简体中文 | English
这是一个使用 FastAPI + MySQL + Redis 实现的 osu! API 模拟服务器,支持 osu! API v1, v2 和 osu!lazer 的绝大部分功能。
- OAuth 2.0 认证: 支持密码流和刷新令牌流
- 用户数据管理: 完整的用户信息、统计数据、成就等
- 多游戏模式支持: osu! (RX, AP), taiko (RX), catch (RX), mania 和自定义 ruleset(见下)
- 数据库持久化: MySQL 存储用户数据
- 缓存支持: Redis 缓存令牌和会话信息
- 多种存储后端: 支持本地存储、Cloudflare R2、AWS S3
- 容器化部署: Docker 和 Docker Compose 支持
- 资源文件反向代理: 可以将 osu! 官方的资源链接(头像、谱面封面、音频等)替换为自定义域名。
| Ruleset | ID | ShortName | PP 算法 (rosu) | PP 算法 (performance-server) |
|---|---|---|---|---|
| osu! | 0 |
osu |
✅ | ✅ |
| osu!taiko | 1 |
taiko |
✅ | ✅ |
| osu!catch | 2 |
fruits |
✅ | ✅ |
| osu!mania | 3 |
mania |
✅ | ✅ |
| osu! (RX) | 4 |
osurx |
✅ | ✅ |
| osu! (AP) | 5 |
osuap |
✅ | ✅ |
| osu!taiko (RX) | 6 |
taikorx |
✅ | ✅ |
| osu!catch (RX) | 7 |
fruitsrx |
✅ | ✅ |
| Sentakki | 10 |
Sentakki |
❌ | ❌ |
| tau | 11 |
tau |
❌ | ✅ |
| Rush! | 12 |
rush |
❌ | ❌ |
| hishigata | 13 |
hishigata |
❌ | ❌ |
| soyokaze! | 14 |
soyokaze |
❌ | ✅ |
前往 custom-rulesets 下载为 g0v0-server 修改的自定义 ruleset。
- 克隆项目
git clone https://github.com/GooGuTeam/g0v0-server.git
cd g0v0-server- 创建
.env文件
请参考 wiki 来修改 .env 文件
cp .env.example .env- 启动服务
# 标准服务器
docker-compose -f docker-compose.yml up -d
# 启用 osu!RX 和 osu!AP 模式 (基于偏偏要上班 pp 算法的 Gu pp 算法)
docker-compose -f docker-compose-osurx.yml up -d- 通过游戏连接服务器
使用自定义的 osu!lazer 客户端,或者使用 LazerAuthlibInjection,修改服务器设置为服务器的 IP
参考数据库迁移指南
使用 openssl rand -hex 32 生成 JWT 密钥,以保证服务器安全和旁观服务器的正常运行
使用 openssl rand -hex 40 生成前端密钥
如果是在公网环境下,请屏蔽对 /_lio 路径的外部请求
前往 wiki 查看
本项目采用 GNU Affero General Public License v3.0 (AGPL-3.0-only) 授权。
任何衍生作品、修改或部署 必须在显著位置清晰署名 原始作者:
GooGuTeam - https://github.com/GooGuTeam/g0v0-server
项目目前处于快速迭代状态,欢迎提交 Issue 和 Pull Request!
查看 贡献指南 获取更多信息。
感谢所有参与此项目的贡献者! (emoji key)
咕谷酱 💻 |
MingxuanGame 💻 |
陈晋瑭 💻 |
4ayo 🤔 |
本项目遵循 all-contributors 规范。欢迎任何形式的贡献!
- QQ 群:
1059561526 - Discord: https://discord.gg/AhzJXXWYfF
