Giter Site home page Giter Site logo

kingmo888 / rustdesk-api-server Goto Github PK

View Code? Open in Web Editor NEW
559.0 559.0 130.0 8.66 MB

基于Django的RustDesk Api&Web Server,除了支持api所有功能,还支持web注册、管理、展示等。已支持到最新1.2.7版本。

Python 99.98% Dockerfile 0.01% Shell 0.01%

rustdesk-api-server's Introduction

rustdesk-api-server

请使用客户端最新版本1.2.3

The English explanation is available by clicking here.

一个 python 实现的 Rustdesk API 接口,支持 WebUI 管理

主页面

功能特点

  • 支持前台网页自主注册和登录。

    • 注册页与登录页: Front Registration Front Login
  • 支持前台展示设备信息,分为管理员版、用户版。

  • 支持自定义别名(备注)。

  • 支持后台管理。

  • 支持彩色标签。 Rust Books

  • 支持设备在线统计。

  • 支持设备密码保存。

  • 利用心跳接口自动管理token并保活。

  • 支持分享设备给其他用户。 Rust Share

  • 支持web控制端(目前仅支持非SSL模式,见下面使用问题说明) Rust Share

后台主页: Admin Main

安装

方法1:开箱即用

仅支持Windows,请前往 release 下载,无需安装环境,直接运行启动.bat即可。 截图:

window直接运行版

方法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:端口 的形式来访问。

注意:如果 CentOS 配置时,Django4 会因为系统的 sqlite3 版本过低而出问题,请修改依赖库中的文件。路径: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)

使用问题

  • 管理员设置

    当数据库中不存在账户时,第一个注册的账户直接获取超级管理员权限,之后注册账户为普通账户。

  • 设备信息

    经测试,客户端会在非绿色版模式下,安装为服务的模式中,定时发送设备信息到api接口,所以如果想要设备信息,需要安装rustdesk客户端并启动服务。

  • 连接速度慢

    新版本Key模式链接速度慢,可以在服务端启动服务时,不要带参数的-k,此时,客户端也不能配置key。

  • Web控制端配置

    • 设置ID_SERVER环境变量,或修改rustdesk_server_api/settings.py文件中ID_SERVER配置项,将ID服务器/中继服务器IP或域名填上。
  • Web控制端一直转圈

  • 后台操作登录或登出时:CSRF验证失败. 请求被中断.

    这种操作大概率是docker配置+nginx反代+SSL的组合,要注意修改CSRF_TRUSTED_ORIGINS,如果是ssl那就是https开头,否则就是http。

开发计划

  • 分享设备给其他已注册用户(v1.3+)

    说明:类似网盘url分享,url激活后可以获得某个或某组或某个标签下的设备 备注:其实web api作为中间件,可做的不多,更多功能还是需要修改客户端来实现,就不太值当了。

  • 集成Web客户端形式(v1.4+)

    将大神的web客户端集成进来,已集成。 来源

  • 对过期(不在线)设备的过滤,用以区分在线&离线设备(1.4.7)

    通过配置方式,对过期超过指定时间的设备清理或过滤。

  • 首屏拆分为用户列表页与管理员列表页并增加分页(1.4.6)。

  • 支持信息导出到为xlsx文件(1.4.6)。

    支持管理员在【所有设备】页面导出所有设备信息。

  • 通过配置项设定是否允许新用户注册(1.4.7)。

  • 支持mysql及sqlite3迁移mysql(1.4.8)。

其他相关工具

Stargazers over time

Stargazers over time

rustdesk-api-server's People

Contributors

cp0204 avatar ferocknew avatar haige831 avatar kingmo888 avatar lm93129 avatar sunev avatar zp96324511 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

rustdesk-api-server's Issues

Ideas

Hello,

I have afew ideas on setting up prebuild clients, would that be something you would like to be PR'd?

I can work on a translation as well and an install system for it all if that would help?

  • Git

[Bug]: Might not be a bug not sure

What happened?

  • The Updated Time of peers seems to always update even if the Peer is turned off (not online) ?

  • Also, would be nice to be able to use groups, so we can organise peers into groups.

