Skip to content

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 中忽略,不会提交密钥到仓库。

config/ai.txt — AI 三项能力(安全审查 / AI 提示 / 测试数据生成)

三个功能各自独立开关,可分别指向不同 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_*) 测试数据生成的独立服务配置

config/email.txt — 邮件发送

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 发件人地址

config/cors.txt — 跨域访问

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)。

config/register.txt — 注册开关

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 联系方式)

核心配置(backend/config/config.js)

配置项 默认值 说明
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。

相关文档

Clone this wiki locally