5.3 KiB
UniDesk Configuration Reference
根目录 config.json 是 UniDesk CLI 的唯一配置来源。CLI 启动时必须完整校验配置结构,读取失败或字段不合法时直接返回 JSON 错误,不允许静默 fallback。
Runtime
TypeScript 运行时固定为 Bun。根目录 CLI、backend-core、frontend 和 provider-gateway 都直接运行 .ts 入口;Docker 镜像使用 oven/bun 基础镜像,本机命令使用 bun scripts/cli.ts。
Network Ports
config.json 中保留 core、frontend、database 和 providerIngress 的端口字段。frontend 与 providerIngress 是面向浏览器/Provider 的公开入口;core 不允许映射公网。database 的 port 字段用于 D601 Code Queue 的受限 PostgreSQL 端口映射和公网阻断测试,必须配合 network.restrictedHostAccess 的来源白名单限制到 D601 出口地址,不能作为任意公网数据库入口。
Auth
auth.username 和 auth.password 是 frontend 登录凭据,默认值分别为 admin 和 Liang6516.。auth.sessionSecret 用于签名 frontend HttpOnly Cookie,auth.sessionTtlSeconds 控制登录会话有效期;修改后必须重新启动 Docker 栈以刷新派生环境变量。
Provider Gateway Metrics And Upgrade
providerGateway.metrics.diskPath 指定主 server 本机 provider 的硬盘采样路径,默认是 /。providerGateway.upgrade 定义主 server provider 远程升级所需的 Compose project、service、仓库挂载路径、派生 env 文件和 updater runner 镜像;这些字段由 CLI 写入 .state/docker-compose.env,主 server Compose 仍保持显式配置。外部计算节点可以使用 provider attach 的简化 env:只写 UNIDESK_MASTER_SERVER 与 PROVIDER_ID,provider-gateway 会派生公网 provider ingress URL、默认 labels、心跳、Docker socket、监控路径和升级 Compose 名称,并通过 Docker inspect 反查 /workspace 的宿主挂载源;显式 PROVIDER_* 环境变量仍优先级最高。远程升级没有 enabled 开关,长期接入节点必须具备 mode: "schedule" 一键升级能力;如果节点不满足升级前置条件,应修正 Docker socket、仓库挂载或显式覆盖 PROVIDER_UPGRADE_*,而不是在配置中禁用升级。
SSH Forwarding
sshForwarding 定义 provider-gateway 维护专用 Host SSH / WSL SSH 桥的显式配置。CLI 会把 sshForwarding.keyDir 写入 .state/docker-compose.env 的 UNIDESK_HOST_SSH_KEY_DIR,Compose 将该目录只读挂载到 provider-gateway 的 /run/host-ssh,并把 sshForwarding.host、sshForwarding.port、sshForwarding.user 映射为 HOST_SSH_HOST、HOST_SSH_PORT、HOST_SSH_USER。目录中必须存在 id_ed25519 私钥且权限收紧,provider-gateway 才会把 hostSshKeyPresent 上报为 true,并允许 host.ssh 维护探测;该桥只用于故障诊断和 WSL 维护,不替代 Docker socket 调度。
User Services
microservices 定义挂载在计算节点或主 server Docker 中的非核心用户服务。用户服务是挂在 UniDesk 核心服务上的用户业务能力,缺少这些服务时 UniDesk 核心仍必须能运行。该数组只保存业务仓库 URL、commit id、业务仓库自身 Dockerfile/docker-compose 引用、provider 映射、节点后端端口和 UniDesk frontend 集成入口;不得把业务全量代码复制进 UniDesk。backend.public 必须为 false,backend.frontendOnly 必须为 true,backend.allowedPathPrefixes 必须限制到业务 API 前缀,backend.allowedMethods 必须显式列出允许代理的 HTTP 方法;浏览器只能通过 frontend 同源代理访问这些后端。详细规则见 docs/reference/microservices.md。
主 server 承载的 Todo Note 用户服务使用 providerId=main-server、nodeBaseUrl=http://todo-note:4211 和 allowedMethods=["GET","HEAD","POST","DELETE"],数据库使用主 PostgreSQL;Code Queue 使用 deployment.mode=v3sctl-managed、backend.proxyMode=v3sctl-adapter-http 和 nodeBaseUrl=v3s://code-queue,只允许通过 frontend/backend-core -> v3sctl-adapter -> Kubernetes API service proxy -> v3s/k8s Service 单一路径访问,不能配置业务容器直连、NodePort 或 provider-gateway direct path;D601 的 FindJob 只允许 GET/HEAD 展示型读取路径;D601 的 Pipeline 允许 GET/HEAD/POST,其中 POST 只用于 Pipeline 后端 /api/node-control/... 的 append prompt、guide 和 redo/restart 等受控 node 操作。
Compose Env Generation
Docker Compose 本身不读取 JSON,因此 CLI 会从 config.json 生成 .state/docker-compose.env。该文件是派生状态,不应手写;如需改常规端口、token、provider 标签、登录凭据或主机名,应修改 config.json 后重新运行 CLI。network.restrictedHostAccess.bindHost 派生出 UNIDESK_DATABASE_BIND_HOST 和 UNIDESK_OA_EVENT_FLOW_BIND_HOST,allowedSourceCidrs 由 server start/rebuild 写入 DOCKER-USER 来源白名单;将 bind host 设为 0.0.0.0 时 allowedSourceCidrs 不能为空。CLI 会在保留当前日志前缀的同时刷新新增配置键,避免旧 env 文件遗漏字段。
Secrets
当前配置面向主 server 开发部署,包含开发用数据库密码、provider token 和默认登录密码。公网长期运行前必须在 config.json 中修改这些值,并重新启动栈以刷新派生环境文件。