From b06d9c4e22b2edb60dd1a77c2899aeac9236095c Mon Sep 17 00:00:00 2001 From: lejianwen <84855512@qq.com> Date: Sun, 17 Nov 2024 18:27:15 +0800 Subject: [PATCH] up readme --- README.md | 6 ++++++ README_EN.md | 6 ++++++ docs/webclientv2.png | Bin 0 -> 31927 bytes 3 files changed, 12 insertions(+) create mode 100644 docs/webclientv2.png diff --git a/README.md b/README.md index 65c2f97..ba1fd42 100644 --- a/README.md +++ b/README.md @@ -39,6 +39,7 @@ - 自动获取ID服务器和KEY - 自动获取地址簿 - 游客通过临时分享链接直接远程到设备 + - v2 Preview - CLI - 重置管理员密码 @@ -142,6 +143,11 @@ ![webclient_conf](docs/webclient_conf.png) 3. 登录后,会自动同步ID服务器和KEY 4. 登录后,会将地址簿自动保存到web client中,方便使用 +5. 现已支持`v2 Preview`,访问路径是`/webclient2` + ![webclientv2](./docs/webclientv2.png) +6. `v2 preview` 部署 + - 如果是通过`443`端口的`https`部署,必须配置反向代理,可以参考[官方文档](https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/faq/#8-add-websocket-secure-wss-support-for-the-id-server-and-relay-server-to-enable-secure-communication-for-the-web-client) + - 如果是`http`或者其他的`https`端口部署,则和`v1`一样,配置好`21118`,`21119`即可 ### 自动化文档: 使用 Swag 生成 API 文档,方便开发者理解和使用 API。 diff --git a/README_EN.md b/README_EN.md index 1274f1c..495135d 100644 --- a/README_EN.md +++ b/README_EN.md @@ -147,6 +147,12 @@ installation are `admin` `admin`, please change the password immediately. ![webclient_conf](docs/webclient_conf.png) 3. After logging in, the ID server and key will be automatically synced. 4. The address book will also be automatically saved to the web client for convenient use. +5. Now supports `v2 Preview`, accessible at `/webclient2` + ![webclientv2](./docs/webclientv2.png) +6. `v2 preview` deployment + - If deploying via `https` on port `443`, you must configure a reverse proxy. Refer to the [official documentation](https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/faq/#8-add-websocket-secure-wss-support-for-the-id-server-and-relay-server-to-enable-secure-communication-for-the-web-client) + - If deploying via `http` or other `https` ports, configure `21118` and `21119` as with `v1` + ### Automated Documentation : API documentation is generated using Swag, making it easier for developers to understand and use the API. diff --git a/docs/webclientv2.png b/docs/webclientv2.png new file mode 100644 index 0000000000000000000000000000000000000000..9315a76a9f60e72b8e8d43e0b915a71a78e142af GIT binary patch literal 31927 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 M>i6FjJ_k