Repository navigation
Configuration
dxx114514-stack edited this page Oct 5, 2026
·
5 revisions
配置以 config/ 目录下的配置文件为主;另有一批环境变量可用于覆盖部署行为(端口、路径、代理等,见文末「环境变量」)。测试/CI 专用变量亦见文末。
配置示例:仓库
example-config/目录提供ai.txt / cors.txt / email.txt / register.txt四个示例(含字段说明与默认值),可直接:copy example-config\* config\
config/已在.gitignore中忽略,不会提交密钥到仓库。
三个功能各自独立开关,可分别指向不同 AI 服务;HINT_*、TESTDATA_* 未配置的 URL/MODEL/KEY 自动回退到同名 SECURITY_* 的值。
CODE_LENGTH_LIMIT=131072
SECURITY_ENABLED=false
SECURITY_URL=http://localhost:11434/api/chat
SECURITY_MODEL=qwen3:1.7b
SECURITY_KEY=
HINT_ENABLED=false
HINT_URL=
HINT_MODEL=
HINT_KEY=
TESTDATA_ENABLED=false
TESTDATA_URL=
TESTDATA_MODEL=
TESTDATA_KEY=
| 配置项 | 默认值 | 说明 |
|---|---|---|
CODE_LENGTH_LIMIT |
131072 |
源代码最大字符数(128KB),超出直接拒绝 |
SECURITY_ENABLED |
false |
是否启用 AI 代码安全审查(反作弊/危险代码检测) |
SECURITY_URL |
http://localhost:11434/api/chat |
AI 服务地址(Ollama 或任意 OpenAI 兼容 /api/chat 接口) |
SECURITY_MODEL |
qwen3:1.7b |
审查模型名称 |
SECURITY_KEY |
空 | API Key(仅远程端点需鉴权时填写) |
HINT_ENABLED |
false |
是否启用 AI 提示(学生失败后思路引导,POST /problems/:id/hint) |
HINT_URL / HINT_MODEL / HINT_KEY
|
空(回退 SECURITY_*) |
AI 提示的独立服务配置 |
TESTDATA_ENABLED |
false |
是否启用 AI 测试数据生成(教师一键生成测试点) |
TESTDATA_URL / TESTDATA_MODEL / TESTDATA_KEY
|
空(回退 SECURITY_*) |
测试数据生成的独立服务配置 |
EMAIL_ENABLED=false
RESEND_API_KEY=
EMAIL_FROM=onboarding@resend.dev
| 配置项 | 默认值 | 说明 |
|---|---|---|
EMAIL_ENABLED |
false |
是否启用邮箱功能(注册验证、密码找回) |
RESEND_API_KEY |
空 | Resend API Key;填入有效 Key(非占位值)时自动置 EMAIL_ENABLED=true,无需另设开关 |
EMAIL_FROM |
onboarding@resend.dev |
发件人地址 |
CORS_RESTRICTED=true
| 配置项 | 默认值 | 说明 |
|---|---|---|
CORS_RESTRICTED |
true |
true:仅允许白名单源携带凭据访问 API;false:放开限制(反射任意 Origin),供 @[url](URL) 内嵌的外部网页跨源调用 OJ API。放开后凭据仍受 SameSite=strict Cookie + localStorage Token 双重保护。设为 false 时启动日志会 WARN
|
文件中除 CORS_RESTRICTED= 外的其余非注释行逐行为白名单源(如 https://example.com,尾部 / 自动去除);内置白名单始终包含 http://localhost(:3000) 与 http://127.0.0.1(:3000)。
REGISTER_ENABLED=true
| 配置项 | 默认值 | 说明 |
|---|---|---|
REGISTER_ENABLED |
true |
true:开放访客自行注册;false:仅超级管理员创建账号 |
也可在管理面板(仅超管)直接热切换,无需重启。
以下文件无需手动配置,config/ 缺失时自动采用默认值:
| 文件 | 行为 |
|---|---|
jwt.txt |
首次启动自动生成强随机密钥 |
captcha.txt |
缺失时默认开启验证码(CAPTCHA_ENABLED=true;设为 false 关闭) |
register.txt |
缺失时默认开放注册 |
judge.txt |
缺失时 MAX_THREADS 默认 (CPU 核数 + 1) / 2(最小 1),可被环境变量 NoldOJ_JUDGE_THREADS 覆盖 |
security.txt |
缺失时 CONTACT= 默认回退仓库地址(用于 /.well-known/security.txt 联系方式) |
| 配置项 | 默认值 | 说明 |
|---|---|---|
port |
3000 |
服务器端口 |
jwt.accessSecret |
内置默认值 | Access Token 签名密钥 |
jwt.refreshSecret |
内置默认值 | Refresh Token 签名密钥 |
jwt.accessExpiry |
15m |
Access Token 过期时间 |
jwt.refreshExpiry |
7d |
Refresh Token 过期时间 |
database.path |
../data/NoldOJ.db |
SQLite 数据库路径 |
sandbox.tempDir |
系统临时目录 | 沙箱工作目录 |
sandbox.maxOutputSize |
64KB |
单次运行最大输出 |
rateLimit.submissions |
10 次/分钟 | 提交频率限制 |
rateLimit.ideRun |
20 次/分钟 | IDE 运行频率限制 |
配置以 config/ 为主,但以下环境变量可覆盖部分行为(生产部署/运维常用):
| 环境变量 | 用途 |
|---|---|
PORT |
服务器端口(覆盖 config.js 的 port,默认 3000) |
DB_PATH |
覆盖 SQLite 数据库路径(测试隔离也用它) |
COOKIE_SECURE=true |
登录 Cookie 标记 Secure(HTTPS 生产环境应开启,本地 HTTP 保持关闭) |
SANDBOX_TEMP |
沙箱工作目录(默认系统临时目录下的 NoldOJ-sandbox) |
NoldOJ_PROBLEMS_DIR |
题目测试数据目录(默认 backend/data/problems) |
NoldOJ_JUDGE_THREADS |
判题并发数(覆盖 judge.txt 与默认值) |
TRUST_PROXY=1 |
位于反向代理后时信任 X-Forwarded-For(默认不信任,防伪造) |
OJ_LOG_DIR |
日志根目录(start.bat/st.bat 据此定位时间戳日志目录;管理员操作日志写入 admin.log) |
NoldOJ_ALLOW_NO_SANDBOX=1 |
Windows 缺 sandbox_runner.exe 时允许回退传统裸跑(不安全,仅限本地开发;默认 fail-closed 拒绝判题) |
NoldOJ_ROOT / NoldOJ_EXEC_MODE / NoldOJ_NO_APPCONTAINER 等 |
沙箱诊断/行为开关,详见 判题与沙箱 与 docs/support.html
|
仅测试/CI 使用(生产严禁设置):
| 环境变量 | 用途 |
|---|---|
NoldOJ_CAPTCHA_DEBUG=1 |
让验证码接口返回 code 供黑盒测试自动作答 |
NoldOJ_INIT_ADMIN_PASSWORD |
首次初始化时指定 admin 初始口令(默认随机、仅启动日志显示一次),CI 用 |
ADMIN_USER / ADMIN_PASS
|
黑盒测试登录凭据覆盖(默认 admin / admin123,仅 security.test.js 读取) |
BASE |
黑盒测试目标地址覆盖(默认 http://localhost:3000) |
详见 测试与 CI。
NoldOJ · Windows 在线评测系统 · MIT License