跳到主内容

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

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

GSProber · 主机测评编辑81 阅读
如果你不想依赖 Cloudflare,也希望把远程桌面平台完全部署在自己的服务器上,那么 GsDesk 同样支持 VP…

image.png

GsDesk VPS 自托管

桌面数据依旧采用 WebRTC P2P 直连,服务器不会中转桌面视频流,因此即使配置较低的 VPS,也能轻松承载大量远程连接。项目还支持 Windows 客户端、浏览器控制端、手机远程控制、SQLite 数据库、本地文件存储、JWT 身份认证、OTP 一次性密码、永久访问密码、自定义 Web 控制路径 等完整功能。

本教程详细介绍 GsDesk VPS 版本的安装部署、Docker Compose 配置、环境变量说明、SQLite 数据持久化、Web 控制端构建、Cloudflare 与 VPS 的区别、后端切换方式以及常见问题排查,帮助开发者快速搭建属于自己的开源远程桌面系统。VPS 与 Cloudflare Worker 协议相同:API + WebSocket 信令 + 可配置 Web 控制端。根路径 GET / 返回 success;手机/浏览器控制界面在 WEB_APP_PATH(默认 /app/)。

Windows 主客户端请用 GsDesk-client.exe;浏览器控制无需安装 exe。

部署 存储 信令 Web UI
Cloudflare D1 / KV / R2 / DO Durable Objects [assets] + WEB_APP_PATH
VPS SQLite / SqliteKv / 本地文件 Nodews web-app-static.ts + WEB_APP_PATH

HTTP 路由与 Worker 共享:apps/worker/src/app.tscreateCoreApp)。

Cloudflare 部署见 deploy.md


快速启动

Bash
git clone https://github.com/gsvps/GsDesk.git
cd GsDesk
npm install
cp apps/server/.env.example apps/server/.env   # 按需修改
npm run dev:server    # http://127.0.0.1:8787

验证:

Bash
curl http://127.0.0.1:8787/              # success
curl http://127.0.0.1:8787/api/health    # 含 web_app_entry: "/app/"

浏览器打开 http://127.0.0.1:8787/app/ 可测试 Web 控制端。

运行 GsDesk-client.exe设置 → API 地址 http://127.0.0.1:8787,令牌与 .envCONTROLLER_JWT_SECRET 一致。


环境变量

复制 apps/server/.env.example 并按需修改:

变量 默认 说明
PORT 8787 HTTP + WebSocket 监听端口
GsDesk_DATA ./data SQLite 数据库与上传文件目录
CONTROLLER_JWT_SECRET 开发默认 与客户端 JWT 令牌一致,生产必换
WEB_APP_PATH /app 手机/浏览器控制入口
SKIP_SIGNATURE_VERIFY false 生产建议保持false
ALLOWED_ORIGIN 跨域 Origin(一般不需要)
APP_NAME 界面显示名称,留空则GsDesk

示例:

INI
PORT=8787
GsDesk_DATA=./data
CONTROLLER_JWT_SECRET=请更换为强随机字符串
WEB_APP_PATH=/app
SKIP_SIGNATURE_VERIFY=false

Web 控制端静态资源

VPS 从 apps/web/dist 提供 SPA(需预先构建):

Bash
npm run build:web:app   # 读取 wrangler.toml 或 WEB_APP_PATH 环境变量
npm run dev:server

修改 WEB_APP_PATH 后必须重新 build:web:app,否则 Vite base 与路由不一致。

GET /api/health 返回的 web_app_entry 供客户端设置页显示完整手机链接。


Docker Compose

Bash
docker compose up -d --build
  • 监听 8787
  • 数据持久化到卷 ./data
  • 环境变量通过 docker-compose.yml.env 注入

部署前建议在宿主机执行 npm run build:web:app,确保镜像内 apps/web/distWEB_APP_PATH 匹配(若 compose 未在构建阶段自动执行)。

访问:

  • http://服务器IP:8787/success
  • http://服务器IP:8787/app/ → Web 控制端

与 Cloudflare 的差异

Cloudflare VPS
数据库 D1 SQLite
KV Cloudflare KV SqliteKv(表 kv_store
文件 R2 本地GsDesk_DATA
信令 Durable Objects 内存 WebSocket 房间
TLS Cloudflare 边缘 需自行配置 Nginx / Caddy 反代

切换后端

Cloudflare Worker 与 VPS 数据不共享。切换时:

  1. 在新后端重新注册设备(Agent 会获得新 device_id
  2. 客户端 设置 更新 API 地址与 JWT
  3. 重新配置 OTP / 永久密码

故障排查

问题 处理
/app/ 404 npm run build:web:app;确认 apps/web/dist 存在
限流 / OTP 重启丢失 检查GsDesk_DATA 可写;KV 已持久化到 SQLite
签名失败 设置SKIP_SIGNATURE_VERIFY=false 并确保 Agent 时钟正常
WebRTC 不通 检查防火墙;当前无 TURN

VPS 同样不中转桌面视频流;远控画面经 WebRTC P2P 直连。

`

教程GsDesk 是一款基于 Cloudflare Workers 与 VPS 自托管 的开源远程桌面项目,支持 WebR…

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 身份验证、文件传输、剪贴板同步、自动重连 等完整功能。

306 阅读

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

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

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

76 阅读

要闻如果你想搭建一个属于自己的远程桌面平台,又不想购买中继服务器,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 阅读

常见问题

GsDesk VPS 版本用什么数据库存储数据?

VPS 版本使用 SQLite 存储设备、会话等数据,KV 功能通过 SqliteKv(表名 kv_store)持久化实现,文件保存在本地目录,而不是 Cloudflare 的 D1/R2。

GsDesk 用 Docker Compose 部署时监听哪个端口,数据怎么持久化?

执行 docker compose up -d --build 部署后监听 8787 端口,数据持久化到本地卷 ./data,环境变量通过 docker-compose.yml 或 .env 注入。

从 Cloudflare 切换到 VPS 部署后,之前注册的设备还能直接用吗?

不能直接沿用。Cloudflare Worker 与 VPS 数据不共享,切换后端时需要在新后端重新注册设备(获得新的 device_id),并在客户端设置里更新 API 地址与 JWT,重新配置 OTP 或永久密码。

VPS 自托管版本在 TLS 上和 Cloudflare 版本有什么区别?

Cloudflare 部署由 Cloudflare 边缘自动处理 TLS;VPS 自托管则需要自己配置 Nginx 或 Caddy 等反向代理来处理 TLS,这是两者部署差异表里明确列出的一项。

评价与回复

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