Skip to content

Config Generator ​

Fill in the .env options of g0v0-server v1 or the config/*.json options of g0v0 server v2 by hand and generate the matching configuration files in one click.

Everything is generated locally in your browser — your configuration (including database passwords, JWT secrets and other sensitive values) is never uploaded anywhere.

Fill in the options below — both the v1 `.env` and the v2 `config/*.json` files are generated locally in your browser, so nothing (including passwords and secrets) is uploaded anywhere.

g0v0-server v1 configuration (.env)

Every option starts from the v1 default value; highlighted fields were changed.

Generated .env

Save this as `.env` in the root directory of your g0v0-server v1 deployment.

# g0v0-server v1 configuration (.env)

# Database Settings
MYSQL_HOST=localhost
MYSQL_PORT=3306
MYSQL_DATABASE=osu_api
MYSQL_USER=osu_api
MYSQL_PASSWORD=password
MYSQL_ROOT_PASSWORD=password
REDIS_URL=redis://127.0.0.1:6379

# JWT Settings
JWT_SECRET_KEY=your_jwt_secret_here
JWT_ALGORITHM=HS256
ACCESS_TOKEN_EXPIRE_MINUTES=1440
REFRESH_TOKEN_EXPIRE_MINUTES=21600
JWT_AUDIENCE=5
JWT_ISSUER=

# OAuth Settings
OSU_CLIENT_ID=5
OSU_CLIENT_SECRET=FGc9GAtyHzeQDshWP5Ah7dega8hJACAJpQtw6OXk
OSU_WEB_CLIENT_ID=6
OSU_WEB_CLIENT_SECRET=your_osu_web_client_secret_here

# Server Settings
HOST=0.0.0.0
PORT=8000
DEBUG=false
CORS_URLS=[]
SERVER_URL=http://localhost:8000/
FRONTEND_URL=
ENABLE_RATE_LIMIT=true
TRUSTED_PROXIES=["127.0.0.0/8","::1/128","10.0.0.0/8","172.16.0.0/12","192.168.0.0/16","fc00::/7"]
TRUSTED_PROXY_SOURCES=[]
TRUSTED_PROXY_REFRESH_MINUTES=60

# Fetcher Settings
FETCHER_CLIENT_ID=
FETCHER_CLIENT_SECRET=

# Log Settings
LOG_LEVEL=INFO

# Verification Service Settings
ENABLE_TOTP_VERIFICATION=true
TOTP_ISSUER=
TOTP_SERVICE_NAME=g0v0! Lazer Server
TOTP_USE_USERNAME_IN_LABEL=true
ENABLE_TURNSTILE_VERIFICATION=false
TURNSTILE_SECRET_KEY=
TURNSTILE_DEV_MODE=false
ENABLE_EMAIL_VERIFICATION=false
ENABLE_SESSION_VERIFICATION=true
ENABLE_MULTI_DEVICE_LOGIN=true
MAX_TOKENS_PER_CLIENT=10
DEVICE_TRUST_DURATION_DAYS=30

# Email Service Settings
EMAIL_PROVIDER=smtp
EMAIL_PROVIDER_CONFIG=
FROM_EMAIL=noreply@example.com
FROM_NAME=osu! server

# Monitoring Settings
SENTRY_DSN=
NEW_RELIC_ENVIRONMENT=

# GeoIP Settings
GEOIP_DEST_DIR=./geoip
GEOIP_UPDATE_DAY=1
GEOIP_UPDATE_HOUR=2

# Game Settings
ENABLE_RX=false
ENABLE_AP=false
ENABLE_SUPPORTER_FOR_ALL_USERS=false
ENABLE_ALL_BEATMAP_LEADERBOARD=false
ENABLE_ALL_BEATMAP_PP=false
SEASONAL_BACKGROUNDS=[]
BEATMAP_TAG_TOP_COUNT=2
OLD_SCORE_PROCESSING_MODE=normal
SCORING_MODE=standardised
USE_OLD_SCORE_MULTIPLIER=false
DISABLE_SUBMISSION_MODS=[]

# Performance Calculation Settings
CALCULATOR=performance_server
CALCULATOR_CONFIG={"server_url":"http://localhost:5225"}
FALLBACK_NO_CALCULATOR_PP=false

# Cache Settings
ENABLE_BEATMAP_PRELOAD=true
BEATMAP_CACHE_EXPIRE_HOURS=24
BEATMAPSET_CACHE_EXPIRE_SECONDS=3600
ENABLE_RANKING_CACHE=true
RANKING_CACHE_EXPIRE_MINUTES=10
RANKING_CACHE_REFRESH_INTERVAL_MINUTES=10
RANKING_CACHE_MAX_PAGES=20
TOP_SCORE_CACHE_MAX_PAGES=3
RANKING_CACHE_TOP_COUNTRIES=20
ENABLE_USER_CACHE_PRELOAD=true
USER_CACHE_EXPIRE_SECONDS=300
USER_SCORES_CACHE_EXPIRE_SECONDS=60
USER_BEATMAPSETS_CACHE_EXPIRE_SECONDS=600
USER_CACHE_MAX_PRELOAD_USERS=200

# Asset Proxy Settings
ENABLE_ASSET_PROXY=false
CUSTOM_ASSET_DOMAIN=g0v0.top
ASSET_PROXY_PREFIX=assets-ppy
AVATAR_PROXY_PREFIX=a-ppy
BEATMAP_PROXY_PREFIX=b-ppy

# wiki
ENABLE_WIKI=true
WIKI_REPOSITORY=ppy/osu-wiki
WIKI_BRANCH=master
WIKI_CONTENT_ROOT=wiki
WIKI_RAW_BASE_URL=https://raw.githubusercontent.com
WIKI_LISTING_BASE_URL=https://api.github.com
WIKI_GITHUB_TOKEN=
WIKI_FALLBACK_LOCALE=en
WIKI_CACHE_EXPIRE_SECONDS=300
WIKI_RESOURCE_CACHE_EXPIRE_SECONDS=3600
WIKI_REQUEST_TIMEOUT_SECONDS=10

# content
ENABLE_CHANGELOG=true
ENABLE_NEWS=true
CONTENT_REPOSITORY=GooGuTeam/g0v0-news
CONTENT_BRANCH=main
CHANGELOG_CONTENT_ROOT=changelog
NEWS_CONTENT_ROOT=news
CONTENT_RAW_BASE_URL=https://raw.githubusercontent.com
CONTENT_LISTING_BASE_URL=https://api.github.com
CONTENT_GITHUB_TOKEN=
CONTENT_WEB_BASE_URL=https://github.com
CONTENT_CACHE_EXPIRE_SECONDS=300
CONTENT_LISTING_CACHE_EXPIRE_SECONDS=1800
CONTENT_INDEX_EXPIRE_SECONDS=600
CONTENT_REQUEST_TIMEOUT_SECONDS=10

# Beatmap Sync Settings
ENABLE_AUTO_BEATMAP_SYNC=false
BEATMAP_SYNC_INTERVAL_MINUTES=60

# Anti-Cheat Settings
BANNED_NAME=["mrekk","vaxei","btmc","cookiezi","peppy","saragi","chocomint"]
ALLOW_DELETE_SCORES=false
CHECK_RULESET_VERSION=true
CHECK_CLIENT_VERSION=true
CLIENT_VERSION_URLS=["https://raw.githubusercontent.com/GooGuTeam/g0v0-client-versions/main/version_list.json"]

# Storage Service Settings
STORAGE_SERVICE=local
STORAGE_SETTINGS={"local_storage_path":"./storage"}
ENABLE_SCREENSHOT_CLEANUP=false
SCREENSHOT_RETENTION_DAYS=30
SCREENSHOT_CLEANUP_BATCH_SIZE=200

# Plugin Settings
PLUGIN_DIRS=["./plugins"]
DISABLED_PLUGINS=[]

# g0v0! v2 Server Settings
ENABLE_V2_IPC=true

Usage ​

  1. Pick the version you want to generate at the top of the page: "v1 config (.env)" or "v2 config (config/*.json)".
  2. Expand the groups and fill in the options. Every option starts from its default value, and changed options are highlighted.
    • v1: if you already have a .env, click "Import .env", paste it and edit the values in the form.
    • v2: only adjust the options you care about and keep the rest as they are.
  3. Review the result in the output section at the bottom, then use "Copy", "Download .env", "Download" or "Download all (.zip)" to save it.

Notes ​

  • The .env generated by the v1 panel can be placed directly in the root directory of your g0v0-server v1 deployment. Always change the default secrets and passwords in production.
  • The general.json, game.json, realtime.json, chat.json and storage.json generated by the v2 panel belong in the config/ directory of every v2 service (e.g. g0v0.Server.Realtime). All v2 services should share the same general.json and storage.json.
  • When UseLegacyDatabase is true the v1 MySQL database is used; setting it to false switches to the PostgreSQL database described by PostgresqlConnectionString. The form only shows the options of the database that is in use (the generated general.json keeps both, so you can switch at any time).
  • chat.json is optional: when the file is absent every chat limit falls back to the osu-web default.
  • See Configurations for a description of every .env option, and v2 Configurations for the v2 fields.

Compared to the config converter ​

This page is for filling in and generating a configuration manually, which suits fresh deployments or small tweaks. If you already have a complete v1 .env and want all the v2 files converted automatically, use the Config Converter instead.

Released under the MIT License