Constella 的后端服务,负责认证、房间与权限、资源管理、局域网发现发布,以及 Yjs 协作中继。
- 当前后端版本:
1.0.1
- Node.js:
22.12.0(适用于独立服务器部署;Electron 桌面应用捆绑了自己的 Node 运行环境) - npm:
>=9
Note
从 v1.0.0 开始,已移除 pkg/exe 打包路径。
请以 JS 运行时方式发布:dist/ + config/ + 生产依赖,并在目标机器安装 Node.js。
- Express API 服务,统一前缀
/api/v1 - 健康检查与 discovery 元数据
- 认证能力:注册、登录、refresh token
- 房间能力:创建/列表/详情/加入/邀请/权限更新/删除
- 资源能力:房间内上传、列表、删除
- Yjs WebSocket 协作中继(与主服务同进程)
- 房间 relay token 生成与校验
- Bonjour/mDNS 局域网发现发布
- 数据维护任务(快照、token、孤立资源清理)
- 业务数据库:
memory或sqlite - Yjs 持久化:
leveldb或memory
- HTTP 基础地址:
http://<host>:<port>/api/v1 - 健康检查:
GET /api/v1/health - Yjs WebSocket 默认路径:
/ws
服务配置按以下顺序加载:
config/default.yamlconfig/{NODE_ENV}.yaml(存在时)- 环境变量覆盖配置文件值
为避免默认密钥导致令牌伪造风险,服务端已不再使用硬编码 JWT 默认值。
JWT 密钥优先级如下:
- 环境变量
JWT_SECRET - YAML 配置中的
jwt.secret - 用户本地运行时配置文件
config.local.yaml - 若以上都不存在或不安全:首次启动自动生成随机密钥并写入用户目录
Windows 下默认写入路径:
%APPDATA%/Roaming/Constella/config.local.yaml
可通过环境变量 CONSTELLA_USER_CONFIG_DIR 自定义本地配置目录。
注意事项:
- 生产环境如果无法写入本地配置且又未提供有效密钥,服务会启动失败(Fail Fast)。
your_jwt_secret_key、your_jwt_secret_key_change_in_production等占位符会被视为不安全并拒绝使用。- 测试环境(
NODE_ENV=test)仍允许测试密钥,避免影响自动化测试。
cd server
npm install
npm run devnpm run build
npm run start:prod或直接:
node dist/server.js当前仓库 docker-compose.yml 提供单个 core 服务:
docker compose up -dnpm run dev:开发模式npm run dev:sqlite:开发模式(sqlite)npm run build:编译到dist/npm run start:启动编译产物npm run start:prod:生产模式启动
MIT