Skip to content

Requirements ​

For a production server ​

WhatWhy
A Linux machine (VM or dedicated)Everything runs in Docker. somtum.fun ran on a 4 vCPU / 8 GB VM, where TomYum itself used about 280 MB and under 3% CPU; MySQL and Elasticsearch need more than bancho does.
Docker with Docker Compose 2.26 or newerThe production compose file mounts single files out of volumes (volume subpaths), which needs 2.26+.
Disk spaceImages are rebuilt on every deploy. deploy.sh keeps Docker's build cache to 20 GB; budget for that plus the databases, replays and uploads.
A domainThe game uses many subdomains of it (c., osu., a., …). See Domains, DNS and Caddy.
A Cloudflare account (as shipped)The production stack is published through a Cloudflare Tunnel, so the machine needs no open web ports.
Git checkoutsTomYum-OSS, your osu-web fork and the spectator server, side by side (see production).

The compose file brings its own MySQL 8.4, Redis 7 and Elasticsearch 7.17 (given a 1 GB heap), so you don't install those yourself.

Optional ​

  • An osu! API v1 key (OSU_API_KEY): object counts, genre and language on beatmap pages, bulk imports by date. Without one, TomYum uses a keyless mirror.
  • An osu! API v2 OAuth app (OSU_CLIENT_ID, OSU_CLIENT_SECRET): beatmap descriptions and nominators on the website.
  • A mail server (SMTP) for the website: password resets, login codes, tickets.
  • A Discord bot token for the watchdog's alerts.

For trying it locally ​

Try it locally runs the whole stack on one PC:

  • Docker Desktop (with WSL 2 on Windows), given at least 6 GB RAM (Elasticsearch alone wants 1 GB).
  • Caddy for HTTPS on your machine.
  • Git.
  • Optional: the .NET 10 SDK, to build TomYum yourself or run its tests.

For working on TomYum itself ​

  • .NET SDK 10.0 (pinned in global.json).
  • MySQL (8.4 in the compose files) and Redis.
bash
git clone https://github.com/somtum-fun/TomYum-OSS.git
cd TomYum-OSS
dotnet restore TomYum.sln
dotnet build TomYum.sln     # warnings are errors
dotnet test TomYum.sln

The database tests are skipped unless TOMYUM_TEST_MYSQL (and TOMYUM_TEST_REDIS) point at a throwaway MySQL and Redis; Try it locally shows how.

TomYum is MIT licensed. Not affiliated with ppy Pty Ltd; osu! is a trademark of ppy Pty Ltd.