Repository navigation
Installation
dxx114514-stack edited this page Oct 5, 2026
·
5 revisions
| 依赖 | 版本要求 | 用途 |
|---|---|---|
| Node.js | >= 24.x(需内置 node:sqlite) |
运行后端服务,内置 SQLite 引擎 |
| MinGW64 | 任意版本 | C/C++ 编译(必需) |
| Python 3 | 任意版本 | Python 代码执行(可选) |
| JDK | 任意版本 | Java 编译和执行(可选) |
| 操作系统 | Windows 10 及以上 | 主要支持平台(Node 24 官方构建最低 Win10;沙箱运行器最低 Win8+,整体以 Node 要求为准) |
| Git | 任意版本 | 拉取代码与更新 |
| Ollama | 任意版本 | AI 代码安全审查/AI 提示(可选,建议加载 qwen3:1.7b) |
- 自行下载并安装以上依赖(Node.js、MinGW64、Git,其余按需)。
- 找到你想安装到的目录,在此处打开 cmd。
- 克隆仓库:
git clone https://github.com/dxxjudges/NoldOJ.git
- 进入目录运行
start.bat即可启动。脚本每次启动会依次:git pull --ff-only拉取更新(git 与.git存在时)→ 迁移problems/→ 重新编译沙箱运行器 → 依赖缺失时自动npm install→ 启动服务并打开浏览器。
首次启动自动迁移 problems/ 目录:若根目录存在 problems/ 且 backend/data/problems/ 不存在,start.bat 会自动将其移动到 backend/data/problems/,使测试数据与数据库同级,便于整体备份。
首次启动自动初始化:
- 创建 SQLite 库
backend/data/NoldOJ.db并执行全部 schema 迁移; - 创建默认管理员
admin,初始密码为随机口令,仅在启动日志log/<时间戳>/server.log中显示一次(start.bat把服务输出全部重定向到该文件,控制台窗口只显示 bat 自身提示,启动时会打印日志目录路径)——请到该日志中取初始密码,登录后立即修改; -
config/jwt.txt缺失时自动生成强随机 JWT 密钥; -
sandbox_runner.exe每次启动都会从sandbox_runner.cpp重新编译(需要 g++;g++ 不可用时沿用已有 exe,既无 g++ 又无 exe 时 Windows 判题会 fail-closed 拒绝执行并在日志中 WARN,显式NoldOJ_ALLOW_NO_SANDBOX=1才回退传统模式)。
| 脚本 | 作用 |
|---|---|
start.bat |
一键启动(推荐)。自动 git pull --ff-only 更新、problems/ 目录迁移、沙箱运行器每次重新编译、依赖缺失时自动 npm install;服务全部输出写入 log/<时间戳>/server.log(初始密码、报错都在这里) |
stop.bat |
停止服务:仅杀掉监听 3000 端口的 node 进程,不会误伤其他服务 |
st.bat |
启动服务 + Cloudflare Tunnel(cloudflared.exe tunnel --config tuncfg.yml run noldoj),按启动时间戳在 log/ 下分别写 tunnel.log 与服务日志 |
sp.bat |
停止 Cloudflare Tunnel 并执行 stop.bat
|
端口默认
3000,可用环境变量PORT覆盖(或改backend/config/config.js;stop.bat只杀监听 3000 的进程)。管理员操作审计日志另存为log/admin.log(平铺文件,不进时间戳目录;设OJ_LOG_DIR时写该目录)。运行日志按启动时间戳存放在log/目录(已被.gitignore忽略)。
git pull
cd backend
npm install再运行 start.bat。启动时 initDB() 会自动执行新增的 schema 迁移,无需手工改库。
删除 NoldOJ 整个目录,再到「设置 → 应用」中卸载安装过的依赖项(Node.js / MinGW64 等)。
- 本项目基于 Windows 原生 Job Objects 实现沙箱隔离,请勿以公网暴露形式运行在存有核心机密的个人主力机上,建议部署在虚拟机或专用测试机。
- 生产环境保持
CORS_RESTRICTED=true(默认),保持config/ai.txt的SECURITY_ENABLED等 AI 开关按需开启。 - 数据备份:停服后整体备份
backend/data/(含NoldOJ.db与problems/测试数据),详见 数据库。
NoldOJ · Windows 在线评测系统 · MIT License