v2 Configurations
This page lists all configuration options available in the v2 services' config/*.json configuration files and their descriptions. For the v1 (.env) options, see Configurations.
Warning
In a production environment, be sure to change the default keys and passwords!
Documentation Contributor Tip
This page is auto-generated, and any changes will be overwritten. If you want to modify the translation, please edit data/v2-configuration/en.js. The field definitions (paths, types, defaults) live in the sibling data/v2-configuration/definitions/ directory — do not maintain them on this page. Click the "Edit this page on GitHub" link at the bottom left to jump directly to the editing page of the translation file.
general.json — general configuration
| Configuration | Description | Type | Default |
|---|---|---|---|
UseLegacyDatabase | Whether to use the v1 MySQL (legacy) database. When set to false, the PostgreSQL database from PostgresqlConnectionString is used. | boolean | true |
MySqlHost | MySQL Server Address | string | 127.0.0.1 |
MySqlPort | MySQL Server Port | string | 3306 |
MySqlDatabase | MySQL Database Name | string | osu_api |
MySqlUsername | MySQL Username | string | osu_api |
MySqlPassword | MySQL Password | string | password |
PostgresqlConnectionString | PostgreSQL connection string (used when UseLegacyDatabase is false). Format: Host=...;Port=...;Username=...;Password=...;Database=... | string | Host=localhost;Port=5432;Username=g0v0;Password=password;Database=g0v0 |
RedisHost | Redis Connection URL | string | localhost:6379 |
JwtSecretKey | JWT Signing Key | string | your_jwt_secret_here |
JwtAlgorithm | JWT Algorithm | string | HS256 |
JwtAudience | JWT Audience | string | 5 |
JwtIssuer | JWT Issuer | string | null |
OsuClientId | OAuth Client ID | integer | 5 |
OsuClientSecret | OAuth Client Secret | string | FGc9GAtyHzeQDshWP5Ah7dega8hJACAJpQtw6OXk |
OsuWebClientId | Web OAuth Client ID | integer | 6 |
OsuWebClientSecret | Web OAuth Client Secret | string | your_osu_web_client_secret_here |
FetcherClientId | Fetcher Client ID | integer | 0 |
FetcherClientSecret | Fetcher Client Secret | string | "" |
FetcherBeatmapRawCacheExpireHours | Beatmap Cache Expiration (Hours) | integer | 24 |
ServerUrl | Server URL | string | http://localhost:8000 |
game.json — gameplay feature flags
| Configuration | Description | Type | Default |
|---|---|---|---|
EnableRelax | Enable RX mod statistics | boolean | false |
EnableAutopilot | Enable AP mod statistics | boolean | false |
EnableAllBeatmapLeaderboard | Enable leaderboards for all beatmaps | boolean | false |
realtime.json — real-time game server configuration
| Configuration | Description | Type | Default |
|---|---|---|---|
SaveReplays | Whether to save replays | boolean | true |
ReplayUploaderConcurrency | Replay uploader concurrency | integer | 4 |
MaxStartedScores | Maximum concurrent started scores per session | integer | 2 |
HostPlaylistLimit | Maximum playlist items a host can add | integer | 50 |
GuestPlaylistLimit | Maximum playlist items a guest can add | integer | 3 |
MultiplayerDisconnectGracePeriod | How long a disconnected player is kept in a multiplayer room (hh:mm:ss). | string | 00:00:30 |
TournamentRoomRetentionPeriod | How long a tournament room is kept after it ends (hh:mm:ss) | string | 00:30:00 |
Sentry.Dsn | Sentry DSN; empty disables Sentry error monitoring | string | "" |
Sentry.Environment | Sentry environment tag (e.g. "production") | string | "" |
Sentry.TracesSampleRate | Sentry trace sample rate, 0–1 | float | 0.1 |
Sentry.SendDefaultPii | Whether to send default personal identifiable information (PII) to Sentry | boolean | false |
chat.json — chat configuration (optional)
Optional file: when it is not provided, chat configuration will fall back to the osu-web defaults.
| Configuration | Description | Type | Default |
|---|---|---|---|
ChannelLimit | Maximum channels a client can join. | integer | 10000 |
MessageLengthLimit | Maximum length of a single message. | integer | 450 |
AnnounceMessageLengthLimit | Maximum length of an announcement message. | integer | 1024 |
PublicBacklogLimitHours | How long public channel message history is kept (hours). | integer | 24 |
ActivityTimeoutSeconds | Channel activity timeout (seconds); channels idle past this are closed. | integer | 60 |
RecentMessageLimit | Recent messages attached to a channel when joining. | integer | 50 |
PublicMessageLimit | Public messages allowed per rate window. | integer | 1 |
PublicMessageWindowSeconds | Public rate window (seconds). | integer | 1 |
PrivateMessageLimit | Private messages allowed per rate window. | integer | 1 |
PrivateMessageWindowSeconds | Private rate window (seconds). | integer | 1 |
storage.json — storage configuration
Stores static assets such as replays and avatars.
| Configuration | Description | Type | Default |
|---|---|---|---|
Type | Storage Service Type: local, r2, s3 | enum(Local, S3, R2) | Local |
| Local storage | |||
local_storage_path | Local storage directory path | string | ./storage |
| Amazon S3 | |||
s3_access_key_id | AWS access key ID | string | "" |
s3_secret_access_key | AWS secret access key | string | "" |
s3_bucket_name | S3 bucket name | string | "" |
s3_region_name | S3 region, e.g. us-east-1 | string | us-east-1 |
s3_public_url_base | S3 public URL base (optional), used to build directly accessible asset URLs | string | "" |
| Cloudflare R2 | |||
r2_account_id | Cloudflare account ID | string | "" |
r2_access_key_id | R2 access key ID | string | "" |
r2_secret_access_key | R2 secret access key | string | "" |
r2_bucket_name | R2 bucket name | string | "" |
r2_public_url_base | R2 public URL base (optional), used to build directly accessible asset URLs | string | "" |