Skip to content

πŸŒ… Sunrise - osu! private server written in C#

License

Notifications You must be signed in to change notification settings

SunriseCommunity/Sunrise

Repository files navigation

πŸŒ… Sunrise - osu! private server

Artwork made by torekka. We don't own the rights to this image.

Sunrise is a private server for osu! written in C#. This repository has both endpoints for game-client and for the website. The server is currently in development and is not yet ready for public use.

Note

Why C#? :shipit: Well, because owner of this project has allergies to non-typed languages. Sad, I know.

Features 🌟

Core features

  • Login and registration system
  • Score submission and leaderboards
  • Chat implementation
  • Chat Bot (as a replacement for Bancho Bot)
  • Multiplayer
  • !mp commands (mostly)
  • Server website (located at Sunset)
  • osu!Direct
  • Spectating

Additional features

  • Prometheus metrics with Grafana dashboard
  • Rate limiter for both internal and external requests
  • Redis caching for faster response times
  • Docker support

Important

The list of features is in priority order. The higher the feature is, the more important it is.

Installation πŸ“©

  1. Clone the repository
  2. Open the project in Visual Studio (or any other IDE)
  3. To set up development environment run:
    docker compose -f docker-compose.dev.yml up -d
  4. Run the project
  5. (Optional) If you want to connect to the server locally, please refer to the Local connection βš™οΈ section.

Local connection βš™οΈ

If you want to connect to the server locally, follow these steps:

  1. Add a launch argument -devserver sunrise.local to your osu! shortcut.

  2. Open the hosts file located in C:\Windows\System32\drivers\etc\hosts (C:\ is your system drive) with a text editor and add the following line:

    ... (rest of the file)
    
    # Sunrise Web Section
    127.0.0.1 sunrise.local
    127.0.0.1 api.sunrise.local
    # Sunrise osu! Section
    127.0.0.1 osu.sunrise.local
    127.0.0.1 a.sunrise.local
    127.0.0.1 c.sunrise.local
    127.0.0.1 assets.sunrise.local
    127.0.0.1 cho.sunrise.local
    127.0.0.1 assets.sunrise.local
    127.0.0.1 c4.sunrise.local
    127.0.0.1 b.sunrise.local

Warning

Don't forget to save the file after editing.

  1. Generate a self-signed certificate for the domain sunrise.local by running the following commands in the terminal:

    openssl req -x509 -newkey rsa:4096 -sha256 -days 3650 -nodes -keyout sunrise.local.key -out sunrise.local.crt -subj "/CN=sunrise.local" -addext "subjectAltName=DNS:sunrise.local,DNS:*.sunrise.local,IP:10.0.0.1"
  2. Convert the certificate to the PKCS12 format (for ASP.Net) by running the following command in the terminal:

    openssl pkcs12 -export -out sunrise.local.pfx -inkey sunrise.local.key -in sunrise.local.crt -password pass:password
  3. Import the certificate to the Trusted Root Certification Authorities store by running the following command in the terminal:

    certutil -addstore -f "ROOT" sunrise.local.crt
  4. Run the server and navigate to https://sunrise.local/swagger/index.html to check if the server is running.

API Endpoints πŸ›œ

Locally

All endpoints can be checked after running the server locally by navigating to https://{your-domain}/swagger/index.html.

Server

In the near future, the server will be hosted on a domain and the API documentation will be available there.

Dependencies πŸ“¦

Contributing πŸ’–

If you want to contribute to the project, feel free to fork the repository and submit a pull request. We are open to any suggestions and improvements.