995 lines
30 KiB
JSON
995 lines
30 KiB
JSON
{
|
||
"project": {
|
||
"name": "unidesk",
|
||
"timezone": "Etc/UTC"
|
||
},
|
||
"runtime": {
|
||
"typescript": "bun",
|
||
"bunVersion": "1.3.13"
|
||
},
|
||
"network": {
|
||
"host": "0.0.0.0",
|
||
"publicHost": "74.48.78.17",
|
||
"core": {
|
||
"port": 18080,
|
||
"containerPort": 8080
|
||
},
|
||
"frontend": {
|
||
"port": 18081,
|
||
"containerPort": 8080
|
||
},
|
||
"devFrontend": {
|
||
"port": 18083,
|
||
"containerPort": 8080
|
||
},
|
||
"database": {
|
||
"port": 15432,
|
||
"containerPort": 5432
|
||
},
|
||
"providerIngress": {
|
||
"port": 18082,
|
||
"containerPort": 8081
|
||
},
|
||
"restrictedHostAccess": {
|
||
"bindHost": "0.0.0.0",
|
||
"allowedSourceCidrs": [
|
||
"36.49.30.105/32",
|
||
"59.72.97.73/32",
|
||
"175.30.53.221/32"
|
||
]
|
||
}
|
||
},
|
||
"database": {
|
||
"user": "unidesk",
|
||
"password": "unidesk_dev_password",
|
||
"name": "unidesk",
|
||
"volume": "unidesk_pgdata_10gb",
|
||
"volumeSize": "15GB"
|
||
},
|
||
"providerGateway": {
|
||
"id": "main-server",
|
||
"name": "Main Server Provider",
|
||
"token": "unidesk-dev-token-change-me",
|
||
"labels": {
|
||
"host": "main-server",
|
||
"role": "self-provider",
|
||
"docker": true
|
||
},
|
||
"heartbeatIntervalMs": 15000,
|
||
"reconnectBaseMs": 1000,
|
||
"reconnectMaxMs": 30000,
|
||
"metrics": {
|
||
"diskPath": "/"
|
||
},
|
||
"upgrade": {
|
||
"hostProjectRoot": "/root/unidesk",
|
||
"workspacePath": "/workspace",
|
||
"composeFile": "docker-compose.yml",
|
||
"composeEnvFile": ".state/docker-compose.env",
|
||
"composeProject": "unidesk",
|
||
"service": "provider-gateway",
|
||
"runnerImage": "unidesk_provider-gateway"
|
||
}
|
||
},
|
||
"docker": {
|
||
"composeFile": "docker-compose.yml",
|
||
"projectName": "unidesk"
|
||
},
|
||
"microservices": [
|
||
{
|
||
"id": "findjob",
|
||
"name": "FindJob",
|
||
"providerId": "D601",
|
||
"description": "FindJob 纯后端服务,部署在 D601 Docker 中,UniDesk frontend 负责统一前端展示。",
|
||
"repository": {
|
||
"url": "https://gitee.com/Lyon1998/findjob",
|
||
"commitId": "2d43212c5f474df5d87820985a6c75a8c2e7ac42",
|
||
"dockerfile": "Dockerfile",
|
||
"composeFile": "docker-compose.yml",
|
||
"composeService": "server",
|
||
"containerName": "findjob-server"
|
||
},
|
||
"backend": {
|
||
"nodeBaseUrl": "http://host.docker.internal:3254",
|
||
"nodeBindHost": "127.0.0.1",
|
||
"nodePort": 3254,
|
||
"proxyMode": "provider-gateway-http",
|
||
"frontendOnly": true,
|
||
"public": false,
|
||
"allowedPathPrefixes": [
|
||
"/api/"
|
||
],
|
||
"healthPath": "/api/health",
|
||
"timeoutMs": 12000,
|
||
"allowedMethods": [
|
||
"GET",
|
||
"HEAD"
|
||
]
|
||
},
|
||
"development": {
|
||
"providerId": "D601",
|
||
"sshPassthrough": true,
|
||
"worktreePath": "/home/ubuntu/findjob"
|
||
},
|
||
"frontend": {
|
||
"route": "/apps/findjob",
|
||
"integrated": true
|
||
},
|
||
"deployment": {
|
||
"mode": "unidesk-direct"
|
||
}
|
||
},
|
||
{
|
||
"id": "pipeline",
|
||
"name": "Pipeline v2",
|
||
"providerId": "D601",
|
||
"description": "Pipeline v2 观测后端部署在 D601 Docker 中,UniDesk frontend 负责渲染组件矩阵、运行状态、epoch 甘特图和运行材料索引。",
|
||
"repository": {
|
||
"url": "https://github.com/pikasTech/pipeline",
|
||
"commitId": "87811a8d43edf216a4f4d8efa55bbb96bad8df14",
|
||
"dockerfile": "Dockerfile",
|
||
"composeFile": "docker-compose.yml",
|
||
"composeService": "pipeline-control",
|
||
"containerName": "pipeline-v2-control"
|
||
},
|
||
"backend": {
|
||
"nodeBaseUrl": "http://host.docker.internal:18082",
|
||
"nodeBindHost": "127.0.0.1",
|
||
"nodePort": 18082,
|
||
"proxyMode": "provider-gateway-http",
|
||
"frontendOnly": true,
|
||
"public": false,
|
||
"allowedPathPrefixes": [
|
||
"/health",
|
||
"/api/",
|
||
"/oa/"
|
||
],
|
||
"healthPath": "/health",
|
||
"timeoutMs": 15000,
|
||
"allowedMethods": [
|
||
"GET",
|
||
"HEAD",
|
||
"POST"
|
||
]
|
||
},
|
||
"development": {
|
||
"providerId": "D601",
|
||
"sshPassthrough": true,
|
||
"worktreePath": "/home/ubuntu/pipeline"
|
||
},
|
||
"frontend": {
|
||
"route": "/apps/pipeline",
|
||
"integrated": true
|
||
},
|
||
"deployment": {
|
||
"mode": "unidesk-direct"
|
||
}
|
||
},
|
||
{
|
||
"id": "met-nonlinear",
|
||
"name": "MET Nonlinear",
|
||
"providerId": "D601",
|
||
"description": "MET Nonlinear 训练编排用户服务,TS 后端部署在 D601 Docker 中,按需拉起 TensorFlow 2.6 GPU 训练容器并由 UniDesk frontend 展示队列、进度和历史记录。",
|
||
"repository": {
|
||
"url": "https://github.com/pikasTech/met_nonlinear",
|
||
"commitId": "9fcdfc0b505e52cc88cf51b196543dc055da2334",
|
||
"dockerfile": "docker/unidesk/Dockerfile.ml",
|
||
"composeFile": "docker-compose.unidesk.yml",
|
||
"composeService": "met-nonlinear-ts",
|
||
"containerName": "met-nonlinear-ts"
|
||
},
|
||
"backend": {
|
||
"nodeBaseUrl": "http://host.docker.internal:3288",
|
||
"nodeBindHost": "127.0.0.1",
|
||
"nodePort": 3288,
|
||
"proxyMode": "provider-gateway-http",
|
||
"frontendOnly": true,
|
||
"public": false,
|
||
"allowedMethods": [
|
||
"GET",
|
||
"HEAD",
|
||
"POST",
|
||
"PUT"
|
||
],
|
||
"allowedPathPrefixes": [
|
||
"/health",
|
||
"/api/"
|
||
],
|
||
"healthPath": "/health",
|
||
"timeoutMs": 90000
|
||
},
|
||
"development": {
|
||
"providerId": "D601",
|
||
"sshPassthrough": true,
|
||
"worktreePath": "/home/ubuntu/met_nonlinear"
|
||
},
|
||
"frontend": {
|
||
"route": "/apps/met-nonlinear",
|
||
"integrated": true
|
||
},
|
||
"deployment": {
|
||
"mode": "unidesk-direct"
|
||
}
|
||
},
|
||
{
|
||
"id": "claudeqq",
|
||
"name": "ClaudeQQ",
|
||
"providerId": "D601",
|
||
"description": "ClaudeQQ 是由 D601 k3s 控制平面代管的 QQ 消息网关用户服务,为 UniDesk、主 server 和其他用户服务提供 QQ 消息事件订阅与消息推送 API。",
|
||
"repository": {
|
||
"url": "https://gitee.com/lyon1998/agent_skills",
|
||
"commitId": "203b1f46684c91340ecbbd8a74502bd55e4f2011",
|
||
"dockerfile": "claudeqq/Dockerfile",
|
||
"composeFile": "src/components/microservices/k3sctl-adapter/k3s/claudeqq.k3s.json",
|
||
"composeService": "claudeqq",
|
||
"containerName": "k3s:claudeqq"
|
||
},
|
||
"backend": {
|
||
"nodeBaseUrl": "k3s://claudeqq",
|
||
"nodeBindHost": "k3s://unidesk/claudeqq",
|
||
"nodePort": 3290,
|
||
"proxyMode": "k3sctl-adapter-http",
|
||
"frontendOnly": true,
|
||
"public": false,
|
||
"allowedMethods": [
|
||
"GET",
|
||
"HEAD",
|
||
"POST",
|
||
"DELETE"
|
||
],
|
||
"allowedPathPrefixes": [
|
||
"/health",
|
||
"/logs",
|
||
"/api/"
|
||
],
|
||
"healthPath": "/health",
|
||
"timeoutMs": 30000
|
||
},
|
||
"development": {
|
||
"providerId": "D601",
|
||
"sshPassthrough": true,
|
||
"worktreePath": "/home/ubuntu/.agents/skills/claudeqq"
|
||
},
|
||
"frontend": {
|
||
"route": "/apps/claudeqq",
|
||
"integrated": true
|
||
},
|
||
"deployment": {
|
||
"mode": "k3sctl-managed",
|
||
"adapterServiceId": "k3sctl-adapter",
|
||
"k3sServiceId": "claudeqq",
|
||
"namespace": "unidesk",
|
||
"expectedNodeIds": [
|
||
"D601"
|
||
],
|
||
"activeNodeId": "D601"
|
||
}
|
||
},
|
||
{
|
||
"id": "todo-note",
|
||
"name": "Todo Note",
|
||
"providerId": "main-server",
|
||
"description": "Todo Note 纯后端服务,从 D518 /mnt/d/work/todo_note 迁移到主 server Docker,使用 UniDesk PostgreSQL 存储,UniDesk frontend 负责统一前端展示。",
|
||
"repository": {
|
||
"url": "https://gitee.com/Lyon1998/todo_note",
|
||
"commitId": "a14ce0eb855a685fa17b47adacd54623e72cd2ff",
|
||
"dockerfile": "Dockerfile",
|
||
"composeFile": "docker-compose.yml",
|
||
"composeService": "todo-note",
|
||
"containerName": "todo-note-backend"
|
||
},
|
||
"backend": {
|
||
"nodeBaseUrl": "http://todo-note:4211",
|
||
"nodeBindHost": "todo-note",
|
||
"nodePort": 4211,
|
||
"proxyMode": "provider-gateway-http",
|
||
"frontendOnly": true,
|
||
"public": false,
|
||
"allowedMethods": [
|
||
"GET",
|
||
"HEAD",
|
||
"POST",
|
||
"DELETE"
|
||
],
|
||
"allowedPathPrefixes": [
|
||
"/api/"
|
||
],
|
||
"healthPath": "/api/health",
|
||
"timeoutMs": 12000
|
||
},
|
||
"development": {
|
||
"providerId": "main-server",
|
||
"sshPassthrough": true,
|
||
"worktreePath": "/root/todo_note"
|
||
},
|
||
"frontend": {
|
||
"route": "/apps/todo-note",
|
||
"integrated": true
|
||
},
|
||
"deployment": {
|
||
"mode": "unidesk-direct"
|
||
}
|
||
},
|
||
{
|
||
"id": "project-manager",
|
||
"name": "Project Manager",
|
||
"providerId": "main-server",
|
||
"description": "项目管理用户服务,部署在主 server Docker 中,使用 UniDesk PostgreSQL 保存合作项目清单,支持项目增删改查、Excel 导入和 Excel 导出。",
|
||
"repository": {
|
||
"url": "https://github.com/pikasTech/unidesk",
|
||
"commitId": "a278de032d5cdb91010466ac1e2183c79026550d",
|
||
"dockerfile": "src/components/microservices/project-manager/Dockerfile",
|
||
"composeFile": "docker-compose.yml",
|
||
"composeService": "project-manager",
|
||
"containerName": "project-manager-backend"
|
||
},
|
||
"backend": {
|
||
"nodeBaseUrl": "http://project-manager:4233",
|
||
"nodeBindHost": "project-manager",
|
||
"nodePort": 4233,
|
||
"proxyMode": "provider-gateway-http",
|
||
"frontendOnly": true,
|
||
"public": false,
|
||
"allowedMethods": [
|
||
"GET",
|
||
"HEAD",
|
||
"POST",
|
||
"PUT",
|
||
"DELETE"
|
||
],
|
||
"allowedPathPrefixes": [
|
||
"/health",
|
||
"/logs",
|
||
"/api/"
|
||
],
|
||
"healthPath": "/health",
|
||
"timeoutMs": 30000
|
||
},
|
||
"development": {
|
||
"providerId": "main-server",
|
||
"sshPassthrough": true,
|
||
"worktreePath": "/root/unidesk"
|
||
},
|
||
"frontend": {
|
||
"route": "/apps/project-manager",
|
||
"integrated": true
|
||
},
|
||
"deployment": {
|
||
"mode": "unidesk-direct"
|
||
}
|
||
},
|
||
{
|
||
"id": "baidu-netdisk",
|
||
"name": "Baidu Netdisk",
|
||
"providerId": "main-server",
|
||
"description": "容器化百度网盘存储用户服务,提供 OAuth 设备码登录、根目录浏览和 staging 目录上传下载任务。",
|
||
"repository": {
|
||
"url": "https://github.com/pikasTech/unidesk",
|
||
"commitId": "ae462ed9ef8057909fee9eabfadce5ed55e958a2",
|
||
"dockerfile": "src/components/microservices/baidu-netdisk/Dockerfile",
|
||
"composeFile": "docker-compose.yml",
|
||
"composeService": "baidu-netdisk",
|
||
"containerName": "baidu-netdisk-backend"
|
||
},
|
||
"backend": {
|
||
"nodeBaseUrl": "http://baidu-netdisk:4244",
|
||
"nodeBindHost": "baidu-netdisk",
|
||
"nodePort": 4244,
|
||
"proxyMode": "provider-gateway-http",
|
||
"frontendOnly": true,
|
||
"public": false,
|
||
"allowedMethods": [
|
||
"GET",
|
||
"HEAD",
|
||
"POST",
|
||
"DELETE"
|
||
],
|
||
"allowedPathPrefixes": [
|
||
"/health",
|
||
"/logs",
|
||
"/api/"
|
||
],
|
||
"healthPath": "/health",
|
||
"timeoutMs": 120000
|
||
},
|
||
"development": {
|
||
"providerId": "main-server",
|
||
"sshPassthrough": true,
|
||
"worktreePath": "/root/unidesk"
|
||
},
|
||
"frontend": {
|
||
"route": "/apps/baidu-netdisk",
|
||
"integrated": true
|
||
},
|
||
"deployment": {
|
||
"mode": "unidesk-direct"
|
||
}
|
||
},
|
||
{
|
||
"id": "filebrowser",
|
||
"name": "File Browser D518",
|
||
"providerId": "D518",
|
||
"description": "File Browser WebUI 用户服务,部署在 D518 WSL provider Docker 中,挂载 provider host / 到 /srv,包含 /mnt/c 等 Windows 盘符;主 server 不再运行 File Browser 容器以节省资源。",
|
||
"repository": {
|
||
"url": "https://github.com/filebrowser/filebrowser",
|
||
"commitId": "ca5e249e3c0c94159c2136a0cd431a424eb18472",
|
||
"dockerfile": "docker.io/filebrowser/filebrowser:v2.63.3",
|
||
"artifactSource": {
|
||
"kind": "upstream-image",
|
||
"imageRef": "docker.io/filebrowser/filebrowser:v2.63.3",
|
||
"digestPinRequired": true,
|
||
"mirrorRepository": "127.0.0.1:5000/upstream/filebrowser/filebrowser",
|
||
"ciDockerfileBuild": false,
|
||
"pullOnlyCd": true
|
||
},
|
||
"composeFile": "docker run --restart unless-stopped",
|
||
"composeService": "unidesk-filebrowser-d518",
|
||
"containerName": "unidesk-filebrowser-d518"
|
||
},
|
||
"backend": {
|
||
"nodeBaseUrl": "http://host.docker.internal:4251",
|
||
"nodeBindHost": "0.0.0.0",
|
||
"nodePort": 4251,
|
||
"proxyMode": "provider-gateway-http",
|
||
"frontendOnly": true,
|
||
"public": false,
|
||
"allowedMethods": [
|
||
"GET",
|
||
"HEAD",
|
||
"POST",
|
||
"PUT",
|
||
"PATCH",
|
||
"DELETE"
|
||
],
|
||
"allowedPathPrefixes": [
|
||
"/"
|
||
],
|
||
"healthPath": "/health",
|
||
"timeoutMs": 120000
|
||
},
|
||
"development": {
|
||
"providerId": "D518",
|
||
"sshPassthrough": true,
|
||
"worktreePath": "/"
|
||
},
|
||
"frontend": {
|
||
"route": "/apps/filebrowser",
|
||
"integrated": true
|
||
},
|
||
"deployment": {
|
||
"mode": "unidesk-direct"
|
||
}
|
||
},
|
||
{
|
||
"id": "filebrowser-d601",
|
||
"name": "File Browser D601",
|
||
"providerId": "D601",
|
||
"description": "File Browser WebUI 用户服务,部署在 D601 WSL provider Docker 中,挂载 provider host / 到 /srv,包含 /mnt/c 等 Windows 盘符。",
|
||
"repository": {
|
||
"url": "https://github.com/filebrowser/filebrowser",
|
||
"commitId": "ca5e249e3c0c94159c2136a0cd431a424eb18472",
|
||
"dockerfile": "docker.io/filebrowser/filebrowser:v2.63.3",
|
||
"artifactSource": {
|
||
"kind": "upstream-image",
|
||
"imageRef": "docker.io/filebrowser/filebrowser:v2.63.3",
|
||
"digestPinRequired": true,
|
||
"mirrorRepository": "127.0.0.1:5000/upstream/filebrowser/filebrowser",
|
||
"ciDockerfileBuild": false,
|
||
"pullOnlyCd": true
|
||
},
|
||
"composeFile": "docker run --restart unless-stopped",
|
||
"composeService": "unidesk-filebrowser-d601",
|
||
"containerName": "unidesk-filebrowser-d601"
|
||
},
|
||
"backend": {
|
||
"nodeBaseUrl": "http://host.docker.internal:4251",
|
||
"nodeBindHost": "127.0.0.1",
|
||
"nodePort": 4251,
|
||
"proxyMode": "provider-gateway-http",
|
||
"frontendOnly": true,
|
||
"public": false,
|
||
"allowedMethods": [
|
||
"GET",
|
||
"HEAD",
|
||
"POST",
|
||
"PUT",
|
||
"PATCH",
|
||
"DELETE"
|
||
],
|
||
"allowedPathPrefixes": [
|
||
"/"
|
||
],
|
||
"healthPath": "/health",
|
||
"timeoutMs": 120000
|
||
},
|
||
"development": {
|
||
"providerId": "D601",
|
||
"sshPassthrough": true,
|
||
"worktreePath": "/"
|
||
},
|
||
"frontend": {
|
||
"route": "/apps/filebrowser",
|
||
"integrated": true
|
||
},
|
||
"deployment": {
|
||
"mode": "unidesk-direct"
|
||
}
|
||
},
|
||
{
|
||
"id": "oa-event-flow",
|
||
"name": "OA Event Flow",
|
||
"providerId": "main-server",
|
||
"description": "统一 OA 事件流与统计中心用户服务,为 Code Queue 和 Pipeline 提供事件表、tag 订阅、Trace/STEP stats 投影和事件可见性页面。",
|
||
"repository": {
|
||
"url": "https://github.com/pikasTech/unidesk",
|
||
"commitId": "b36d7f94d7a7db9527ca823a98599106096b3c91",
|
||
"dockerfile": "src/components/microservices/oa-event-flow/Dockerfile",
|
||
"composeFile": "docker-compose.yml",
|
||
"composeService": "oa-event-flow",
|
||
"containerName": "oa-event-flow-backend"
|
||
},
|
||
"backend": {
|
||
"nodeBaseUrl": "http://oa-event-flow:4255",
|
||
"nodeBindHost": "oa-event-flow",
|
||
"nodePort": 4255,
|
||
"proxyMode": "provider-gateway-http",
|
||
"frontendOnly": true,
|
||
"public": false,
|
||
"allowedMethods": [
|
||
"GET",
|
||
"HEAD",
|
||
"POST"
|
||
],
|
||
"allowedPathPrefixes": [
|
||
"/health",
|
||
"/logs",
|
||
"/api/"
|
||
],
|
||
"healthPath": "/health",
|
||
"timeoutMs": 30000
|
||
},
|
||
"development": {
|
||
"providerId": "main-server",
|
||
"sshPassthrough": true,
|
||
"worktreePath": "/root/unidesk"
|
||
},
|
||
"frontend": {
|
||
"route": "/apps/oa-event-flow",
|
||
"integrated": true
|
||
},
|
||
"deployment": {
|
||
"mode": "unidesk-direct"
|
||
}
|
||
},
|
||
{
|
||
"id": "k3sctl-adapter",
|
||
"name": "k3s Control Plane",
|
||
"providerId": "D601",
|
||
"description": "k3sctl-adapter 是 UniDesk 直管的 k3s 控制平面适配微服务,连接 D601 原生 k3s/k3sctl 控制平面,并通过 k3s 标准服务路由代理 D601 上的代管微服务。",
|
||
"repository": {
|
||
"url": "https://github.com/pikasTech/unidesk",
|
||
"commitId": "4d9eed65132f158b2323b128aabed5613cb15627",
|
||
"dockerfile": "src/components/microservices/k3sctl-adapter/Dockerfile",
|
||
"composeFile": "src/components/microservices/k3sctl-adapter/docker-compose.d601.yml",
|
||
"composeService": "k3sctl-adapter",
|
||
"containerName": "k3sctl-adapter"
|
||
},
|
||
"backend": {
|
||
"nodeBaseUrl": "http://host.docker.internal:4266",
|
||
"nodeBindHost": "127.0.0.1",
|
||
"nodePort": 4266,
|
||
"proxyMode": "provider-gateway-http",
|
||
"frontendOnly": true,
|
||
"public": false,
|
||
"allowedMethods": [
|
||
"GET",
|
||
"HEAD",
|
||
"POST",
|
||
"DELETE",
|
||
"PUT",
|
||
"PATCH"
|
||
],
|
||
"allowedPathPrefixes": [
|
||
"/health",
|
||
"/logs",
|
||
"/api/"
|
||
],
|
||
"healthPath": "/health",
|
||
"timeoutMs": 30000
|
||
},
|
||
"deployment": {
|
||
"mode": "unidesk-direct"
|
||
},
|
||
"development": {
|
||
"providerId": "D601",
|
||
"sshPassthrough": true,
|
||
"worktreePath": "/home/ubuntu/cq-deploy"
|
||
},
|
||
"frontend": {
|
||
"route": "/apps/k3sctl",
|
||
"integrated": true
|
||
}
|
||
},
|
||
{
|
||
"id": "k3sctl-adapter-g14",
|
||
"name": "k3s Control Plane G14",
|
||
"providerId": "G14",
|
||
"description": "k3sctl-adapter-g14 是 UniDesk 直管的 G14 k3s 控制平面适配微服务,专用于承载迁移后的 Code Queue 执行面和基础设施 CI/CD,不接管仍保留在 D601 的用户服务。",
|
||
"repository": {
|
||
"url": "https://github.com/pikasTech/unidesk",
|
||
"commitId": "local",
|
||
"dockerfile": "src/components/microservices/k3sctl-adapter/Dockerfile",
|
||
"composeFile": "src/components/microservices/k3sctl-adapter/docker-compose.g14.yml",
|
||
"composeService": "k3sctl-adapter-g14",
|
||
"containerName": "k3sctl-adapter-g14"
|
||
},
|
||
"backend": {
|
||
"nodeBaseUrl": "http://host.docker.internal:4266",
|
||
"nodeBindHost": "127.0.0.1",
|
||
"nodePort": 4266,
|
||
"proxyMode": "provider-gateway-http",
|
||
"frontendOnly": true,
|
||
"public": false,
|
||
"allowedMethods": [
|
||
"GET",
|
||
"HEAD",
|
||
"POST",
|
||
"DELETE",
|
||
"PUT",
|
||
"PATCH"
|
||
],
|
||
"allowedPathPrefixes": [
|
||
"/health",
|
||
"/logs",
|
||
"/api/"
|
||
],
|
||
"healthPath": "/health",
|
||
"timeoutMs": 30000
|
||
},
|
||
"deployment": {
|
||
"mode": "unidesk-direct"
|
||
},
|
||
"development": {
|
||
"providerId": "G14",
|
||
"sshPassthrough": true,
|
||
"worktreePath": "/root/unidesk"
|
||
},
|
||
"frontend": {
|
||
"route": "/apps/k3sctl-g14",
|
||
"integrated": false
|
||
}
|
||
},
|
||
{
|
||
"id": "code-queue",
|
||
"name": "Code Queue",
|
||
"providerId": "G14",
|
||
"description": "Code Queue 的用户服务 ID 保持稳定;队列管理、提交、历史和轻量 Trace 读取默认由主 server code-queue-mgr 直管 PostgreSQL,G14 k3s Code Queue 负责 scheduler/runner、active run steer/interrupt 和执行态写回。D601 仍保留未迁移用户服务的 k3s adapter。",
|
||
"repository": {
|
||
"url": "https://github.com/pikasTech/unidesk",
|
||
"commitId": "2a9f60d57401bf9d6165e44af30c2f21ada79320",
|
||
"dockerfile": "src/components/microservices/code-queue/Dockerfile",
|
||
"composeFile": "src/components/microservices/k3sctl-adapter/k3s/code-queue.g14.k3s.json",
|
||
"composeService": "code-queue",
|
||
"containerName": "k3s:code-queue"
|
||
},
|
||
"backend": {
|
||
"nodeBaseUrl": "k3s://code-queue",
|
||
"nodeBindHost": "k3s://unidesk/code-queue",
|
||
"nodePort": 4222,
|
||
"proxyMode": "k3sctl-adapter-http",
|
||
"frontendOnly": true,
|
||
"public": false,
|
||
"allowedMethods": [
|
||
"GET",
|
||
"HEAD",
|
||
"POST",
|
||
"DELETE",
|
||
"PUT",
|
||
"PATCH"
|
||
],
|
||
"allowedPathPrefixes": [
|
||
"/health",
|
||
"/logs",
|
||
"/api/"
|
||
],
|
||
"healthPath": "/health",
|
||
"timeoutMs": 30000
|
||
},
|
||
"development": {
|
||
"providerId": "G14",
|
||
"sshPassthrough": true,
|
||
"worktreePath": "/root/unidesk"
|
||
},
|
||
"frontend": {
|
||
"route": "/apps/code-queue",
|
||
"integrated": true
|
||
},
|
||
"deployment": {
|
||
"mode": "k3sctl-managed",
|
||
"adapterServiceId": "k3sctl-adapter-g14",
|
||
"k3sServiceId": "code-queue",
|
||
"namespace": "unidesk",
|
||
"expectedNodeIds": [
|
||
"G14"
|
||
],
|
||
"activeNodeId": "G14"
|
||
}
|
||
},
|
||
{
|
||
"id": "code-queue-mgr",
|
||
"name": "Code Queue Manager",
|
||
"providerId": "main-server",
|
||
"description": "code-queue-mgr 是主 server 直管的轻量 Code Queue 控制面,只连接主 PostgreSQL,负责队列 CRUD、任务提交、历史摘要和轻量 Trace 读取;不包含 Codex/OpenCode/Playwright/Chromium/runner 依赖。",
|
||
"repository": {
|
||
"url": "https://github.com/pikasTech/unidesk",
|
||
"commitId": "local",
|
||
"dockerfile": "src/components/microservices/code-queue-mgr/Dockerfile",
|
||
"composeFile": "docker-compose.yml",
|
||
"composeService": "code-queue-mgr",
|
||
"containerName": "code-queue-mgr-backend"
|
||
},
|
||
"backend": {
|
||
"nodeBaseUrl": "http://code-queue-mgr:4278",
|
||
"nodeBindHost": "code-queue-mgr",
|
||
"nodePort": 4278,
|
||
"proxyMode": "unidesk-direct",
|
||
"frontendOnly": true,
|
||
"public": false,
|
||
"allowedMethods": [
|
||
"GET",
|
||
"HEAD",
|
||
"POST",
|
||
"PUT",
|
||
"PATCH",
|
||
"DELETE"
|
||
],
|
||
"allowedPathPrefixes": [
|
||
"/health",
|
||
"/live",
|
||
"/logs",
|
||
"/api/"
|
||
],
|
||
"healthPath": "/health",
|
||
"timeoutMs": 10000
|
||
},
|
||
"deployment": {
|
||
"mode": "internal-sidecar"
|
||
},
|
||
"development": {
|
||
"providerId": "main-server",
|
||
"sshPassthrough": false,
|
||
"worktreePath": "/root/unidesk/src/components/microservices/code-queue-mgr"
|
||
},
|
||
"frontend": {
|
||
"route": "/apps/code-queue-mgr",
|
||
"integrated": false
|
||
}
|
||
},
|
||
{
|
||
"id": "code-agent-sandbox",
|
||
"name": "Code Agent Sandbox",
|
||
"providerId": "main-server",
|
||
"description": "独立 Code Agent Sandbox 微服务骨架,承载 Codex/OpenCode/未来 agent 的统一状态机、adapter 契约、模式边界和凭证分发语义;当前不依赖 Code Queue。",
|
||
"repository": {
|
||
"url": "https://github.com/pikasTech/unidesk",
|
||
"commitId": "local",
|
||
"dockerfile": "src/components/microservices/code-agent-sandbox/Dockerfile",
|
||
"composeFile": "docker-compose.yml",
|
||
"composeService": "code-agent-sandbox",
|
||
"containerName": "code-agent-sandbox-backend"
|
||
},
|
||
"backend": {
|
||
"nodeBaseUrl": "http://code-agent-sandbox:4260",
|
||
"nodeBindHost": "code-agent-sandbox",
|
||
"nodePort": 4260,
|
||
"proxyMode": "unidesk-direct",
|
||
"frontendOnly": true,
|
||
"public": false,
|
||
"allowedMethods": [
|
||
"GET",
|
||
"HEAD",
|
||
"POST",
|
||
"PUT"
|
||
],
|
||
"allowedPathPrefixes": [
|
||
"/health",
|
||
"/diagnostics",
|
||
"/trace",
|
||
"/logs",
|
||
"/api/"
|
||
],
|
||
"healthPath": "/health",
|
||
"timeoutMs": 10000
|
||
},
|
||
"development": {
|
||
"providerId": "main-server",
|
||
"sshPassthrough": false,
|
||
"worktreePath": "/root/unidesk/src/components/microservices/code-agent-sandbox"
|
||
},
|
||
"frontend": {
|
||
"route": "/apps/code-agent-sandbox",
|
||
"integrated": false
|
||
},
|
||
"deployment": {
|
||
"mode": "internal-sidecar"
|
||
}
|
||
},
|
||
{
|
||
"id": "auth-broker",
|
||
"name": "Auth Broker",
|
||
"providerId": "main-server",
|
||
"description": "Auth Broker 是主 server 私有鉴权代理 skeleton,为 Code Queue PR preflight 和 GitHub issue/PR dry-run 提供 broker-held credential ref 语义;当前只登记 source/contract/profile,不启用 live secret 或公网入口。",
|
||
"repository": {
|
||
"url": "https://github.com/pikasTech/unidesk",
|
||
"commitId": "local",
|
||
"dockerfile": "src/components/microservices/auth-broker/Dockerfile",
|
||
"composeFile": "docker-compose.yml",
|
||
"composeService": "auth-broker",
|
||
"containerName": "auth-broker-backend"
|
||
},
|
||
"backend": {
|
||
"nodeBaseUrl": "http://auth-broker:4291",
|
||
"nodeBindHost": "auth-broker",
|
||
"nodePort": 4291,
|
||
"proxyMode": "unidesk-direct",
|
||
"frontendOnly": true,
|
||
"public": false,
|
||
"allowedMethods": [
|
||
"GET",
|
||
"HEAD",
|
||
"POST"
|
||
],
|
||
"allowedPathPrefixes": [
|
||
"/health",
|
||
"/v1/github/"
|
||
],
|
||
"healthPath": "/health",
|
||
"timeoutMs": 10000
|
||
},
|
||
"development": {
|
||
"providerId": "main-server",
|
||
"sshPassthrough": false,
|
||
"worktreePath": "/root/unidesk/src/components/microservices/auth-broker"
|
||
},
|
||
"frontend": {
|
||
"route": "/apps/auth-broker",
|
||
"integrated": false
|
||
},
|
||
"deployment": {
|
||
"mode": "internal-sidecar"
|
||
}
|
||
},
|
||
{
|
||
"id": "mdtodo",
|
||
"name": "MDTODO",
|
||
"providerId": "D601",
|
||
"description": "MDTODO 是由 D601 k3s 控制面代管的 Markdown TODO 后端,读取原 F:\\Work\\vscode-mdtodo 工作区,UniDesk frontend 负责统一任务树、编辑和状态展示。",
|
||
"repository": {
|
||
"url": "https://github.com/pikasTech/unidesk",
|
||
"commitId": "local",
|
||
"dockerfile": "src/components/microservices/mdtodo/Dockerfile",
|
||
"composeFile": "src/components/microservices/k3sctl-adapter/k3s/mdtodo.k3s.json",
|
||
"composeService": "mdtodo",
|
||
"containerName": "k3s:mdtodo"
|
||
},
|
||
"backend": {
|
||
"nodeBaseUrl": "k3s://mdtodo",
|
||
"nodeBindHost": "k3s://unidesk/mdtodo",
|
||
"nodePort": 4267,
|
||
"proxyMode": "k3sctl-adapter-http",
|
||
"frontendOnly": true,
|
||
"public": false,
|
||
"allowedMethods": [
|
||
"GET",
|
||
"HEAD",
|
||
"POST",
|
||
"PUT",
|
||
"PATCH",
|
||
"DELETE"
|
||
],
|
||
"allowedPathPrefixes": [
|
||
"/health",
|
||
"/live",
|
||
"/logs",
|
||
"/api/"
|
||
],
|
||
"healthPath": "/health",
|
||
"timeoutMs": 30000
|
||
},
|
||
"development": {
|
||
"providerId": "D601",
|
||
"sshPassthrough": true,
|
||
"worktreePath": "/home/ubuntu/cq-deploy/src/components/microservices/mdtodo"
|
||
},
|
||
"frontend": {
|
||
"route": "/apps/mdtodo",
|
||
"integrated": true
|
||
},
|
||
"deployment": {
|
||
"mode": "k3sctl-managed",
|
||
"adapterServiceId": "k3sctl-adapter",
|
||
"k3sServiceId": "mdtodo",
|
||
"namespace": "unidesk",
|
||
"expectedNodeIds": [
|
||
"D601"
|
||
],
|
||
"activeNodeId": "D601"
|
||
}
|
||
},
|
||
{
|
||
"id": "decision-center",
|
||
"name": "Decision Center",
|
||
"providerId": "D601",
|
||
"description": "Decision Center 是由 D601 k3s 控制面代管的决策权威记录服务,用于沉淀会议记录、决议、目标、问题分级、停放事项和证据;参谋对话仍使用 Codex 原生会话。",
|
||
"repository": {
|
||
"url": "https://github.com/pikasTech/unidesk",
|
||
"commitId": "f4787a8cf0ddb9a773c05d86ea3dca5e8d93bd35",
|
||
"dockerfile": "src/components/microservices/decision-center/Dockerfile",
|
||
"composeFile": "src/components/microservices/k3sctl-adapter/k3s/decision-center.k3s.json",
|
||
"composeService": "decision-center",
|
||
"containerName": "k3s:decision-center"
|
||
},
|
||
"backend": {
|
||
"nodeBaseUrl": "k3s://decision-center",
|
||
"nodeBindHost": "k3s://unidesk/decision-center",
|
||
"nodePort": 4277,
|
||
"proxyMode": "k3sctl-adapter-http",
|
||
"frontendOnly": true,
|
||
"public": false,
|
||
"allowedMethods": [
|
||
"GET",
|
||
"HEAD",
|
||
"POST",
|
||
"PUT",
|
||
"DELETE"
|
||
],
|
||
"allowedPathPrefixes": [
|
||
"/health",
|
||
"/live",
|
||
"/logs",
|
||
"/api/"
|
||
],
|
||
"healthPath": "/health",
|
||
"timeoutMs": 30000
|
||
},
|
||
"development": {
|
||
"providerId": "D601",
|
||
"sshPassthrough": true,
|
||
"worktreePath": "/home/ubuntu/cq-deploy/src/components/microservices/decision-center"
|
||
},
|
||
"frontend": {
|
||
"route": "/apps/decision-center",
|
||
"integrated": true
|
||
},
|
||
"deployment": {
|
||
"mode": "k3sctl-managed",
|
||
"adapterServiceId": "k3sctl-adapter",
|
||
"k3sServiceId": "decision-center",
|
||
"namespace": "unidesk",
|
||
"expectedNodeIds": [
|
||
"D601"
|
||
],
|
||
"activeNodeId": "D601"
|
||
}
|
||
}
|
||
],
|
||
"paths": {
|
||
"stateDir": ".state",
|
||
"logsDir": "logs",
|
||
"docsReferenceDir": "docs/reference"
|
||
},
|
||
"sshForwarding": {
|
||
"mode": "optional-maintenance-only",
|
||
"keyDir": "/root/.unidesk/host-ssh",
|
||
"host": "host.docker.internal",
|
||
"port": 22,
|
||
"user": "root"
|
||
},
|
||
"auth": {
|
||
"username": "admin",
|
||
"password": "Liang6516.",
|
||
"sessionSecret": "unidesk-dev-session-secret-change-me",
|
||
"sessionTtlSeconds": 86400
|
||
}
|
||
}
|