Files
pikasTech-unidesk/config.json
T
2026-05-17 09:48:00 +00:00

829 lines
25 KiB
JSON
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.
{
"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
},
"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"
]
}
},
"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",
"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",
"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",
"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": "code-queue",
"name": "Code Queue",
"providerId": "D601",
"description": "Code Queue 的用户服务 ID 保持稳定;队列管理、提交、历史和轻量 Trace 读取默认由主 server code-queue-mgr 直管 PostgreSQLD601 k3s Code Queue 只负责 scheduler/runner、active run steer/interrupt 和执行态写回。",
"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.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",
"PATCH"
],
"allowedPathPrefixes": [
"/health",
"/logs",
"/api/"
],
"healthPath": "/health",
"timeoutMs": 30000
},
"development": {
"providerId": "D601",
"sshPassthrough": true,
"worktreePath": "/home/ubuntu/unidesk-code-queue-deploy"
},
"frontend": {
"route": "/apps/code-queue",
"integrated": true
},
"deployment": {
"mode": "k3sctl-managed",
"adapterServiceId": "k3sctl-adapter",
"k3sServiceId": "code-queue",
"namespace": "unidesk",
"expectedNodeIds": [
"D601"
],
"activeNodeId": "D601"
}
},
{
"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": "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": "99f56e018b3070fd9fa72ec6b82ec06c04ae50fa",
"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
}
}