Operation System

Linux

Python Version

python3

Run type Python/Docker

Python

求助,账户登录后非局域网内无法建立连接

服务器: rustdesk-server-s6, rustdesk-api-server,docker安装。
客户端版本: v1.2.3
问题: 客户端账户登陆后,在局域网内可以发起请求并建立连接。非局域网内发起请求后连接无法建立,退出账户登录则可以建立连接。请求成功与否与被连接端账户是否登录无关,与连接是否加密无关。

[Bug]:登陆报错,提示远程计算机拒绝连接

What happened?

源码部署,通过docker方式,可以登陆web并成功注册了,在客户端上登陆就报错了,提示远程计算机拒绝连接
QQ截图20240220213505

Operation System

win10

Python Version

docker

Run type Python/Docker

docker

v1.1 升到 v1.2+ 数据库升级(解决500错误)

V1.2 增加创建分享链接功能 新建了一个数据表,直接升上来打开分享功能会 500 错误。

解决办法:

  1. 下载v1.3的 db.sqlite3
  2. sqlitestudio 同时打开你原有db.sqlite3和 v1.3的 db.sqlite3
  3. 复制 api_sharelink 表到你原数据库,把修改后的数据库替换回去,问题解决

相关建表命令

CREATE TABLE api_sharelink (
    id          INTEGER      NOT NULL
                             PRIMARY KEY AUTOINCREMENT,
    uid         VARCHAR (16) NOT NULL,
    shash       VARCHAR (60) NOT NULL,
    peers       VARCHAR (20) NOT NULL,
    is_used     BOOL         NOT NULL,
    is_expired  BOOL         NOT NULL,
    create_time DATETIME     NOT NULL
);

docker环境下,添加-e "ALLOW_REGISTRATION=Fasle",在登录界面仍然能注册新用户

What happened?

docker run -d
--name rustdesk-api-server
-p 21114:21114
-e "CSRF_TRUSTED_ORIGINS=http://10.10.10.10:21114"
-e "ID_SERVER=10.10.10.10"
-e "SECRET_KEY=fmjClrEhAPNhiqUA2HgID1234WCz8KSKXdWX54y4/gk="
-e "ALLOW_REGISTRATION=Fasle"
-v /data/rustdesk/db:/rustdesk-api-server/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

Operation System

docker

Python Version

docker

Run type Python/Docker

docker

构建镜像失败

实在是不好意思,我是小白,使用portainer构建镜像失败了
日志显示
cannot mount volume over existing file, file exists /share/CACHEDEV1_DATA/docker/container-station-data/lib/docker/overlay2/8f60a7207f46b2219a89bc0c4c9a006f98dba2bfadd3d5432cf13d7b2200ca54/merged/rustdesk-api-server/db.sqlite3
请问有已经上传到dockerhub上的镜像可供拉取吗?
image

ModuleNotFoundError: No module named 'api.util'

docker运行,打开web页面出现

ModuleNotFoundError at /api/user_action
No module named 'api.util'
Request Method:	GET
Request URL:	http://****.****.****:21114/api/user_action?action=login
Django Version:	5.0
Exception Type:	ModuleNotFoundError
Exception Value:	
No module named 'api.util'
Exception Location:	<frozen importlib._bootstrap>, line 1004, in _find_and_load_unlocked
Raised during:	api.views_front.user_action
Python Executable:	/usr/local/bin/python
Python Version:	3.10.3
Python Path:	
['/rustdesk-api-server',
 '/usr/local/lib/python310.zip',
 '/usr/local/lib/python3.10',
 '/usr/local/lib/python3.10/lib-dynload',
 '/usr/local/lib/python3.10/site-packages']
Server time:	Mon, 11 Dec 2023 17:12:03 +0800

注释掉这行就没问题

peers数量一多,前台就崩了

我放到docker里运行,一次加了15台左右。
前台登录后,在/api/work就直接server error(500),目前只能进django的后台管理。

[Bug]:

前端经常白屏

