Files
pikasTech-unidesk/docs/reference/config.md
T
2026-06-07 02:02:38 +00:00

38 lines
5.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# UniDesk Configuration Reference
根目录 `config.json` 是 UniDesk CLI 的唯一配置来源。CLI 启动时必须完整校验配置结构,读取失败或字段不合法时直接返回 JSON 错误,不允许静默 fallback。
## Runtime
TypeScript 运行时固定为 Bun for CLI, frontend, provider-gateway and TypeScript user services. backend-core is a Rust service; Rust build/check must follow the D601 boundary in `docs/reference/dev-environment.md`. 本机根 CLI 使用 `bun scripts/cli.ts <command>`SSH/WSL/k3s 透传使用 `trans <route> ...`
## Network Ports
`config.json` 中保留 core、frontend、devFrontend、database、providerIngress 和 providerData 的端口字段。frontend、devFrontend 与 providerIngress 是面向浏览器/Provider 的公开入口;providerData 是 `host.ssh.tcp-pool` 使用的数据面 TCP 端口,由 provider-gateway 主动连入 main server,默认主机端口为 `18084`、backend-core 容器端口为 `8082`。devFrontend 是 D601 `unidesk-dev` 的薄代理入口,权威规则见 `docs/reference/dev-environment.md`。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"]`,数据库使用主 PostgreSQLCode Queue 使用 `deployment.mode=k3sctl-managed``backend.proxyMode=k3sctl-adapter-http``nodeBaseUrl=k3s://code-queue`,只允许通过 frontend/backend-core -> `k3sctl-adapter` -> Kubernetes API service proxy -> k3s/k8s Service 单一路径访问,不能配置业务容器直连、NodePort 或 provider-gateway direct pathD601 的 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` 中修改这些值,并重新启动栈以刷新派生环境文件。