配置生成器
手动填写 g0v0-server v1 的 .env 配置项,或 g0v0 server v2 的 config/*.json 配置项,并一键生成对应的配置文件。
整个生成过程完全在浏览器本地完成,你的配置(包括数据库密码、JWT 密钥等敏感信息)不会被上传到任何服务器。
在下方填写配置项——v1 的 `.env` 与 v2 的 `config/*.json` 都在浏览器本地生成,包括密码与密钥在内的所有内容都不会被上传。
g0v0-server v1 配置(.env)
所有选项都以 v1 的默认值开始,改动过的选项会被高亮。
生成的 .env
将内容保存为 `.env`,放到 g0v0-server v1 部署的根目录中。
# g0v0-server v1 configuration (.env)
# 数据库设置
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 设置
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 设置
OSU_CLIENT_ID=5
OSU_CLIENT_SECRET=FGc9GAtyHzeQDshWP5Ah7dega8hJACAJpQtw6OXk
OSU_WEB_CLIENT_ID=6
OSU_WEB_CLIENT_SECRET=your_osu_web_client_secret_here
# 服务器设置
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 设置
FETCHER_CLIENT_ID=
FETCHER_CLIENT_SECRET=
# 日志设置
LOG_LEVEL=INFO
# 验证服务设置
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_PROVIDER=smtp
EMAIL_PROVIDER_CONFIG=
FROM_EMAIL=noreply@example.com
FROM_NAME=osu! server
# 监控设置
SENTRY_DSN=
NEW_RELIC_ENVIRONMENT=
# GeoIP 配置
GEOIP_DEST_DIR=./geoip
GEOIP_UPDATE_DAY=1
GEOIP_UPDATE_HOUR=2
# 游戏设置
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=[]
# 表现计算设置
CALCULATOR=performance_server
CALCULATOR_CONFIG={"server_url":"http://localhost:5225"}
FALLBACK_NO_CALCULATOR_PP=false
# 缓存设置
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
# 资源代理设置
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
# 谱面同步设置
ENABLE_AUTO_BEATMAP_SYNC=false
BEATMAP_SYNC_INTERVAL_MINUTES=60
# 反作弊设置
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=local
STORAGE_SETTINGS={"local_storage_path":"./storage"}
ENABLE_SCREENSHOT_CLEANUP=false
SCREENSHOT_RETENTION_DAYS=30
SCREENSHOT_CLEANUP_BATCH_SIZE=200
# 插件设置
PLUGIN_DIRS=["./plugins"]
DISABLED_PLUGINS=[]
# 咕哦!v2 服务器设置
ENABLE_V2_IPC=true
使用方法
- 在页面顶部选择要生成的版本:「v1 配置(.env)」或「v2 配置(config/*.json)」。
- 展开分组并填写各项。所有选项都已预填默认值,改动过的选项会高亮显示。
- v1:如果已经有
.env,可以点击「导入 .env」把内容粘贴进来,直接在表单中修改。 - v2:只需填写需要调整的项,其余保持默认即可。
- v1:如果已经有
- 在页面底部的输出区域查看生成结果,点击「复制」「下载 .env」「下载」或「打包下载全部 (.zip)」保存。
注意事项
- v1 页面生成的
.env可以直接放到 g0v0-server v1 部署的根目录。生产环境请务必修改默认的密钥和密码。 - v2 页面生成的
general.json、game.json、realtime.json、chat.json、storage.json需要放入每个 v2 服务(例如g0v0.Server.Realtime)的config/目录。所有 v2 服务应共用同一份general.json与storage.json。 UseLegacyDatabase为true时继续使用 v1 的 MySQL 数据库;改为false时会使用PostgresqlConnectionString指向的 PostgreSQL 数据库。表单只显示当前所选数据库对应的配置项(生成的general.json中两者都会保留,方便随时切换)。chat.json是可选文件:不放入该文件时,所有聊天限制将使用来自 osu-web 的默认值。.env中各项的详细说明请参考配置;v2 各字段的说明请参考 v2 配置。
与配置转换器的区别
本页面用于手动填写并生成配置,适合从零开始部署或只想修改少数选项的场景。如果你已经有一份完整的v1 .env,希望自动转换出 v2 所需的全部配置文件,请使用配置转换器。