A mostly feature complete implementation of osu!bancho
  • TypeScript 99.2%
  • HTML 0.8%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-03-01 23:24:16 +03:00
.github/workflows Update node.js.yml 2023-09-10 13:17:33 +01:00
server Switched to pnpm, bumped dependencies, fixed types 2026-02-27 15:30:52 +03:00
tooling Switched to pnpm, bumped dependencies, fixed types 2026-02-27 15:30:52 +03:00
web Switched to pnpm, bumped dependencies, fixed types 2026-02-27 15:30:52 +03:00
.gitignore fix everything 2023-09-10 12:59:22 +01:00
Binato.ts Switched to pnpm, bumped dependencies, fixed types 2026-02-27 15:30:52 +03:00
config.example.json Add example config and clean db dump 2023-09-10 19:07:52 +01:00
ConsoleHelper.ts Remove unneeded semicolons 2023-10-04 15:52:18 +01:00
Constants.ts fix everything 2023-09-10 12:59:22 +01:00
LICENSE.txt Re-add LICENSE 2023-09-12 15:11:34 +01:00
osu!.sql Deleted unused table 2026-03-01 23:24:16 +03:00
osuTyping.ts add type 2023-10-05 11:15:13 +01:00
package.json Switched to pnpm, bumped dependencies, fixed types 2026-02-27 15:30:52 +03:00
pnpm-lock.yaml Switched to pnpm, bumped dependencies, fixed types 2026-02-27 15:30:52 +03:00
README.md Switched to pnpm, bumped dependencies, fixed types 2026-02-27 15:30:52 +03:00
tsconfig.json progress 2023-08-20 13:03:01 +01:00

Binato CodeFactor Node.js CI

An implementation of osu!bancho in TypeScript

i'm sorry peppy


Features:

  • Multiplayer + Invites
  • Spectator
  • Tourney Client
  • User Panel
  • Friends List
  • Chat & Channels
  • Private Messages
  • Chat Bot (see commands folder)

Planned additions | List of currently known bugs


Setup:

While I don't support setting this up yourself it is fairly easy to do, all that should be required is:

  • NodeJS > 18
  • MariaDB
  • Optional (Opt-in via config):
    • Redis
    • Prometheus

Clone the repo and run pnpm i to install required packages, then copy config.example.json to config.json and edit to your liking (this is where http compression, prometheus and redis can be enabled/disabled)

After doing this running pnpm dev:run should start the server.

If you want to build something standalone you can run the build process using pnpm build.

Reporting bugs:

To report a bug create a new issue and include information such as your OS / Distro, Node version, disabled Binato features (e.g. Prometheus, Redis, compression) and console output at the time of the bug if applicable.


How to connect:

See Now (2022 - 2023) for the prefered way to connect now.

2013 - Stable Fallback (2015 / 2016 ?):

From 2013 to the Fallback client HTTP can be used, so for that you just need to direct it to the server
You can do this using the hosts file

Location on Linux: /etc/hosts
Location on Mac: /private/etc/hosts
Location on Windows: C:\Windows\system32\drivers\etc\hosts

Add an entry in the hosts file that looks like the following:

<server_ip> osu.ppy.sh c.ppy.sh c1.ppy.sh

Where <server_ip> is the IP Address of the server hosting the bancho server

2016 - Early 2021:

Versions of osu! past Stable Fallback use HTTPS and as such you'll have to create a self signed certificate and make the server identify as ppy.sh
In 2018 there were also new subdomains added which are:

  • c2.ppy.sh
  • c3.ppy.sh
  • c4.ppy.sh
  • c5.ppy.sh
  • c6.ppy.sh
  • ce.ppy.sh

Now (2022 - 2023):

There is a -devserver launch flag in the game which can be passed to the client to connect to a specific server. Example usage:

osu!.exe -devserver eusv.net

You need to have your subdomains structured like osu!'s with the exception of c*.ppy.sh domains. There is only one that is polled for -devserver usage.

An example setup would be:

  • osu.example.com (Score submit & web stuff)
  • c.example.com (Bancho)
  • a.example.com (Profile pictures)

In addition to all of this, your domain must have HTTPS. I recommend Cloudflare for this task.


Other Binato components:

Website:

Binato's website is handled by Binato-Website

Profile Pictures:

Profile pictures can be handled by any standard HTTP server, there is also one I made for the task here: Binato-ProfilePicture