PM ZSV3NPS12GY~EA@O`(ZO
win10(新系统)统部署后前端经常白屏,需要在服务端按下回复才有反应。

Operation System

win10 ltsc 2021

关的太快了,还有一个问题呢

用的最新1.4.2版本,用网页连接对方之后之后,需要点取消才能连接,点确定就又返回web连接主界面了。
image
这个界面出现多次,不点的话一直这样。

前端经常白屏

PM ZSV3NPS12GY~EA@O`(ZO
win10(新系统)统部署后前端经常白屏,需要在服务端按下回车才有反应。

安全问题

普通用户输入/admin域名可以直接访问所有数据!!!
我安装的docker版本...

[Bug]: 登录完成之后显示500错误

What happened?

image
[24/Jan/2024 17:27:25] "POST /api/heartbeat HTTP/1.1" 200 24
�=[24/Jan/2024 17:27:26] "POST /api/heartbeat HTTP/1.1" 200 24
�=[24/Jan/2024 17:27:27] "POST /api/heartbeat HTTP/1.1" 200 24
�=[24/Jan/2024 17:27:29] "POST /api/heartbeat HTTP/1.1" 200 24
�=[24/Jan/2024 17:27:29] "POST /api/heartbeat HTTP/1.1" 200 24
�=[24/Jan/2024 17:27:30] "POST /api/heartbeat HTTP/1.1" 200 24
�=[24/Jan/2024 17:27:31] "POST /api/heartbeat HTTP/1.1" 200 24
�=[24/Jan/2024 17:27:33] "POST /api/heartbeat HTTP/1.1" 200 24
�=[24/Jan/2024 17:27:37] "POST /api/heartbeat HTTP/1.1" 200 24
�8[24/Jan/2024 17:27:37] "GET /api/work HTTP/1.1" 500 145
�=[24/Jan/2024 17:27:39] "POST /api/heartbeat HTTP/1.1" 200 24

centos7.6下的docker源码部署的

Operation System

windows10

Python Version

2.19.1

Run type Python/Docker

docker

Assistance

Hello,

Really cool project, can I help? Really keen to help translate, help with installers and making it work, precompiled agents etc, also I wondered what license the software is under?

Thanks - Git

[Bug]: "POST /api/audit/conn HTTP/1.1" 404 179

What happened?

Error on windows client try connect to android client

[20/Mar/2024 11:35:12] "POST /api/audit/conn HTTP/1.1" 404 179

Operation System

Android(1.2.3),Windows(1.2.3-1)

Python Version

3.10.3

Run type Python/Docker

docker-compose

docker-compose停止堆栈之后,用户数据消失。

What happened?

docker-compose停止堆栈之后,用户数据消失。
似乎没法固化用户数据,停止堆栈之后再次启动,需要重新注册,重新配置。
已经挂载了- /share/docker/rustdesk/api/db.sqlite3:/rustdesk-api-server/db.sqlite3
另外添加的标签在客户端无法删除,可以在后台中删除

Operation System

威联通-linux

Python Version

不清除

Run type Python/Docker

docker-compose

[Bug]: IOS和安卓手机客户端登录问题

What happened?

使用苹果和安卓手机客户端账号登录后,就无法远程其他终端了,但退出登录就一切正常。
PC登录后还是能远程其他终端的。

Operation System

almalinux 9.3

Python Version

64bit

Run type Python/Docker

docker-compose

[Bug]:希望所添加的设备ID,在第一次连接后,能根据当前所连接的系统自动生成图标,以便区分。

What happened?

添加的设备ID貌似没有生成相应的图标,比如:添加的ID设备是苹果的系统,那么前面就是苹果的图标,添加的ID是windows系统的设备,就用它的图标,其他系统类似,之前用过一个会自动生成,忘记是在哪弄的了。52pj?
logo3
希望这个也能生成,分便区分。

Operation System

windows7

Python Version

3.86

Run type Python/Docker

python

字段IP地址

如果【设备列表】加上字段:IP地址或Mac地址,是不是更好,更完善,这样的话局域网直接IP地址访问了。只是一个建议希望采纳。

It's not a bug

What happened?

It is not a bug but how can I disable register user?
I have docker installed the latest version

Operation System

Win 10

Python Version

Run type Python/Docker

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.