From d45e85d29b3c411c73765f2c80585e75314a6f57 Mon Sep 17 00:00:00 2001 From: ljw <84855512@qq.com> Date: Thu, 19 Sep 2024 11:02:54 +0800 Subject: [PATCH] up README.md --- README.md | 184 ++++++++++++++++++++------------------- docs/web_admin_oauth.png | Bin 0 -> 44384 bytes 2 files changed, 94 insertions(+), 90 deletions(-) create mode 100644 docs/web_admin_oauth.png diff --git a/README.md b/README.md index 18d2438..66ce43e 100644 --- a/README.md +++ b/README.md @@ -17,18 +17,18 @@ 1. PC客户端使用的是 ***1.3.0***,经测试 ***1.2.6+*** 都可以 2. server端必须指定key,不能用自带的生成的key,否则可能链接不上或者超时 - -```bash -hbbs -r -k -hbbr -k -``` - -比如 - -```bash -hbbs -r -k abc1234567 -hbbr -k abc1234567 -``` + + ```bash + hbbs -r -k + hbbr -k + ``` + + 比如 + + ```bash + hbbs -r -k abc1234567 + hbbr -k abc1234567 + ``` ## 功能 @@ -66,6 +66,10 @@ hbbr -k abc1234567 ![web_admin_gr](docs/web_admin_gr.png) 5. 可以直接打开webclient,方便使用 ![web_webclient](docs/admin_webclient.png) +6. Oauth,暂时只支持了`Github`, 需要创建一个`OAuth App`,然后配置到后台 + ![web_admin_oauth](docs/web_admin_oauth.png) + - github在`Settings`->`Developer settings`->`OAuth Apps`->`New OAuth App` + 中创建,地址`https://github.com/settings/developers` ### **Web Client**: @@ -148,87 +152,87 @@ lejianwen/rustdesk-api 2. 使用`docker compose` -- 简单示例 + - 简单示例 -```docker-compose -services: - rustdesk-api: - container_name: rustdesk-api - environment: - - RUSTDESK_API_RUSTDESK_ID_SERVER=192.168.1.66:21116 - - RUSTDESK_API_RUSTDESK_RELAY_SERVER=192.168.1.66:21117 - - RUSTDESK_API_RUSTDESK_API_SERVER=http://192.168.1.66:21114 - - RUSTDESK_API_RUSTDESK_KEY=123456789 - ports: - - 21114:21114 - image: lejianwen/rustdesk-api - volumes: - - /data/rustdesk/api:/app/data #将数据库挂载出来方便备份 - networks: - - rustdesk-net - restart: unless-stopped -``` + ```docker-compose + services: + rustdesk-api: + container_name: rustdesk-api + environment: + - RUSTDESK_API_RUSTDESK_ID_SERVER=192.168.1.66:21116 + - RUSTDESK_API_RUSTDESK_RELAY_SERVER=192.168.1.66:21117 + - RUSTDESK_API_RUSTDESK_API_SERVER=http://192.168.1.66:21114 + - RUSTDESK_API_RUSTDESK_KEY=123456789 + ports: + - 21114:21114 + image: lejianwen/rustdesk-api + volumes: + - /data/rustdesk/api:/app/data #将数据库挂载出来方便备份 + networks: + - rustdesk-net + restart: unless-stopped + ``` -- 根据rustdesk提供的示例加上自己的rustdesk-api + - 根据rustdesk提供的示例加上自己的rustdesk-api -```docker-compose -networks: - rustdesk-net: - external: false -services: - hbbs: - container_name: hbbs - ports: - - 21115:21115 - - 21116:21116 # 自定义 hbbs 映射端口 - - 21116:21116/udp # 自定义 hbbs 映射端口 - - 21118:21118 # web client 需要 - image: rustdesk/rustdesk-server - command: hbbs -r -k 123456789 # 填入个人域名或 IP + hbbr 暴露端口 - volumes: - - /data/rustdesk/hbbs:/root # 自定义挂载目录 - networks: - - rustdesk-net - depends_on: - - hbbr - restart: unless-stopped - deploy: - resources: - limits: - memory: 64M - hbbr: - container_name: hbbr - ports: - - 21117:21117 # 自定义 hbbr 映射端口 - image: rustdesk/rustdesk-server - command: hbbr -k 123456789 - #command: hbbr - volumes: - - /data/rustdesk/hbbr:/root # 自定义挂载目录 - networks: - - rustdesk-net - restart: unless-stopped - deploy: - resources: - limits: - memory: 64M - rustdesk-api: - container_name: rustdesk-api - environment: - - RUSTDESK_API_RUSTDESK_ID_SERVER=192.168.1.66:21116 - - RUSTDESK_API_RUSTDESK_RELAY_SERVER=192.168.1.66:21117 - - RUSTDESK_API_RUSTDESK_API_SERVER=http://192.168.1.66:21114 - - RUSTDESK_API_RUSTDESK_KEY=123456789 - ports: - - 21114:21114 - image: lejianwen/rustdesk-api - volumes: - - /data/rustdesk/api:/app/data #将数据库挂载出来方便备份 - networks: - - rustdesk-net - restart: unless-stopped - -``` + ```docker-compose + networks: + rustdesk-net: + external: false + services: + hbbs: + container_name: hbbs + ports: + - 21115:21115 + - 21116:21116 # 自定义 hbbs 映射端口 + - 21116:21116/udp # 自定义 hbbs 映射端口 + - 21118:21118 # web client 需要 + image: rustdesk/rustdesk-server + command: hbbs -r -k 123456789 # 填入个人域名或 IP + hbbr 暴露端口 + volumes: + - /data/rustdesk/hbbs:/root # 自定义挂载目录 + networks: + - rustdesk-net + depends_on: + - hbbr + restart: unless-stopped + deploy: + resources: + limits: + memory: 64M + hbbr: + container_name: hbbr + ports: + - 21117:21117 # 自定义 hbbr 映射端口 + image: rustdesk/rustdesk-server + command: hbbr -k 123456789 + #command: hbbr + volumes: + - /data/rustdesk/hbbr:/root # 自定义挂载目录 + networks: + - rustdesk-net + restart: unless-stopped + deploy: + resources: + limits: + memory: 64M + rustdesk-api: + container_name: rustdesk-api + environment: + - RUSTDESK_API_RUSTDESK_ID_SERVER=192.168.1.66:21116 + - RUSTDESK_API_RUSTDESK_RELAY_SERVER=192.168.1.66:21117 + - RUSTDESK_API_RUSTDESK_API_SERVER=http://192.168.1.66:21114 + - RUSTDESK_API_RUSTDESK_KEY=123456789 + ports: + - 21114:21114 + image: lejianwen/rustdesk-api + volumes: + - /data/rustdesk/api:/app/data #将数据库挂载出来方便备份 + networks: + - rustdesk-net + restart: unless-stopped + + ``` #### 下载release直接运行 diff --git a/docs/web_admin_oauth.png b/docs/web_admin_oauth.png new file mode 100644 index 0000000000000000000000000000000000000000..05ea579ee6301f63523fc79cf2ecdd84e3f84966 GIT binary patch literal 44384 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