Skip to content
dxx114514-stack edited this page Oct 17, 2026 · 8 revisions

NoldOJ

NoldOJ 是一个基于 Windows 原生沙箱(Job Object + 受限令牌 + 低完整性级别)的轻量级在线评测系统(Online Judge),前端全中文、支持 Markdown + KaTeX 公式与黑夜模式,后端零外部数据库依赖(Node 内置 node:sqlite)。

当前版本 v2.1.0 · 许可证 MIT · 主要支持平台 Windows 10+

亮点

  • 原生三层安全沙箱:不依赖 Sandboxie,编译/运行通过 sandbox_runner.exe(Job Object 内存/CPU 限制 + 受限令牌 + Low IL)隔离;Windows 缺沙箱时默认 fail-closed 拒绝判题(显式 NoldOJ_ALLOW_NO_SANDBOX=1 才回退传统模式,不安全)
  • 完整判题体系:子任务分组、自定义计分脚本、特殊测试(SPJ)、重测、多文件提交、WebSocket 实时评测推送
  • 比赛系统:邀请制、排行榜封榜/解冻、虚拟参赛、比赛一键查重
  • 教学工具:题目/测试点管理、AI 测试数据生成、题单训练计划、试卷系统(选择/判断/填空/大题,支持 AI 评分与 Excel 导入)、代码查重、文章与公告
  • AI 能力(可选,Ollama / OpenAI 兼容接口):代码安全审查、AI 提示(AI Hint)、主观题 AI 评分
  • 安全基线:自绘 SVG 验证码(一次性)、JWT 双令牌、CSP/CORS、限流、提交锁、封禁全链路拦截、注册开关

快速开始

git clone https://github.com/dxxjudges/NoldOJ.git
cd NoldOJ
start.bat

首次启动会在启动日志中打印一次随机生成的 admin 初始密码(路径 log/<时间戳>/server.log,start.bat 启动时会显示日志目录;服务输出不显示在控制台窗口),登录后请立即修改。start.bat 每次启动还会自动 git pull --ff-only 拉取更新、依赖缺失时自动 npm install、重新编译沙箱运行器。详细步骤见 安装部署。

环境要求

依赖 要求
Node.js >= 24.x(内置 node:sqlite)
MinGW64 任意版本(C/C++ 编译,必需)
Python 3 / JDK 任意版本(可选)
操作系统 Windows 10 及以上
Ollama 任意版本(可选,AI 功能,建议 qwen3:1.7b)

文档导航

页面 内容
安装部署 环境要求、安装/更新/卸载、启动脚本
配置说明 config/ 外部配置与核心配置项
使用指南 四级角色权限、各角色功能、用户组与可见性、用户组成员 Excel 批量导入(仅超管,含自动注册)、Markdown 增强语法
判题与沙箱 判题流程、沙箱架构、子任务与计分脚本
API 文档 /api/v1 模块总览、认证与错误格式、用户组与实体可见性端点、用户组成员批量导入端点
数据库 SQLite 位置、自动迁移、组与可见性表结构与触发器、备份与 sql.js 迁移
测试与 CI npm test / test:server / GitHub Actions
开发指南 项目结构、代码规范、贡献流程
常见问题 安装、判题、AI、Markdown 等 FAQ
更新日志 v1.1.0 → v2.1.0 版本历史

相关链接

Clone this wiki locally