Go
rustdesk-server-api
https://github.com/lejianwen/rustdesk-api
|
|
6 months ago | |
|---|---|---|
| .github | 7 months ago | |
| cmd | 6 months ago | |
| conf | 7 months ago | |
| config | 7 months ago | |
| data | 8 months ago | |
| debian | 1 year ago | |
| docs | 6 months ago | |
| global | 8 months ago | |
| http | 6 months ago | |
| lib | 7 months ago | |
| model | 6 months ago | |
| resources | 6 months ago | |
| runtime | 1 year ago | |
| service | 7 months ago | |
| systemd | 1 year ago | |
| utils | 7 months ago | |
| .dockerignore | 1 year ago | |
| .gitattributes | 1 year ago | |
| .gitignore | 8 months ago | |
| Dockerfile | 1 year ago | |
| Dockerfile.dev | 7 months ago | |
| Dockerfile_full_s6 | 1 year ago | |
| LICENSE | 1 year ago | |
| README.md | 6 months ago | |
| README_EN.md | 6 months ago | |
| build.bat | 1 year ago | |
| build.sh | 1 year ago | |
| docker-compose-dev.yaml | 7 months ago | |
| docker-compose.yaml | 1 year ago | |
| docker-dev.sh | 1 year ago | |
| generate_api.go | 11 months ago | |
| generate_run.go | 11 months ago | |
| go.mod | 7 months ago |
本项目使用 Go 实现了 RustDesk 的 API,并包含了 Web Admin 和 Web 客户端。RustDesk 是一个远程桌面软件,提供了自托管的解决方案。
github, google 和 OIDC 登录,web后台授权登录LDAP(AD和OpenLDAP已测试), 如果API Server配置了LDAP基本实现了PC端基础的接口。支持Personal版本接口,可以通过配置文件rustdesk.personal或环境变量RUSTDESK_API_RUSTDESK_PERSONAL来控制是否启用
| 登录 | |
![]() |
|
| 地址簿 | 群组 |
![]() |
![]() |
使用前后端分离,提供用户友好的管理界面,主要用来管理和展示。前端代码在rustdesk-api-web
后台访问地址是http://<your server>[:port]/_admin/
初次安装管理员为用户名为admin,密码将在控制台打印,可以通过命令行更改密码

每个用户可以多个地址簿,也可以将地址簿共享给其他用户
分组可以自定义,方便管理,暂时支持两种类型: 共享组 和 普通组
可以直接打开webclient,方便使用;也可以分享给游客,游客可以直接通过webclient远程到设备
Oauth,支持了Github, Google 以及 OIDC, 需要创建一个OAuth App,然后配置到后台
Google 和 Github, Issuer 和 Scopes不需要填写.OIDC, Issuer是必须的。Scopes是可选的,默认为 openid,profile,email. 确保可以获取 sub,email 和preferred_usernamegithub oauth app在Settings->Developer settings->OAuth Apps->New OAuth App
中创建,地址 https://github.com/settings/developersAuthorization callback URL填写http://<your server[:port]>/api/oidc/callback
,比如http://127.0.0.1:21114/api/oidc/callback登录日志
链接日志
文件传输日志
server控制
LDAP 支持, 当在API Server上设置了LDAP(已测试AD和LDAP),可以通过LDAP中的用户信息进行登录 https://github.com/lejianwen/rustdesk-api/issues/114 ,如果LDAP验证失败,返回本地用户
v2 Preview,访问路径是/webclient2

v2 preview 部署,参考WIKI# 查看帮助
./apimain -h
./apimain reset-admin-pwd <pwd>
conf/config.yaml配置文件,修改相关配置。gorm.type是sqlite,则不需要配置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配置----- | ---------- | ---------- |
| 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 如果没使用 lejianwen/rustdesk-server中的MUST_LOGIN,建议设置为空 |
|
| RUSTDESK_API_JWT_EXPIRE_DURATION | JWT有效时间 | 168h |
直接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> \
lejianwen/rustdesk-api
使用docker compose,参考WIKI
克隆仓库
git clone https://github.com/lejianwen/rustdesk-api.git
cd rustdesk-api
安装依赖
go mod tidy
#安装swag,如果不需要生成文档,可以不安装
go install github.com/swaggo/swag/cmd/swag@latest
编译后台前端,前端代码在rustdesk-api-web中
cd resources
mkdir -p admin
git clone https://github.com/lejianwen/rustdesk-api-web
cd rustdesk-api-web
npm install
npm run build
cp -ar dist/* ../admin/
运行
#直接运行
go run cmd/apimain.go
#或者使用generate_api.go生成api并运行
go generate generate_api.go
注意:使用
go run或编译后的二进制时,当前目录下必须存在conf和resources目录。如果在其他目录运行,可通过-c和环境变量RUSTDESK_API_GIN_RESOURCES_PATH指定绝对路径,例如:RUSTDESK_API_GIN_RESOURCES_PATH=/opt/rustdesk-api/resources ./apimain -c /opt/rustdesk-api/conf/config.yaml
编译,如果想自己编译,先cd到项目根目录,然后windows下直接运行build.bat,linux下运行build.sh,编译后会在release
目录下生成对应的可执行文件。直接运行编译后的可执行文件即可。
打开浏览器访问http://<your server[:port]>/_admin/,默认用户名密码为admin,请及时更改密码。
lejianwen/server-s6镜像运行 networks:
rustdesk-net:
external: false
services:
rustdesk:
ports:
- 21114:21114
- 21115:21115
- 21116:21116
- 21116:21116/udp
- 21117:21117
- 21118:21118
- 21119:21119
image: lejianwen/rustdesk-server-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
感谢所有做过贡献的人!