Skip to content

SunriseCommunity/Sunrise

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸŒ… Sunrise - osu! private server

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

License GitHub stars

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

Want to help? Have a question? :shipit: Feel free then to join our Discord server, there you can ask any question to maintainers of this project!

πŸ–ΌοΈ Preview


Important

Read me if you were self-hosting Sunrsie before the Solar System monorepo move (January 6, 2026)

Due to move to the Solar System monorepo we made almost non-compatible changes to the Sunrise.

One of the biggest changes is the way we handle configuration - we moved from appsettings.json to .env file for environment variables. Please refer to our upgrade guide to .env variables to help you with the migration.

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)
  • Support for non-standard gamemodes (e.g. Relax, Autopilot, ScoreV2)
  • Custom beatmap status system
  • osu!Direct
  • Spectating
  • Beatmap hype system
  • Achievements (Medals)
  • Rank snapshots
  • Ability to upload custom server backgrounds

Additional features

  • Automated tests (unit and integration)
  • Telemetry system with Prometheus, Loki and Tempo
  • Rate limiter for both internal and external requests
  • Redis caching for faster response times
  • Docker support
  • Database migrations
  • Database backups

Important

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

Standalone installation with self-signed certificate (Docker) 🐳

  1. Clone the repository
  2. Open the project's folder in any CLI environment.
  3. Set up production environment
    • Create the file Sunrise.Server/appsettings.Production.json and fill it following the Sunrise.Server/appsettings.Production.json.example example.

      cp Sunrise.Server/appsettings.Production.json.example Sunrise.Server/appsettings.Production.json
    • Set the environment variables in the .env file.

      cp .env.example .env

Warning

Make sure to update WEB_DOMAIN and API_TOKEN_SECRET values!

  1. Set up the beatmap manager by following the instructions in the Observatory repository. After setting up the beatmap manager, you need to set the General:ObservatoryUrl in the Sunrise.Server/appsettings.Production.json file to the address of the beatmap manager.
    • NB: Make sure that the PORT is defined properly (sunrise checks port 3333 by default) and POSTGRES_PORT value doesn't conflict with other PC ports.
  2. ⚠️ Please create sunrise.pfx file and move it to Sunrise/sunrise.pfx folder, for more instructions follow Local connection βš™οΈ.
  3. Start server by running:
    docker compose -f docker-compose.yml up -d
  4. (Optional) If you want to connect to the server locally, please refer to the Local connection βš™οΈ section.

Tip

Your final docker setup should look like this:

image (3)

Development installation βš’οΈ

  1. Clone the repository
  2. Open the project's folder in any CLI environment.
  3. Set up development environment by running:
    docker compose -f docker-compose.dev.yml up -d
  4. Set up the beatmap manager by following the instructions in the Observatory repository. After setting up the beatmap manager, you need to set the General:ObservatoryUrl in the Sunrise.Server/appsettings.{Your Environment}.json file to the address of the beatmap manager.
    • NB: Make sure that the PORT is defined properly (sunrise checks port 3333 by default) and POSTGRES_PORT value doesn't conflict with other PC ports.
  5. ⚠️ Please create sunrise.pfx file and move it to Sunrise/sunrise.pfx folder, for more instructions follow Local connection βš™οΈ.
  6. Run the project
  7. (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 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.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. Move the generated sunrise.pfx file to the Sunrise directory.

  5. Run the server and navigate to https://api.sunrise.local/docs to check if the server is running.

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.