开发环境

两边(沙盒与 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 固件用的)。

仓内布局

启动(开发)

后端(仓根):

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 这类构建目录不进仓库,推送工具自动跳过(不用手动删;推后重拉验证时确认它们没上去)。

平台差异

版本核对

rustc --version && cargo --version && node --version && npm --version \
  && python3 --version && java -version && git --version