Skip to content

HanGYvv/rustdesk-api

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

413 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RustDesk API

English Doc

本项目使用 Go 实现了 RustDesk 的 API,并包含了 Web Admin 和 Web 客户端。

version license ci Go Gin Gorm Swag Go Report Card

搭配 RustDesk Server 使用更佳

RustDesk Server fork 自 RustDesk Server 官方仓库,并合入 lejianwen/rustdek-server 以下功能:

  1. 解决使用API链接超时问题
  2. 可以强制登录后才能发起链接
  3. 支持客户端websocket

主要功能

  • PC端API
    • 个人版API
    • 登录
    • 地址簿
    • 群组
    • 授权登录:支持 githubgoogleOIDC 登录,支持 web 后台 授权登录,支持 LDAP(AD 和 OpenLDAP 已测试),如果 API Server 配置了 LDAP
    • i18n
  • Web Admin
    • 用户管理
    • 设备管理
    • 地址簿管理
    • 标签管理
    • 群组管理
    • OAuth 管理
    • 配置LDAP, 配置文件或者环境变量
    • 登录日志
    • 连接日志
    • 文件传输日志
    • 快速使用 web client
    • i18n
    • 通过 web client 分享给游客
    • 服务器控制:一些官方的简单的指令 WIKI
  • Web Client
    • 自动获取API server
    • 自动获取ID服务器和KEY
    • 自动获取地址簿
    • 游客通过临时分享链接直接远程到设备
  • CLI
    • 重置管理员密码

使用说明

API 服务

基本实现了PC端基础的接口。支持Personal版本接口,可以通过配置文件rustdesk.personal或环境变量RUSTDESK_API_RUSTDESK_PERSONAL来控制是否启用

登录

登录

地址簿和群组

地址簿 群组
地址簿 群组

