跳到主内容

Cloudflare Workers 免费搭建开源远程桌面完整教程:无需 VPS,支持 WebRTC P2P、D1、KV、R2、浏览器远程控制、Windows 客户端和文件传输

GsDesk 是一款基于 Cloudflare Workers 与 VPS 自托管 的开源远程桌面项目,支持 WebRTC P2P 直连,服务端仅负责 API、身份认证和 WebSocket 信令,不中转桌面视频流,大幅降低服务器带宽成本。项目支持 Cloudflare 免费套餐 部署,也可以使用 Docker 在 VPS 上自托管,内置 Windows 客户端、浏览器控制端、手机远程控制,支持 8 位设备 ID、OTP 一次性密码、永久密码、Ed25519 设备认证、JWT 身份验证、文件传输、剪贴板同步、自动重连 等完整功能。

GSProber · 主机测评编辑306 阅读
GsDesk 是一款基于 Cloudflare Workers 与 VPS 自托管 的开源远程桌面项目,支持 WebR…

image.png

gsdesk — 利用Cloudflare Workers + KV + D1 + R2自建免费开源远程桌面

本文详细介绍 gsdesk 的功能特点、系统架构、Cloudflare 部署、VPS 自托管、Windows 客户端、Web 控制端、开发环境、API、安全设计以及完整配置说明,帮助开发者快速搭建属于自己的远程桌面平台。

v0.1.7 · 产品规格 · Cloudflare 部署 · VPS 自托管

