# RDP-Manager **Repository Path**: birdman1992/rdp-manager ## Basic Information - **Project Name**: RDP-Manager - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-09-17 - **Last Updated**: 2026-10-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # rdp-manager 自有 frp 基础设施上的 RDP 机器管理与一键连接系统。 用户在任意一台装有客户端的 Windows 机器上登录,看到自己名下的 RDP 机器列表与在线状态,一键经 stcp 加密隧道用**原生 mstsc** 连入。客户端单代码库双进程:无头常驻 Agent(被控端)+ Wails v3 桌面控制台(控制端)。**另有 Android 控制端**(手机作为控制端,内嵌 frpc,加密边界不变)。 - 📐 总体方案:[2026-09-17-rdp-manager-design.md](./2026-09-17-rdp-manager-design.md)(v0.15 · M1 收官后迭代) - 🧱 数据面:复用 [lmstudio-proxy](../lmstudio-proxy) 搭建的 frp 基础设施(腾讯云 frps :7000) - 📱 Android 控制端:[mobile/android/README.md](./mobile/android/README.md)(MVP,待真机验收) - 🚧 状态:**v0.8.3 已发布**;Android 端 v0.1.0 MVP ## 代码结构 ``` rdp-manager/ ├── cmd/ │ ├── server/ 管理服务端(serve / seed / keygen 子命令) │ ├── agent/ 被控端常驻进程(session 0 / SYSTEM 计划任务) │ └── installer/ 向导式安装器(独立 Go module,Wails v3) ├── console/ Wails v3 桌面控制台(独立 Go module,前端免构建) │ └── frontend/dist/ 原生 HTML/JS/CSS,经 Call.ByName 调用 Go services ├── mobile/android/ Android 控制端(纯 Java,内嵌 frpc arm64) ├── pkg/ 三端共享包 │ ├── types/ API 与 IPC 数据结构 │ ├── apiclient/ 服务端 HTTP 客户端(控制台侧 JWT / Agent 侧 machineKey) │ ├── frpcgen/ frpc TOML 生成(stcp proxy / visitor) │ ├── ipc/ Console↔Agent 本机回环通信(127.0.0.1 + token) │ ├── keys/ 密钥与随机值(machineKey / secretKey / 票据码 / bindPort) │ ├── proc/ 子进程启动属性(隐藏控制台窗口) │ └── meta/ 产品常量与公共路径 ├── internal/ │ ├── server/ 服务端实现(SQLite / JWT / 机器 / 票据 / 审计 + 冒烟测试) │ └── agent/ Agent 实现(心跳 / 配置同步 / frpc 守护) ├── scripts/ build / install / uninstall / smoke / e2e-local / │ build-android / test-android-toml(跨语言一致性) └── deploy/ Dockerfile / docker-compose / nginx vhost 样例 ``` ## 构建与本地运行 前置:Go 1.27+(`GOPROXY=https://goproxy.cn,direct`)。 ```powershell # 全量构建 → bin\{rdp-manager-server,agent,console}.exe .\scripts\build.ps1 # 本地跑通两端(零 frps 依赖的开发模式) .\bin\rdp-manager-server.exe seed -user alice -pass <你的口令> # 建号(幂等) .\bin\rdp-manager-server.exe serve # 默认 :8080 .\bin\rdp-manager-agent.exe run -server http://127.0.0.1:8080 -data .\data -frpc-disabled .\bin\rdp-manager.exe # 登录 → 「允许控制本机」→ 机器列表 # 桌面体验(v0.3) # · 双击 rdp-manager.exe 即完整产品:Agent 未运行时自动拉起(隐藏窗口,console 退出不连坐) # · 无 cmd 窗口(windowsgui 子系统);最小化/关闭均隐藏到系统托盘,退出走托盘菜单 # · 单实例:重复启动唤起既有窗口后自行退出;Agent 拒绝多开(互斥体守卫) # · 机器列表自动标识「本机」并禁用其连接按钮(连接自己无意义) # · Agent 日志:%ProgramData%\rdp-manager\agent-console.log # 测试 go test ./... # 含服务端全链路冒烟(httptest) .\scripts\smoke.ps1 # 真实进程冒烟:种子→登录→绑定→心跳→出票→兑换→复用拒绝 .\scripts\e2e-local.ps1 -FrpsAddr <你的frps域名> # 本地全环路 E2E:数据面走真实 frps,RDP 协商字节经中继往返 # 加 -LaunchMstsc 可在验证通过后拉起真实 mstsc 亲测 .\scripts\e2e-remote.ps1 -ServerUrl https://<你的管理端域名> -User <账号> -Pass <口令> # 生产环境全环路验收(自动清理测试机器) # 发布 .\scripts\release.ps1 # 一条命令产出:便携 zip + 安装包 setup.exe + latest.json(均在 dist\) .\scripts\release.ps1 -Upload # 打包后直传服务器下载目录(SSH 别名 ai) .\scripts\make-installer.ps1 # 仅构建安装包(填充载荷 → 编译向导 → dist\rdp-manager--setup.exe) # 产品页:<管理端域名>/ ;下载: # /download/rdp-manager--setup.exe 安装版(用户级,免管理员,可控制面板卸载) # /download/rdp-manager--windows-amd64.zip 便携版(解压即用) # 服务器侧:compose 挂 ./public/downloads:/downloads + .env 加 RDP_DOWNLOADS_DIR=/downloads # 客户端自动更新:console 启动/每 6h 检查,顶栏「🆕」确认后自动完成(下载校验→重启应用) # 安装器(cmd/installer,独立 module) # · 向导四页:欢迎 → 选项(目录/开机自启/快捷方式) → 进度 → 完成 # · 用户级安装:%LocalAppData%\Programs\rdp-manager,HKCU 卸载项,HKCU Run 自启 # · 命令行:--silent 静默 / --dir 指定目录 / --uninstall 卸载 # · 测试:go test ./... (编码一致性、自删除、PS5.1 语法回归) ``` 真实连接需 frpc.exe(与 console 同目录或 PATH)与公网 frps;`-frpc-disabled` 时 Agent 只跑心跳与 IPC。 ## 客户端安装(目标机) 管理员 PowerShell:`.\scripts\install.ps1 -ServerUrl https://rdp.example.com [-FrpcPath ]` ——写入 `Program Files\rdp-manager`、SYSTEM 计划任务(开机自启)、开始菜单快捷方式;卸载用 `uninstall.ps1`。 未签名 exe 首次运行会有 SmartScreen 告警,手动放行(§10)。 ## 服务端部署(腾讯云) ```bash cd deploy && cp .env.example .env # 填入 server keygen 生成的两个密钥与 frps token docker compose up -d --build # 127.0.0.1:8081,仅本机 nginx 可见 # nginx:nginx-rdp.conf.example → /etc/nginx/conf.d/(含登录端点限流) ``` ## 里程碑 - [x] **M1 骨架**:三端代码 + 构建 + 冒烟(2026-09-17) - [x] **M1 数据面联调**:本地全环路 E2E,真实 frps 中转,含 RDP 协议探测双重确认(2026-09-17) - [x] **M1 部署联调**:服务端上腾讯云(HTTPS + compose,见 deploy/OPS-NOTES.md),生产全环路 E2E 10/10(2026-09-17) - [x] **M1 产品验收**:桌面控制台全流程人工验收——双击 exe → 登录 → 绑定本机 → 机器列表在线 → 一键连接拉起 mstsc 经公网隧道连入(2026-09-17) - [ ] **M2 多用户**:邀请码注册 + frps 插件准入 + 密钥轮换/强制下线 + 审计 + Web 管理页 - [ ] **M3 体验**:xtcp P2P 直连 + Wake-on-LAN + 自动更新 + 托盘完善 ## 相关资料 - frp:https://github.com/fatedier/frp - Wails v3:https://v3.wails.io/(Beta;控制台经 `/wails/runtime.js` 的 `Call.ByName` 调用 Go services,无需 npm/代码生成) - 数据面前置项目:`../lmstudio-proxy`(frps 部署、stcp 隧道、计划任务自启方案均出自该项目并已验证)