两边(沙盒与 Mac)用同一套环境,版本以本表为准。Rust 版本另由仓根
rust-toolchain.toml 钉死,rustup 会自动用该版本。
| 工具 | 版本(实测) | 用途 | 安装 |
|---|---|---|---|
| Rust(rustc + cargo) | 1.98.1 | tool/ 与 server/ 构建、测试 |
rustup 装 1.98.1(见 rust-toolchain.toml) |
| Node.js + npm | 24.22.1 + 10.9.4 | server/web/ 前端开发、构建 |
Node 官网 LTS 24 或 nvm 装 24 |
| JDK(Temurin) | 21.0.12.1 LTS | Java 演示与 JNA 示例编译、运行 | Temurin 21 |
| JNA | 5.14.0 | JNA 示例(tool/native/java/) |
Maven Central 下 jna-5.14.0.jar |
| Python 3 | 3.12.3 | 文档生成器(pygments + markdown)与测试脚本 | 系统自带或官网装 3.12 |
| Git | 2.43.0 | 仓库操作 | 系统自带或官网装 |
本仓不需要 Go 与 ARM 交叉工具链(那是 gateway 固件用的)。
tool/:sign-tool(签名打包库 + 命令行 + 原生库)。server/:sign-server(Rust 接口服务)+ server/web/(管理台前端,React + Next.js)。docs/:包格式、测试流程与本文档。后端(仓根):
cargo build --release --workspace
PORT=3009 SIGN_SERVER_DATA_DIR=<数据目录> \
SIGN_SERVER_SIGNING_SEED_FILE=<种子文件> \
SIGN_SERVER_ADMIN_PASSWORD_FILE=<密码文件> \
./target/release/sign-server
服务只绑本机 127.0.0.1,不直接暴露公网。
前端(server/web/):
npm install
npm run dev
开发服务默认 3000 端口,经 next.config.js 的 rewrites 代理到 3009
(浏览器同源,会话 Cookie 直接可用,不用配跨域)。生产构建:
npm run build
npm run start -- -p 3000
生产部署(以后上服务器时):web 端放 OpenResty 里面,直接出静态(见 docs/openresty-deployment.md)。npm run start 只用于本地验证生产构建。
注意:target、node_modules、.next 这类构建目录不进仓库,推送工具自动跳过(不用手动删;推后重拉验证时确认它们没上去)。
-Djava.net.preferIPv4Stack=true(Mac 不用)。http_proxy / https_proxy 已预置,npm 与 curl 直接可用);
沙盒 /tmp 会被清理,工作目录放持久盘;沙盒 apt 基本不可用,工具用官方压缩包解压。/root/.ssh/config(不是 /home/hatch/.ssh/config);沙盒重置后从持久盘恢复。rustc --version && cargo --version && node --version && npm --version \
&& python3 --version && java -version && git --version