ghcr.io/kingmo888/rustdesk-api-server:v1.5.0
rustdesk-api-server
点击此处查看英文说明。
一个 Python 实现的 Rustdesk API 接口,支持 WebUI 管理
1.2.3 版本与 1.2.6+ 版本区别
[!IMPORTANT] 请使用自定义 key,因不填写 key、或使用服务端自动生成的 key 而引起的链接超时或建立链接时间过长的问题,不在本项目解决范围内。
[!IMPORTANT] rustdesk 官方在其新版服务端中已强制要求 key(rustdesk-server 版本号大概 >= 1.1.10)
-
rustdesk 版本 1.2.3,服务端请配合使用 rustdesk-server >= 1.1.11
当使用 rustdesk-server 自动生成的 key 时,会出现链接缓慢甚至链接超时。
解决办法:使用自定义 key——配置 rustdesk-server 时,传入 k 参数来自定义 key 值,同时客户端同步配置相同的 key,即可秒连。
rustdesk-server 的 docker-compose 配置参考: -
rustdesk 版本
1.2.3,服务端请配合使用 rustdesk-server >= 1.1.11
-
当使用 rustdesk-server 自动生成的 key 时,会出现链接缓慢甚至链接超时。
-
解决办法:使用自定义 key——配置 rustdesk-server 时,传入 k 参数来自定义 key 值,同时客户端同步配置相同的 key,即可秒连。
-
rustdesk-server 的 docker-compose 配置参考:
key 是保证别人不能在知道你中继服务器的 IP 后,利用你的 IP 做中继。如果不配置 key,就做好中继 IP 的保密工作,不要泄露给其他人。而只要服务端配置了密钥,无论是随机生成(生成后本身就固定了),还是自定义的,如果控制客户端不配置对应 key 就无法控制其他机器(被控机器可以不填 key)
key 是保证别人不能在知道你中继服务器的 IP 后,利用你的 IP 做中继。如果不配置 key,就做好中继 IP 的保密工作,不要泄露给其他人。而只要服务端配置了密钥,无论是随机生成(生成后本身就固定了),还是自定义的,如果控制客户端不配置对应 key 就无法控制其他机器(被控机器可以不填 key)
对于自定义 key 是否生效,请看 rustdesk server 中 hbbs 的日志:
hbbs
展示
功能特点
-
支持前台网页自主注册和登录。注册页与登录页:
支持前台网页自主注册和登录。 -
注册页与登录页:
-
支持前台展示设备信息,分为管理员版、用户版。
支持前台展示设备信息,分为管理员版、用户版。 -
支持自定义别名(备注)。
支持自定义别名(备注)。 -
支持后台管理。
支持后台管理。 -
支持彩色标签。
支持彩色标签。 -
支持设备在线统计。
支持设备在线统计。 -
支持设备密码保存。
支持设备密码保存。 -
利用心跳接口自动管理 token 并保活。
利用心跳接口自动管理 token 并保活。 -
支持分享设备给其他用户。
支持分享设备给其他用户。 -
支持 web 控制端(目前仅支持非 SSL 模式,见下面使用问题说明)
支持 web 控制端(目前仅支持非 SSL 模式,见下面使用问题说明)
后台主页:
安装
方法 1:开箱即用
仅支持 Windows,请前往 release 下载,无需安装环境,直接运行启动.bat 即可。截图:
启动.bat
方法 2:代码运行
# 将代码克隆到本地
git clone https://github.com/kingmo888/rustdesk-api-server.git
# 进入目录
cd rustdesk-api-server
# 安装依赖
pip install -r requirements.txt
# 确保依赖安装正确后,执行:
# 端口号请自行修改,建议保留 21114 为 Rustdesk API 默认端口
python manage.py runserver 0.0.0.0:21114
此时即可使用 http://本机IP:端口 的形式来访问。
[!NOTE] 注意:如果 CentOS 配置时,Django4 会因为系统的 sqlite3 版本过低而出问题,请修改依赖库中的文件。路径:xxxx/Lib/site-packages/django/db/backends/sqlite3/base.py(根据情况自行查找包所在地址),修改内容:
xxxx/Lib/site-packages/django/db/backends/sqlite3/base.py
# from sqlite3 import dbapi2 as Database #(注释掉这行)
from pysqlite3 import dbapi2 as Database # 启用 pysqlite3
方法 3:Docker 运行
Docker 方法 1:自行构建
git clone https://github.com/kingmo888/rustdesk-api-server.git
cd rustdesk-api-server
docker compose --compatibility up --build -d
感谢热心网友 @ferocknew 提供。
Docker 方法 2:预构建运行
docker run 命令:
docker run -d \
--name rustdesk-api-server \
-p 21114:21114 \
-e CSRF_TRUSTED_ORIGINS=http://yourdomain.com:21114 \ # 防跨域信任来源,可选
-e ID_SERVER=yourdomain.com \ # Web 控制端使用的 ID 服务器
-v /yourpath/db:/rustdesk-api-server/db \ # 修改 /yourpath/db 为你宿主机数据库挂载目录
-v /etc/timezone:/etc/timezone:ro \
-v /etc/localtime:/etc/localtime:ro \
--network bridge \
--restart unless-stopped \
ghcr.io/kingmo888/rustdesk-api-server:latest
docker-compose 方式:
version: "3.8"
services:
rustdesk-api-server:
container_name: rustdesk-api-server
image: ghcr.io/kingmo888/rustdesk-api-server:latest
environment:
- CSRF_TRUSTED_ORIGINS=http://yourdomain.com:21114 # 防跨域信任来源,可选
- ID_SERVER=yourdomain.com # Web 控制端使用的 ID 服务器
volumes:
- /yourpath/db:/rustdesk-api-server/db # 修改 /yourpath/db 为你宿主机数据库挂载目录
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
network_mode: bridge
ports:
- "21114:21114"
restart: unless-stopped
环境变量
| 变量名 | 参考值 | 备注 |
|---|---|---|
| HOST | 默认 0.0.0.0 | 绑定服务的 IP |
| TZ | 默认 Asia/Shanghai,可选 | 时区 |
| SECRET_KEY | 可选,自定义一串随机字符 | 程序加密秘钥 |
| CSRF_TRUSTED_ORIGINS | 可选,默认关闭验证;如需开启填写你的访问地址 http://yourdomain.com:21114 | 如需关闭验证请删除此变量,而不是留空;防跨域信任来源 |
| ID_SERVER | 可选,默认为和 API 服务器同主机。可自定义如 yourdomain.com | Web 控制端使用的 ID 服务器 |
| DEBUG | 可选,默认 False | 调试模式 |
| ALLOW_REGISTRATION | 可选,默认 True | 是否允许新用户注册 |
| 数据库配置 -- 开始 -- | - | 若不使用 MYSQL 则以下皆无需配置 |
| DATABASE_TYPE | 可选,默认 SQLITE3 | 数据库类型(SQLITE/MYSQL) |
| MYSQL_DBNAME | 可选,默认 - | MYSQL 数据库名 |
| MYSQL_HOST | 可选,默认 127.0.0.1 | MYSQL 数据库的服务器 IP |
| MYSQL_USER | 可选,默认 - | MYSQL 数据库的用户名 |
| MYSQL_PASSWORD | 可选,默认 - | MYSQL 数据库的密码 |
| MYSQL_PORT | 可选,默认 3306 | MYSQL 数据库端口 |
| 数据库配置 -- 结束 -- | - | 查看【sqlite3 迁移 mysql 教程】 |
| LANGUAGE_CODE | 可选,默认 zh-hans | 语言,支持中文(zh-hans)、英语(en) |
HOST 0.0.0.0 TZ Asia/Shanghai SECRET_KEY CSRF_TRUSTED_ORIGINS http://yourdomain.com:21114 ID_SERVER yourdomain.com DEBUG False ALLOW_REGISTRATION True DATABASE_TYPE SQLITE3 MYSQL_DBNAME MYSQL_HOST 127.0.0.1 MYSQL_USER MYSQL_PASSWORD MYSQL_PORT 3306 LANGUAGE_CODE zh-hans zh-hans en
使用问题
-
管理员设置
当数据库中不存在账户时,第一个注册的账户直接获取超级管理员权限,之后注册账户为普通账户。 -
设备信息
经测试,客户端会在非绿色版模式下,安装为服务的模式中,定时发送设备信息到 api 接口,所以如果想要设备信息,需要安装 rustdesk 客户端并启动服务。 -
连接速度慢
新版本 Key 模式链接速度慢,可以在服务端启动服务时,不要带参数的 -k,此时,客户端也不能配置 key。 -
Web 控制端配置
设置 ID_SERVER 环境变量,或修改 rustdesk_server_api/settings.py 文件中 ID_SERVER 配置项,将 ID 服务器/中继服务器 IP 或域名填上。 -
Web 控制端一直转圈
- 检查 ID 服务器填写是否正确
- Web 控制端目前仅支持非 SSL 模式,若 webui 为 https 访问,请将 s 去掉,否则 ws 连不上一直转圈。如:[] []
-
后台操作登录或登出时:CSRF 验证失败. 请求被中断.
这种操作大概率是 docker 配置+nginx 反代+SSL 的组合,要注意修改 CSRF_TRUSTED_ORIGINS,如果是 ssl 那就是 https 开头,否则就是 http。 -
Mysql 版本要求
如果你使用的是 Mysql 数据库,需要注意 django4.x 版本需要 Mysql8.0,如果要使用 mysql5.8 则需要将 django 版本降至 3.2。
开发计划
- 分享设备给其他已注册用户(v1.3+)
[!NOTE] 说明:类似网盘 url 分享,url 激活后可以获得某个或某组或某个标签下的设备 备注:其实 web api 作为中间件,可做的不多,更多功能还是需要修改客户端来实现,就不太值当了。
- 集成 Web 客户端形式(v1.4+)
[!NOTE] 将大神的 web 客户端集成进来,已集成。 来源
- 对过期(不在线)设备的过滤,用以区分在线&离线设备(1.4.7)
[!NOTE] 通过配置方式,对过期超过指定时间的设备清理或过滤。
-
首屏拆分为用户列表页与管理员列表页并增加分页(1.4.6)。
-
支持信息导出到为 xlsx 文件(1.4.6)。
[!NOTE] 支持管理员在【所有设备】页面导出所有设备信息。
-
通过配置项设定是否允许新用户注册(1.4.7)。
-
支持 mysql 及 sqlite3 迁移 mysql(1.4.8)。
-
[-] 用户前端修改密码。
-
[-] 前端改造,所有页面自适应,前后端分离(计划 V2)。
其他相关工具
-
可以修改客户端 ID 的 CMD 脚本
-
rustdesk
-
rustdesk-server
Stargazers over time
联络我
轩辕镜像配置手册
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
Docker 配置
登录仓库拉取
通过 Docker 登录认证访问私有仓库
专属域名拉取
无需登录使用专属域名
K8s Containerd
Kubernetes 集群配置 Containerd
K3s
K3s 轻量级 Kubernetes 镜像加速
Dev Containers
VS Code Dev Containers 配置
Podman
Podman 容器引擎配置
Singularity/Apptainer
HPC 科学计算容器配置
其他仓库配置
ghcr、Quay、nvcr 等镜像仓库
Harbor 镜像源配置
Harbor Proxy Repository 对接专属域名
Portainer 镜像源配置
Portainer Registries 加速拉取
Nexus 镜像源配置
Nexus3 Docker Proxy 内网缓存
系统配置
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
镜像拉取常见问题
使用与功能问题
配置了专属域名后,docker search 为什么会报错?
docker search 限制
Docker Hub 上有的镜像,为什么在轩辕镜像网站搜不到?
站内搜不到镜像
机器不能直连外网时,怎么用 docker save / load 迁镜像?
离线 save/load
docker pull 拉插件报错(plugin v1+json)怎么办?
插件要用 plugin install
WSL 里 Docker 拉镜像特别慢,怎么排查和优化?
WSL 拉取慢
轩辕镜像安全吗?如何用 digest 校验镜像没被篡改?
安全与 digest
第一次用轩辕镜像拉 Docker 镜像,要怎么登录和配置?
新手拉取配置
轩辕镜像合规吗?轩辕镜像的合规是怎么做的?
镜像合规机制
轩辕镜像支持 docker push 上传本地镜像吗?
不支持 push
错误码与失败问题
docker pull 提示 manifest unknown 怎么办?
manifest unknown
docker pull 提示 no matching manifest 怎么办?
no matching manifest(架构)
镜像已拉取完成,却提示 invalid tar header 或 failed to register layer 怎么办?
invalid tar header(解压)
Docker pull 时 HTTPS / TLS 证书验证失败怎么办?
TLS 证书失败
Docker pull 时 DNS 解析超时或连不上仓库怎么办?
DNS 超时
docker 无法连接轩辕镜像域名怎么办?
域名连通性排查
Docker 拉取出现 410 Gone 怎么办?
410 Gone 排查
出现 402 或「流量用尽」提示怎么办?
402 与流量用尽
Docker 拉取提示 UNAUTHORIZED(401)怎么办?
401 认证失败
遇到 429 Too Many Requests(请求太频繁)怎么办?
429 限流
docker login 提示 Cannot autolaunch D-Bus,还算登录成功吗?
D-Bus 凭证提示
为什么会出现「单层超过 20GB」或 413,无法加速拉取?
413 与超大单层
账号 / 计费 / 权限
用户好评
来自真实用户的反馈,见证轩辕镜像的优质服务