Web Admin

  • 使用前后端分离,提供用户友好的管理界面,主要用来管理和展示。前端代码在 rustdesk-api-web
  • 后台访问地址是 http://<your server>[:port]/_admin/
  • 初次安装管理员为用户名 admin,密码将在控制台打印,可以通过 [命令行](### CLI) 更改密码

初始化管理员密码

1.管理员界面 web_admin

2.普通用户界面 web_user

3.每个用户可以多个地址簿,也可以将地址簿共享给其他用户

4.分组可以自定义,方便管理,暂时支持两种类型: 共享组普通组

5.可以直接打开webclient,方便使用;也可以分享给游客,游客可以直接通过webclient远程到设备

6.OAuth 支持:

目前支持 GitHubGoogle 以及 OIDC,需要创建一个 OAuth App 并配置到后台。对于 GoogleGitHubIssuerScopes 不需要填写;对于 OIDCIssuer 是必须的,Scopes 是可选的,默认为 openid,profile,email,确保可以获取 subemailpreferred_usernameGitHub OAuth AppSettings -> Developer settings -> OAuth Apps -> New OAuth App 中创建,地址为 开发者设置Authorization callback URL 填写 http://<your server[:port]>/api/oidc/callback,比如 http://127.0.0.1:21114/api/oidc/callback

7.登录日志

8.链接日志

9.文件传输日志

10.server控制

-简易模式:已经界面化了一些简单的指令,可以直接在后台执行 rustdesk_command_simple

-高级模式:直接在后台执行指令 - 可以官方指令 - 可以添加自定义指令 - 可以执行自定义指令

11.LDAP 支持: 当在 API Server 上设置 LDAP(已测试 AD 和 LDAP)后,可以通过 LDAP 中的用户信息进行登录。如果 LDAP 验证失败,则回退到本地用户。

Web Client

1.如果已经登录了后台,web client将自动直接登录 2.如果没登录后台,点击右上角登录即可,api server已经自动配置好了 3.登录后,会自动同步ID服务器和KEY 4.登录后,会将地址簿自动保存到web client中,方便使用

自动化文档

使用 Swag 生成 API 文档,方便开发者理解和使用 API。

1.后台文档 <your server[:port]>/admin/swagger/index.html

2.PC端文档 <your server[:port]>/swagger/index.html api_swag

CLI

# 查看帮助
./apimain -h

重置管理员密码

./apimain reset-admin-pwd <pwd>

安装与运行

相关配置

*配置文件 *参考conf/config.yaml配置文件,修改相关配置。 *如果gorm.typesqlite,则不需要配置mysql相关配置。 *语言如果不设置默认为zh-CN

环境变量

环境变量和配置文件conf/config.yaml中的配置一一对应,变量名前缀是RUSTDESK_API 下面表格并未全部列出,可以参考conf/config.yaml中的配置。

变量名 说明 示例
TZ 时区 Asia/Shanghai
RUSTDESK_API_LANG 语言 en,zh-CN
RUSTDESK_API_APP_WEB_CLIENT 是否启用web-client; 1:启用,0:不启用; 默认启用 1
RUSTDESK_API_APP_REGISTER 是否开启注册; true, false 默认false false
RUSTDESK_API_APP_SHOW_SWAGGER 是否可见swagger文档;1显示,0不显示,默认0不显示 1
RUSTDESK_API_APP_TOKEN_EXPIRE token有效时长 168h
RUSTDESK_API_APP_DISABLE_PWD_LOGIN 是否禁用密码登录; true, false 默认false false
RUSTDESK_API_APP_REGISTER_STATUS 注册用户默认状态; 1 启用,2 禁用, 默认 1 1
RUSTDESK_API_APP_CAPTCHA_THRESHOLD 验证码触发次数; -1 不启用, 0 一直启用, >0 登录错误次数后启用 ;默认 3 3
RUSTDESK_API_APP_BAN_THRESHOLD 封禁IP触发次数; 0 不启用, >0 登录错误次数后封禁IP; 默认 0 0
-----ADMIN配置-----
RUSTDESK_API_ADMIN_TITLE 后台标题 RustDesk Api Admin
RUSTDESK_API_ADMIN_HELLO 后台欢迎语,可以使用html
RUSTDESK_API_ADMIN_HELLO_FILE 后台欢迎语文件,如果内容多,使用文件更方便。会覆盖 RUSTDESK_API_ADMIN_HELLO ./conf/admin/hello.html
-----GIN配置-----
RUSTDESK_API_GIN_TRUST_PROXY 信任的代理IP列表,以,分割,默认信任所有 192.168.1.2,192.168.1.3
-----GORM配置-----
RUSTDESK_API_GORM_TYPE 数据库类型sqlite或者mysql,默认sqlite sqlite
RUSTDESK_API_GORM_MAX_IDLE_CONNS 数据库最大空闲连接数 10
RUSTDESK_API_GORM_MAX_OPEN_CONNS 数据库最大打开连接数 100
RUSTDESK_API_RUSTDESK_PERSONAL 是否启用个人版API, 1:启用,0:不启用; 默认启用 1
-----MYSQL配置-----
RUSTDESK_API_MYSQL_USERNAME mysql用户名 root
RUSTDESK_API_MYSQL_PASSWORD mysql密码 111111
RUSTDESK_API_MYSQL_ADDR mysql地址 192.168.1.66:3306
RUSTDESK_API_MYSQL_DBNAME mysql数据库名 rustdesk
RUSTDESK_API_MYSQL_TLS 是否启用TLS, 可选值: true, false, skip-verify, custom false
-----RUSTDESK配置-----
RUSTDESK_API_RUSTDESK_ID_SERVER Rustdesk的id服务器地址 192.168.1.66:21116
RUSTDESK_API_RUSTDESK_RELAY_SERVER Rustdesk的relay服务器地址 192.168.1.66:21117
RUSTDESK_API_RUSTDESK_API_SERVER Rustdesk的api服务器地址 http://192.168.1.66:21114
RUSTDESK_API_RUSTDESK_KEY Rustdesk的key 123456789
RUSTDESK_API_RUSTDESK_KEY_FILE Rustdesk存放key的文件 ./conf/data/id_ed25519.pub
RUSTDESK_API_RUSTDESK_WEBCLIENT_MAGIC_QUERYONLINE Web client v2 中是否启用新的在线状态查询方法; 1:启用,0:不启用,默认不启用 0
RUSTDESK_API_RUSTDESK_WS_HOST 自定义Websocket Host wss://192.168.1.123:1234
----PROXY配置-----
RUSTDESK_API_PROXY_ENABLE 是否启用代理:false, true false
RUSTDESK_API_PROXY_HOST 代理地址 http://127.0.0.1:1080
----JWT配置----
RUSTDESK_API_JWT_KEY 自定义JWT KEY,为空则不启用JWT。如果没使用 rustdesk-server 中的 MUST_LOGIN,建议设置为空
RUSTDESK_API_JWT_EXPIRE_DURATION JWT有效时间 168h

运行

docker运行

1.直接docker运行,配置可以通过挂载配置文件/app/conf/config.yaml来修改,或者通过环境变量覆盖配置文件中的配置

docker run -d --name rustdesk-api -p 21114:21114 \
-v /data/rustdesk/api:/app/data \
-e TZ=Asia/Shanghai \
-e RUSTDESK_API_LANG=zh-CN \
-e RUSTDESK_API_RUSTDESK_ID_SERVER=192.168.1.66:21116 \
-e RUSTDESK_API_RUSTDESK_RELAY_SERVER=192.168.1.66:21117 \
-e RUSTDESK_API_RUSTDESK_API_SERVER=http://192.168.1.66:21114 \
-e RUSTDESK_API_RUSTDESK_KEY=<key> \
HanGYvv/rustdesk-api

2.使用docker compose,参考 WIKI

下载release直接运行

下载地址

源码安装

1.克隆仓库

git clone https://github.com/HanGYvv/rustdesk-api.git
cd rustdesk-api

2.安装依赖

go mod tidy
#安装swag,如果不需要生成文档,可以不安装
go install github.com/swaggo/swag/cmd/swag@latest

3.编译后台前端,前端代码在 rustdesk-api-web

cd resources
mkdir -p admin
git clone https://github.com/HanGYvv/rustdesk-api-web
cd rustdesk-api-web
npm install
npm run build
cp -ar dist/* ../admin/

4.运行

#直接运行
go run cmd/apimain.go
#或者使用generate_api.go生成api并运行
go generate generate_api.go

注意:使用 go run 或编译后的二进制时,当前目录下必须存在 confresources 目录。如果在其他目录运行,可通过 -c 和环境变量 RUSTDESK_API_GIN_RESOURCES_PATH 指定绝对路径,例如:

RUSTDESK_API_GIN_RESOURCES_PATH=/opt/rustdesk-api/resources ./apimain -c /opt/rustdesk-api/conf/config.yaml

5.编译,如果想自己编译,先cd到项目根目录,然后windows下直接运行build.bat,linux下运行build.sh,编译后会在release 目录下生成对应的可执行文件。直接运行编译后的可执行文件即可。

6.打开浏览器访问http://<your server[:port]>/_admin/,默认用户名密码为admin,请及时更改密码。

使用 s6 镜像运行

  • 已解决链接超时问题
  • 可以强制登录后才能发起链接
  • rustdesk-server
  • s6 构建的基础镜像改为 HanGYvv/rustdesk-server-s6:latest
networks:
  rustdesk-net:
    external: false
services:
  rustdesk:
    ports:
      - 21114:21114
      - 21115:21115
      - 21116:21116
      - 21116:21116/udp
      - 21117:21117
      - 21118:21118
      - 21119:21119
    image: HanGYvv/rustdesk-api-s6:latest
    environment:
      - RELAY=<relay_server[:port]>
      - ENCRYPTED_ONLY=1
      - MUST_LOGIN=N
      - TZ=Asia/Shanghai
      - RUSTDESK_API_RUSTDESK_ID_SERVER=<id_server[:21116]>
      - RUSTDESK_API_RUSTDESK_RELAY_SERVER=<relay_server[:21117]>
      - RUSTDESK_API_RUSTDESK_API_SERVER=http://<api_server[:21114]>
      - RUSTDESK_API_KEY_FILE=/data/id_ed25519.pub
      - RUSTDESK_API_JWT_KEY=xxxxxx # jwt key
    volumes:
      - /data/rustdesk/server:/data
      - /data/rustdesk/api:/app/data #将数据库挂载
    networks:
      - rustdesk-net
    restart: unless-stopped  

其他

鸣谢

感谢所有做过贡献的人!

Contributors

感谢你的支持!如果这个项目对你有帮助,请点个⭐️鼓励一下,谢谢

About

Custom Rustdesk Api Server, include web admin ,web client, web client v2 preview and oidc login

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

  • Go 98.1%
  • HTML 1.2%
  • Other 0.7%