咕谷酱 6731373ded Add MailerSend and template-based email verification
Introduced support for MailerSend as an email provider alongside SMTP, with configuration options in settings. Added Jinja2-based multi-language email templates for verification emails, and refactored the email sending logic to use these templates and support language selection based on user country code. Updated related services and API endpoints to pass country code and handle new response formats. Added dependencies for Jinja2 and MailerSend.
2025-10-12 00:36:47 +08:00
2025-08-26 13:18:11 +08:00
2025-09-17 01:01:33 +08:00

g0v0-server

Python 3.12+ ruff CodeFactor pre-commit.ci status license discord

简体中文 | English

This is an osu! API server implemented with FastAPI + MySQL + Redis, supporting most features of osu! API v1, v2, and osu!lazer.

Features

  • OAuth 2.0 Authentication: Supports password and refresh token flows.
  • User Data Management: Complete user information, statistics, achievements, etc.
  • Multi-game Mode Support: osu! (RX, AP), taiko (RX), catch (RX), mania.
  • Database Persistence: MySQL for storing user data.
  • Cache Support: Redis for caching tokens and session information.
  • Multiple Storage Backends: Supports local storage, Cloudflare R2, and AWS S3.
  • Containerized Deployment: Docker and Docker Compose support.

Quick Start

  1. Clone the project

    git clone https://github.com/GooGuTeam/g0v0-server.git
    cd g0v0-server
    
  2. Create a .env file

    Please see wiki to modify the .env file.

    cp .env.example .env
    
  3. Start the service

    # Standard server
    docker-compose -f docker-compose.yml up -d
    # Enable osu!RX and osu!AP statistics (Gu pp algorithm based on ppy-sb pp algorithm)
    docker-compose -f docker-compose-osurx.yml up -d
    
  4. Connect to the server from the game

    Use a custom osu!lazer client, or use LazerAuthlibInjection, and change the server settings to the server's address.

Updating the Database

Refer to the Database Migration Guide

Security

Use openssl rand -hex 32 to generate the JWT secret key to ensure the security of the server and the normal operation of the observer server.

Use openssl rand -hex 40 to generate the frontend secret key.

If it is in a public network environment, please block external requests to the /_lio path.

Documentation

Visit the wiki for more information.

License

This project is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0-only).
Any derivative work, modification, or deployment MUST clearly and prominently attribute the original authors:
GooGuTeam - https://github.com/GooGuTeam/g0v0-server

Contributing

The project is currently in a state of rapid iteration. Issues and Pull Requests are welcome!

See Contributing Guide for more information.

Discussion

Description
No description provided
Readme AGPL-3.0 3.6 MiB
Languages
Python 99%
HTML 0.6%
Shell 0.2%
Dockerfile 0.1%
Mako 0.1%