gsdesk 是一款开源远程桌面方案:用 Cloudflare Workers(免费套餐可用)或 VPS 自托管 提供 API 与 WebSocket 信令;桌面画面经 WebRTC P2P 直连,服务端不中转视频流。

  • Windows 主客户端gsdesk-client.exe,本地 UI http://127.0.0.1:19527,控制端与被控端合一
  • 手机 / 浏览器:通过可配置的安全入口(默认 https://你的域名/app/)打开控制界面
  • 根路径 /:仅返回 success,表示 API 正常,不是控制页面

国内用户说明 使用 Cloudflare 时,部分操作(绑定支付方式、升级套餐等)可能需要 Visa / Mastercard。若国内银行卡无法验证,可参考:虚拟信用卡实测与开卡指南


快速开始

步骤 操作
1 部署 Cloudflare WorkerVPS
2 下载 gsdesk-client.exe 并运行
3 客户端 设置 → 填写 API 地址与 CONTROLLER_JWT_SECRET本机 开启「允许被控」→ 远程控制 输入 8 位设备 ID

连接密码支持一次性密码(OTP)永久密码,输入后系统自动识别;永久密码连接成功后会记住,OTP 不会保存。


功能概览

远程控制

  • 统一 Windows 客户端:控制端 + 被控端,无需分别安装
  • WebRTC P2P:键鼠、剪贴板、桌面画面端到端直连(默认 JPEG,可选 VP8)
  • 8 位设备 ID、最近连接、适应 / 铺满 / 画质 / 全屏、断线 30 秒自动重连

安全与访问

  • Ed25519 设备密钥 + JWT 控制器令牌
  • OTP 可手动刷新;永久密码自定义
  • 默认自动接受远程连接;关闭后被控端弹窗确认
  • 连接限流与签名校验(生产环境请更换强随机密钥)

部署方式

方式 说明
Cloudflare Workers D1 + KV + R2 + Durable Objects,一键 Deploy 按钮
VPS 自托管 Docker 或 npm run dev:server,SQLite 持久化
手机浏览器入口 WEB_APP_PATH 配置(默认 /app),见 配置说明

架构一览

Plain Text
┌──────────────────────────────────────────┐
         │  后端(二选一)                            │
         │  Cloudflare Worker  或  VPS apps/server   │
         │  GET /           →  success(健康探测)    │
         │  GET /app/       →  手机/浏览器控制 UI     │
         │  /api/*  /ws/*   →  API + 信令             │
         └─────────────────┬────────────────────────┘
                           │ HTTPS / WSS
                           ▼
              gsdesk-client.exe(Windows)
              127.0.0.1:19527  控制 + 被控
                           │
              WebRTC P2P ◄──────────────► 对端 Agent
              (画面不经 Worker / VPS 中转)
层级 Cloudflare VPS 自托管
配置文件 根目录 wrangler.toml apps/server + .env
数据库 D1 SQLite
信令 Durable Objects Node WebSocket 房间
文件存储 R2 本地 / 可扩展

部署到 Cloudflare

Deploy to Cloudflare Workers

部署完成后验证:

  1. 访问 https://你的域名/ → 看到 success
  2. 访问 https://你的域名/app/ → 打开手机 / 浏览器控制界面(路径可在 wrangler.toml 修改)
  3. 在客户端 设置 填入 Worker 地址与 CONTROLLER_JWT_SECRET
Bash
git clone https://github.com/gsvps/gsdesk.git
cd gsdesk
npm install
npx wrangler login
npm run deploy:cloudflare   # 构建 Web 入口 + 数据库迁移 + 部署 Worker

详见 https://www.gsvps.com/articles/news-20

VPS 自托管

Bash
docker compose up -d --build
# 或本地开发:npm run dev:server

详见 https://www.gsvps.com/articles/news-21


Windows 客户端

下载 gsdesk-client.exe(最新 Release)

便携免安装。启动后浏览器打开 http://127.0.0.1:19527

左栏 · 本机 中栏 · 设置 右栏 · 远程控制
允许被控、设备 ID、连接测试 API 地址、控制器令牌、画质与剪贴板 输入 8 位 ID、最近连接、进入远程桌面
一次性 / 永久密码 设备名、下载目录、手机入口链接 远程会话与文件传输

配置存放位置

  • API / 令牌:localStorage127.0.0.1:19527 页面)
  • Agent 设置:%USERPROFILE%\.gsdesk\config.json

自行编译

Bash
cd apps/agent
powershell -ExecutionPolicy Bypass -File .\build-client.ps1

手机 / 浏览器控制

Worker 与 VPS 均托管一份轻量 Web 控制端,入口路径由环境变量 WEB_APP_PATH 决定(默认 /app)。

场景 地址示例
健康探测 https://你的域名/success
手机控制 https://你的域名/app/
健康检查 API GET /api/health → 含 web_app_entry 字段

客户端 设置 页会在连接成功后显示完整手机链接,无需手拼路径。

修改入口路径时(例如改为 /desk):

  1. 编辑 wrangler.toml[vars] WEB_APP_PATH,或 VPS 的 .env
  2. 执行 npm run build:web:app(同步 Vite base 路径)
  3. 重新 npm run deploy:cloudflare 或重启 VPS

配置说明

Worker(wrangler.toml[vars]

变量 说明
WEB_APP_PATH 手机 / 浏览器控制入口,默认 /app
CONTROLLER_JWT_SECRET 控制器 JWT 密钥,生产环境务必更换
CLIENT_DOWNLOAD_URL 客户端 exe 下载地址
CLIENT_LATEST_VERSION 客户端版本号(可选展示)

VPS(apps/server/.env

INI
WEB_APP_PATH=/app
CONTROLLER_JWT_SECRET=请更换为强随机字符串

Agent 可选环境变量

Shell
$env:gsdesk_SERVER = "https://your-worker.example.com"

本地开发

Bash
git clone https://github.com/gsvps/gsdesk.git
cd gsdesk
npm install
终端 命令 说明
1 npm run db:migrate:local -w @gsdesk/worker 本地 D1 迁移
1 npm run dev:worker API @ http://127.0.0.1:8787
2 .\apps\agent\gsdesk-client.exe 客户端;设置 API 为 http://127.0.0.1:8787

改 UI 时:npm run dev:web(Vite);嵌入 exe 前需重新 build-client.ps1


常用命令

Bash
npm run dev:worker        # Worker 本地 API
npm run dev:server        # VPS 本地 API
npm run dev:web           # 前端开发
npm run build:web:app     # 按 WEB_APP_PATH 构建托管用 Web UI
npm run deploy:cloudflare # 构建 + 迁移 + 部署
npm run typecheck
npm run test

主要 API

方法 路径 说明
GET / success(非 UI)
GET /api/health 健康检查,含 web_app_entry
POST /api/device/register Agent 注册
GET /api/device/:id 查询设备(需 JWT)
POST /api/session/create 创建远程会话
GET /ws/device/:id Agent 信令
GET /ws/session/:id 控制端信令

目录结构

Plain Text
gsdesk/
├── apps/
│   ├── web/           # 控制端 UI(嵌入 exe + Worker/VPS 托管)
│   ├── worker/        # Cloudflare Worker API
│   ├── server/        # VPS 自托管 API
│   └── agent/         # Go 客户端(Release 分发 exe)
├── packages/protocol/
├── scripts/           # build-web-app.mjs 等
├── docs/
└── wrangler.toml

安全说明

  • 设备 ID 不是密码;Ed25519 私钥仅保存在 Agent 本机
  • WebRTC 媒体经 DTLS 加密;服务端不转发桌面流
  • 生产环境使用强随机 CONTROLLER_JWT_SECRET
  • Cloudflare 与 VPS 为独立后端,切换后需重新注册设备
  • 可通过修改 WEB_APP_PATH 使用非默认入口,降低被扫描常见路径的概率

常见问题(FAQ)

Cloudflare Workers 真的可以搭建远程桌面吗?

可以。

本项目利用 Cloudflare Workers 提供 API、身份认证和 WebSocket 信令,真正的桌面画面通过 WebRTC P2P 在两台设备之间直接传输,因此 Worker 不负责转发远程桌面视频流。


搭建这个项目需要购买 VPS 吗?

不需要。

项目可以直接部署到 Cloudflare Workers,免费套餐即可正常运行,无需购买 VPS、无需部署中继服务器,也无需维护 Linux 环境。

如果你希望完全自托管,也可以选择部署到自己的 VPS。


Cloudflare 免费套餐可以使用吗?

可以。

gsdesk 从设计之初就兼容 Cloudflare 免费套餐,普通用户可以直接使用 Workers、D1、KV、R2 与 Durable Objects 完成部署。

如果后期访问量增加,也可以根据需要升级 Cloudflare 套餐。


为什么使用 Cloudflare Workers 不会产生很高的流量费用?

因为远程桌面画面不会经过 Cloudflare Workers。

Workers 仅负责:

  • API
  • WebSocket 信令
  • 用户认证
  • 会话管理
  • 文件信息管理

桌面画面采用 WebRTC P2P 点对点直连,因此绝大部分流量不会经过 Worker。


远程桌面画面会经过 Cloudflare 或 VPS 中转吗?

不会。

gsdesk 默认采用 WebRTC P2P 技术,桌面画面直接在控制端与被控端之间传输。

服务器只负责建立连接,不负责转发视频流,因此可以有效降低服务器带宽占用。


支持哪些部署方式?

目前支持两种部署方式:

  • Cloudflare Workers(推荐,无需 VPS)
  • Linux VPS 自托管(Docker 或 Node.js)

两种后端协议保持一致,可以根据自己的需求选择部署方式。


Cloudflare Workers 版本和 VPS 版本有什么区别?

Cloudflare Workers 版本使用:

  • Workers
  • D1
  • KV
  • R2
  • Durable Objects

VPS 版本使用:

  • Node.js
  • SQLite
  • 本地文件存储
  • WebSocket

两者功能基本一致,区别主要在部署环境和数据存储方式。


支持浏览器远程控制吗?

支持。

项目提供独立的 Web 控制端,只需打开浏览器访问配置好的控制页面即可连接远程设备,无需安装控制端软件。

同时也支持手机浏览器访问。


支持哪些操作系统?

当前版本提供 Windows Agent。

控制端支持:

  • Windows 客户端
  • Chrome
  • Edge
  • Firefox
  • Safari
  • Android 浏览器
  • iPhone Safari

未来计划支持更多平台。


如何连接远程设备?

连接流程非常简单:

  1. 部署 Cloudflare Workers 或 VPS 后端。
  2. 下载并运行 Windows 客户端。
  3. 输入 API 地址和控制器 JWT。
  4. 输入 8 位设备 ID。
  5. 输入一次性密码(OTP)或永久密码即可开始远程控制。

支持文件传输吗?

支持。

项目支持远程文件上传和下载。

Cloudflare 部署时可使用 R2 对象存储,VPS 部署则使用本地文件存储。


项目安全吗?

gsdesk 提供多项安全机制,包括:

  • Ed25519 设备身份认证
  • JWT 控制器认证
  • OTP 一次性密码
  • 永久访问密码
  • WebRTC DTLS 加密
  • API 限流
  • 登录失败限制
  • 可关闭自动接受并要求用户确认连接

生产环境建议使用随机生成的 JWT 密钥,并启用所有默认安全设置。


可以修改浏览器控制入口吗?

可以。

默认浏览器入口为:

https://你的域名/app/

可以通过修改 WEB_APP_PATH 自定义为:

  • /desk
  • /remote
  • /control

修改后重新构建并部署即可生效。


Cloudflare Workers 版本适合哪些场景?

适合:

  • 个人远程办公
  • 家庭电脑远程控制
  • IT 运维
  • 开发者远程调试
  • 自建远程桌面平台
  • 企业内部远程协助
  • 个人 NAS 远程管理
  • 开源项目学习与二次开发

无需购买 VPS,即可快速拥有自己的远程控制平台。

要闻如果你想搭建一个属于自己的远程桌面平台,又不想购买中继服务器,GsDesk 提供了一套基于 Cloudflare Wo…

GsDesk Cloudflare 部署教程:免费使用 Cloudflare Workers 自建远程桌面,支持 WebRTC P2P 与浏览器远程控制

如果你想搭建一个属于自己的远程桌面平台,又不想购买中继服务器,GsDesk 提供了一套基于 Cloudflare Workers 的免费部署方案。整个项目可以直接部署到 Cloudflare,利用 Workers、D1、KV、R2 和 Durable Objects 构建完整的远程控制后台,服务端只负责 API、身份认证和 WebSocket 信令,真正的桌面画面通过 WebRTC P2P 直连 传输,不占用 Worker 流量,也不用担心视频中继带来的高额带宽成本。

94 阅读

要闻想自己搭建一个类似Chrome Remote Desktop 的远程桌面,又不想长期维护中继服务器?GsDesk 就是…

GsDesk 开源远程桌面教程:基于 Cloudflare Workers 或 VPS 自建,无需中继服务器,支持 WebRTC、浏览器远程控制(2026)

想自己搭建一个类似Chrome Remote Desktop 的远程桌面,又不想长期维护中继服务器?GsDesk 就是一个基于 Cloudflare Workers 或 VPS 的开源远程控制方案,支持 WebRTC P2P 直连,服务端只负责 API 和信令,不转发桌面画面,大幅降低服务器带宽成本。

76 阅读

要闻如果你不想依赖 Cloudflare,也希望把远程桌面平台完全部署在自己的服务器上,那么 GsDesk 同样支持 VP…

GsDesk VPS 自托管教程:Docker 部署开源远程桌面,支持 WebRTC P2P、浏览器远程控制

如果你不想依赖 Cloudflare,也希望把远程桌面平台完全部署在自己的服务器上,那么 GsDesk 同样支持 VPS 自托管。GsDesk 的 VPS 版本采用 Node.js + Hono + SQLite 构建后台,支持 Docker Compose 一键部署,提供 API、WebSocket 信令以及浏览器远程控制界面。整个协议与 Cloudflare 版本保持一致,只需一台 Linux VPS,就能快速搭建属于自己的远程控制平台。

81 阅读

常见问题

为什么用 Cloudflare Workers 部署这套远程桌面不会产生很高的流量费用?

因为远程桌面画面不经过 Cloudflare Workers 传输。Workers 只负责 API、WebSocket 信令、用户认证、会话管理和文件信息管理,桌面画面走 WebRTC P2P 点对点直连,所以绝大部分流量不会经过 Worker。

这个远程桌面项目支持哪些系统的控制端和被控端?

当前版本只提供 Windows Agent 作为被控端;控制端支持 Windows 客户端,以及 Chrome、Edge、Firefox、Safari 等浏览器,同时也支持 Android 浏览器和 iPhone Safari 远程控制。

可以修改浏览器控制入口路径吗?怎么改?

可以。默认入口是 https://你的域名/app/,可以通过修改环境变量 WEB_APP_PATH 自定义为 /desk、/remote、/control 等路径,修改后需要重新构建(npm run build:web:app)并部署才能生效。

如果不想用 Cloudflare,还有其他部署方式吗?

有。除了 Cloudflare Workers(无需 VPS),还可以选择部署到 Linux VPS,用 Docker 或 npm run dev:server 自托管,两种后端协议保持一致,可以根据需要选择。

评价与回复

无需登录;审核通过后公开显示。