[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-81384":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":11,"openIssues":13,"contributorsCount":13,"subscribersCount":13,"size":13,"stars1d":13,"stars7d":13,"stars30d":13,"stars90d":13,"forks30d":13,"starsTrendScore":13,"compositeScore":14,"rankGlobal":9,"rankLanguage":9,"license":9,"archived":15,"fork":15,"defaultBranch":16,"hasWiki":17,"hasPages":15,"topics":18,"createdAt":9,"pushedAt":9,"updatedAt":19,"readmeContent":20,"aiSummary":21,"trendingCount":13,"starSnapshotCount":13,"syncStatus":12,"lastSyncTime":22,"discoverSource":23},81384,"VNC-CM","jiaguangqi\u002FVNC-CM","jiaguangqi","VNC Cluster Manager",null,"TypeScript",37,2,0,1.43,false,"main",true,[],"2026-06-12 02:04:14","# VNC Cluster Manager Platform\n\n\u003Cp align=\"center\">\n  \u003Cb>远程桌面协同办公平台\u003C\u002Fb> — 基于 Web 的远程桌面管理与协同办公解决方案\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"#功能特性\">功能特性\u003C\u002Fa> •\n  \u003Ca href=\"#技术架构\">技术架构\u003C\u002Fa> •\n  \u003Ca href=\"#快速开始\">快速开始\u003C\u002Fa> •\n  \u003Ca href=\"#安装指南\">安装指南\u003C\u002Fa> •\n  \u003Ca href=\"#开发指南\">开发指南\u003C\u002Fa> •\n  \u003Ca href=\"#项目结构\">项目结构\u003C\u002Fa>\n\u003C\u002Fp>\n\n\n\n---\n\n## 项目简介\n\nVNC CLuster Mnagaer Platform 是一个面向企业级场景的远程桌面协同办公平台。它提供了基于 Web 的远程桌面访问、多用户协同操作、文件传输、宿主机统一管理等功能，支持在现代浏览器中直接访问远程桌面，无需安装额外的客户端软件。\n\n### 主要应用场景\n\n- 🏢 **企业内部远程办公** — 员工通过浏览器安全访问公司内网的开发环境、设计工作站\n- 🖥️ **服务器运维管理** — IT 管理员集中管理多台服务器，提供 Web 化的 SSH\u002FVNC 接入\n- 👥 **协同技术支持** — 多用户同时观看\u002F协助操作同一台远程桌面，提升协作效率\n- 🎓 **云端教学演示** — 教师共享远程桌面给学生，实时演示操作流程\n\n---\n\n## 功能特性\n\n| 功能模块 | 描述 | 状态 |\n|---------|------|------|\n| 🔐 **用户认证** | JWT Token 认证，支持 LDAP 集成，细粒度权限控制 | ✅ 已完成 |\n| 🖥️ **远程桌面** | 基于 noVNC 的 Web VNC 客户端，支持全屏、缩放、剪贴板 | ✅ 已完成 |\n| 👥 **协同会话** | 多用户同时接入同一桌面，支持观察者\u002F操作者模式 | ✅ 已完成 |\n| 📁 **文件传输** | Web 端文件上传下载，支持文件夹批量传输 | ✅ 已完成 |\n| 🏠 **宿主机管理** | Agent 自动注册、心跳检测、资源监控、状态上报 | ✅ 已完成 |\n| ⚡ **实时通信** | WebSocket 全双工通信，低延迟的指令与画面传输 | ✅ 已完成 |\n| 🔒 **安全加密** | AES-256-GCM 凭证加密，TLS\u002FSSL 传输加密 | ✅ 已完成 |\n| 🐳 **容器化部署** | Docker Compose 一键部署，支持水平扩展 | ✅ 已完成 |\n\n---\n\n## 技术架构\n\n### 系统架构图\n\n\u003Cimg width=\"1448\" height=\"1086\" alt=\"图片\" src=\"https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002Fa0a52c93-858c-4665-8a79-4fc1fd7d052c\" \u002F>\n\n\n### 技术栈\n\n| 层级 | 技术选型 | 说明 |\n|------|---------|------|\n| **前端** | React 18 + TypeScript + Vite + Ant Design 5 | 现代化 SPA，响应式布局 |\n| **后端 API** | Go 1.23 + Gin + GORM | 高性能 HTTP API 服务 |\n| **实时通信** | WebSocket (gorilla\u002Fwebsocket) | 全双工长连接 |\n| **数据库** | PostgreSQL 16 | 关系型数据持久化 |\n| **消息协议** | Protocol Buffers | 前后端\u002F服务间通信协议 |\n| **安全** | JWT v5 + bcrypt + AES-256-GCM | 认证、加密、凭证保护 |\n| **容器化** | Docker + Docker Compose | 一键部署与环境隔离 |\n| **远程桌面** | noVNC + TurboVNC + VirtualGL | Web VNC 客户端与加速 |\n\n---\n\n## 快速开始\n\n### 前置依赖\n\n在开始之前，请确保您的系统已安装以下软件：\n\n| 依赖 | 版本要求 | 用途 | 安装命令 |\n|------|---------|------|---------|\n| **Docker** | >= 24.0 | 容器化运行 | [Docker 官网](https:\u002F\u002Fdocs.docker.com\u002Fget-docker\u002F) |\n| **Docker Compose** | >= 2.20 | 编排多容器 | 随 Docker Desktop 附带 |\n| **Go** | >= 1.22 | 编译后端\u002FAgent | `brew install go` 或 [官网](https:\u002F\u002Fgo.dev\u002Fdl\u002F) |\n| **Node.js** | >= 18 | 前端开发 | `brew install node` 或 [官网](https:\u002F\u002Fnodejs.org\u002F) |\n\n验证安装：\n\n```bash\ndocker --version        # Docker version 24.x\ndocker compose version  # Docker Compose version 2.x\ngo version              # go version go1.23.x\nnode --version          # v20.x.x\n```\n\n### 一键部署（服务端）\n\n```bash\n# 克隆项目\ngit clone https:\u002F\u002Fgithub.com\u002Fjiaguangqi\u002FVNC-CM.git\ncd VNC-CM\n\n# 方式一：使用安装脚本（推荐）\nchmod +x install.sh\n.\u002Finstall.sh all\n\n# 方式二：直接使用 Docker Compose\ndocker compose up -d\n```\n\n服务启动后访问：\n- 🌐 **Web 界面**: http:\u002F\u002Flocalhost:3000\n- 🔌 **API 接口**: http:\u002F\u002Flocalhost:8080\u002Fapi\u002Fv1\n- 💓 **健康检查**: http:\u002F\u002Flocalhost:8080\u002Fhealth\n\n### 编译宿主机 Agent\n\n```bash\n# 编译所有平台的 Agent\n.\u002Finstall.sh agent\n\n# 或手动编译\ncd host-agent\ngo mod tidy\nGOOS=linux GOARCH=amd64 go build -o host-agent-linux-amd64 .\n```\n\n在目标宿主机上运行 Agent：\n\n```bash\n.\u002Fhost-agent-linux-amd64 \\\n  -master=ws:\u002F\u002Fyour-master-ip:8080\u002Fws\u002Fagent \\\n  -hostname=server-01 \\\n  -os=linux\n```\n\n---\n\n## 安装指南\n\n### 环境变量配置\n\n创建 `.env` 文件（或修改已有配置）：\n\n```bash\n# 数据库配置\nDB_HOST=postgres\nDB_PORT=5432\nDB_USER=rdp\nDB_PASSWORD=your-secure-password\nDB_NAME=remote_desktop\nDB_SSLMODE=disable\n\n# JWT 配置（生产环境请修改！）\nJWT_SECRET=your-32-byte-secret-key-here!!\nJWT_ACCESS_EXPIRY=15      # Access Token 有效期（分钟）\nJWT_REFRESH_EXPIRY=7      # Refresh Token 有效期（天）\nJWT_ISSUER=remote-desktop-platform\n\n# 加密密钥（必须为 32 字节，用于凭证加密）\nCREDENTIAL_MASTER_KEY=your-32-byte-master-key-here!\n\n# 服务端口\nHTTP_PORT=8080\nSSH_GATEWAY_PORT=8082\nPROTOCOL_GATEWAY_PORT=8083\n\n# 前端 API 地址\nVITE_API_BASE_URL=http:\u002F\u002Flocalhost:8080\u002Fapi\u002Fv1\n```\n\n> ⚠️ **安全提示**：生产环境请务必修改 `JWT_SECRET` 和 `CREDENTIAL_MASTER_KEY` 为强密码，且长度至少 32 字节！\n\n### Docker Compose 手动部署\n\n```bash\n# 1. 创建数据目录\nmkdir -p data\u002Fpostgres logs\n\n# 2. 启动数据库（等待就绪）\ndocker compose up -d postgres\n\n# 3. 启动主服务\ndocker compose up -d master-service\n\n# 4. 启动前端\ndocker compose up -d frontend\n\n# 5. 查看服务状态\ndocker compose ps\ndocker compose logs -f master-service\n```\n\n### 生产环境部署建议\n\n1. **使用外部 PostgreSQL** — 生产环境建议使用独立的 PostgreSQL 集群，而非容器内数据库\n2. **启用 TLS** — 配置 Nginx 反向代理并启用 HTTPS\n3. **修改默认密码** — 所有默认密钥和数据库密码必须修改\n4. **配置防火墙** — 仅开放 3000 (前端)、8080 (API)、8082 (SSH) 等必要端口\n5. **日志收集** — 接入 ELK\u002FLoki 进行日志聚合与分析\n\n---\n\n## 开发指南\n\n### 本地开发环境启动\n\n#### 后端开发（Master Service）\n\n```bash\ncd master-service\n\n# 下载依赖\ngo mod tidy\n\n# 本地运行（需要本地 PostgreSQL）\ngo run main.go\n\n# 或编译运行\ngo build -o master-service .\n.\u002Fmaster-service\n```\n\n#### 前端开发\n\n```bash\ncd frontend\n\n# 安装依赖（国内用户可使用 cnpm\u002Fpnpm）\nnpm install\n\n# 启动开发服务器\nnpm run dev\n\n# 构建生产包\nnpm run build\n```\n\n前端开发服务器默认运行在 http:\u002F\u002Flocalhost:5173\n\n#### Agent 开发\n\n```bash\ncd host-agent\ngo mod tidy\ngo run main.go -master=ws:\u002F\u002Flocalhost:8080\u002Fws\u002Fagent\n```\n\n### API 接口文档\n\nMaster Service 提供 RESTful API，主要接口：\n\n| 接口 | 方法 | 描述 |\n|------|------|------|\n| `\u002Fapi\u002Fv1\u002Fauth\u002Fregister` | POST | 用户注册 |\n| `\u002Fapi\u002Fv1\u002Fauth\u002Flogin` | POST | 用户登录 |\n| `\u002Fapi\u002Fv1\u002Fauth\u002Frefresh` | POST | 刷新 Token |\n| `\u002Fapi\u002Fv1\u002Fhosts` | GET | 获取宿主机列表 |\n| `\u002Fapi\u002Fv1\u002Fhosts` | POST | 注册宿主机 |\n| `\u002Fapi\u002Fv1\u002Fdesktops` | GET | 获取桌面实例列表 |\n| `\u002Fapi\u002Fv1\u002Fdesktops` | POST | 创建桌面实例 |\n| `\u002Fapi\u002Fv1\u002Ffiles\u002Fupload` | POST | 文件上传 |\n| `\u002Fapi\u002Fv1\u002Ffiles\u002Fdownload` | GET | 文件下载 |\n| `\u002Fhealth` | GET | 服务健康检查 |\n\n完整 API 文档可通过源码中的 `handlers\u002F` 目录查看，或使用工具（如 Swagger）生成。\n\n### 数据库模型\n\n核心数据表：\n\n- `users` — 用户账户信息\n- `hosts` — 宿主机信息（含资源状态）\n- `desktops` — 桌面实例信息\n- `credentials` — 加密存储的登录凭证\n- `sessions` — 用户会话与协同会话\n- `file_transfers` — 文件传输记录\n\n---\n\n## 项目结构\n\n```\nremote-desktop-platform\u002F\n├── 📁 frontend\u002F                  # Web 前端 (React + Vite)\n│   ├── src\u002F\n│   │   ├── api\u002F                  # API 请求封装\n│   │   ├── components\u002F           # 通用组件\n│   │   ├── layouts\u002F              # 页面布局\n│   │   ├── pages\u002F                # 页面组件\n│   │   │   ├── LoginPage.tsx\n│   │   │   ├── DashboardPage.tsx\n│   │   │   ├── HostsPage.tsx\n│   │   │   ├── DesktopsPage.tsx\n│   │   │   ├── DesktopViewerPage.tsx\n│   │   │   └── SystemSettingsPage.tsx\n│   │   ├── stores\u002F               # Zustand 状态管理\n│   │   └── styles\u002F               # 全局样式\n│   ├── package.json\n│   ├── tsconfig.json\n│   └── vite.config.ts\n│\n├── 📁 master-service\u002F            # 主控服务 (Go)\n│   ├── cmd\u002F                      # 命令行工具\n│   ├── config\u002F                   # 配置加载\n│   ├── database\u002F                 # 数据库初始化\n│   ├── grpc\u002F                     # gRPC\u002FWebSocket Agent 服务\n│   ├── handlers\u002F                 # HTTP 请求处理器\n│   │   ├── auth.go               # 认证相关\n│   │   ├── host.go               # 宿主机管理\n│   │   ├── desktop.go            # 桌面管理\n│   │   ├── file.go               # 文件传输\n│   │   └── collaboration.go      # 协同会话\n│   ├── middleware\u002F               # Gin 中间件\n│   ├── models\u002F                   # GORM 数据模型\n│   ├── services\u002F                 # 业务逻辑服务\n│   │   ├── encryption.go         # 加密服务\n│   │   └── scheduler.go          # 调度器\n│   ├── Dockerfile\n│   └── main.go\n│\n├── 📁 host-agent\u002F                # 宿主机代理 (Go)\n│   ├── agent\u002F                    # Agent 核心逻辑\n│   ├── main.go\n│   └── go.mod\n│\n├── 📁 ssh-gateway\u002F               # SSH 网关 (Go)\n│   ├── gateway\u002F\n│   └── main.go\n│\n├── 📁 protocol-gateway\u002F          # 协议网关 (Go)\n│   └── go.mod\n│\n├── 📁 shared\u002F                    # 共享资源\n│   └── proto\u002F                    # Protocol Buffers 定义\n│       └── host_agent.proto\n│\n├── 📄 docker-compose.yml         # Docker Compose 部署配置\n├── 📄 install.sh                 # 一键部署脚本\n├── 📄 auth-helper.py             # 认证辅助脚本\n├── 📄 .env                       # 环境变量模板\n└── 📄 README.md                  # 本文档\n```\n\n---\n\n## 配置说明\n\n### Master Service 配置\n\nMaster Service 通过环境变量进行配置，支持以下配置项：\n\n| 变量名 | 默认值 | 必填 | 说明 |\n|--------|--------|------|------|\n| `DB_HOST` | `localhost` | ✅ | 数据库主机 |\n| `DB_PORT` | `5432` | ✅ | 数据库端口 |\n| `DB_USER` | `rdp` | ✅ | 数据库用户 |\n| `DB_PASSWORD` | — | ✅ | 数据库密码 |\n| `DB_NAME` | `remote_desktop` | ✅ | 数据库名称 |\n| `JWT_SECRET` | — | ✅ | JWT 签名密钥（32 字节） |\n| `JWT_ACCESS_EXPIRY` | `15` | — | Access Token 有效期（分钟） |\n| `JWT_REFRESH_EXPIRY` | `7` | — | Refresh Token 有效期（天） |\n| `CREDENTIAL_MASTER_KEY` | — | ✅ | AES 加密主密钥（32 字节） |\n| `HTTP_PORT` | `8080` | — | HTTP 服务端口 |\n| `LDAP_HOST` | — | — | LDAP 服务器地址 |\n| `LDAP_BASE_DN` | — | — | LDAP 基础 DN |\n\n### Host Agent 配置\n\nAgent 通过命令行参数配置：\n\n| 参数 | 默认值 | 说明 |\n|------|--------|------|\n| `-master` | `ws:\u002F\u002Flocalhost:8080\u002Fws\u002Fagent` | Master Service WebSocket 地址 |\n| `-hostname` | 系统 hostname | 宿主机标识名称 |\n| `-os` | `linux` | 操作系统类型 |\n| `-region` | `default` | 区域标识 |\n| `-az` | `default` | 可用区标识 |\n\n---\n\n## 使用说明\n\n### 1. 首次登录\n\n1. 访问 http:\u002F\u002Flocalhost:3000\n2. 点击注册账号，创建管理员账户\n3. 登录后进入 Dashboard\n\n### 2. 添加宿主机\n\n1. 在目标宿主机上运行 Host Agent\n2. Agent 会自动向 Master Service 注册\n3. 在 **Hosts** 页面查看已注册的宿主机\n\n### 3. 创建远程桌面\n\n1. 进入 **Desktops** 页面\n2. 点击「创建桌面」，选择目标宿主机\n3. 配置桌面参数（分辨率、VNC 端口等）\n4. 保存后点击「连接」即可在浏览器中打开远程桌面\n\n### 4. 文件传输\n\n1. 在桌面 Viewer 页面点击「文件传输」按钮\n2. 支持拖拽上传和下载文件\n3. 传输进度实时显示在悬浮窗中\n\n### 5. 协同操作\n\n1. 已有用户连接桌面后，其他用户可通过「协同加入」进入\n2. 支持观察者模式（仅观看）和操作者模式（可控制）\n\n---\n\n## 常见问题\n\n### Q: Agent 无法连接到 Master Service？\n\n检查以下几点：\n- Master Service 是否正常运行（访问 `\u002Fhealth`）\n- Agent 的 `-master` 参数是否指向正确的 WebSocket 地址\n- 防火墙是否放行了对应端口\n- 检查 Master Service 日志中的连接信息\n\n### Q: VNC 连接失败？\n\n- 确认宿主机上已安装并运行 VNC Server（如 TigerVNC、TurboVNC）\n- 检查 VNC 端口是否正确配置（默认 5900）\n- 确认防火墙允许 VNC 端口通信\n\n### Q: 前端页面无法访问 API？\n\n- 检查 `VITE_API_BASE_URL` 是否配置正确\n- 确认浏览器 Network 面板中的请求地址\n- 检查 CORS 配置（开发环境默认允许跨域）\n\n---\n\n## 路线图\n\n- [x] M1: 基础骨架搭建（认证、API、数据库）\n- [x] M2: 核心功能实现（桌面管理、Agent 通信）\n- [ ] M3: 协同功能完善（多用户同步、权限细化）\n- [ ] M4: 运维与监控（日志、告警、资源监控面板）\n- [ ] M5: 安全强化（审计日志、会话录制、零信任）\n\n---\n\n## 贡献指南\n\n欢迎提交 Issue 和 Pull Request！\n\n1. Fork 本仓库\n2. 创建功能分支 (`git checkout -b feature\u002FAmazingFeature`)\n3. 提交更改 (`git commit -m 'Add some AmazingFeature'`)\n4. 推送分支 (`git push origin feature\u002FAmazingFeature`)\n5. 创建 Pull Request\n\n---\n\n\u003Cp align=\"center\">\n  Made with ❤️ for remote work\n\u003C\u002Fp>\n","VNC Cluster Manager Platform 是一个基于 Web 的远程桌面管理和协同办公解决方案。它提供了远程桌面访问、多用户协同操作、文件传输以及宿主机统一管理等功能，支持现代浏览器直接访问而无需额外安装客户端软件。项目采用 TypeScript 编写，前端使用 React 18 和 Ant Design 5，后端则基于 Go 语言和 Gin 框架构建，确保了高性能与安全性。适用于企业内部远程办公、服务器运维管理、技术支持协作及云端教学演示等多种场景。","2026-06-11 04:04:50","CREATED_QUERY"]