etotakeo 发布的文章

直接复制了,具体的内容可以去看大佬的Github,只是温馨提示一下,key必须要设置,不然的话可能登录后没办法链接受控端

1.2.3版本与1.2.6+版本区别

rustdesk官方在其新版服务端中已强制要求key(rustdesk-server版本号大概>=1.1.10)
  • rustdesk版本<=1.2.3, 服务端请配合使用rustdesk-server<=1.1.10

    • 根据自身需要来选择是否配置服务端的key参数。
  • rustdesk版本>1.2.3, 服务端请配合使用rustdesk-server>=1.1.11

    • 当使用rustdesk-server自动生成的key时,会出现链接缓慢甚至链接超时。
    • 解决办法:使用自定义k——配置rustdesk-server时,传入k参数来自定义key值,同时客户端同步配置相同的key,即可秒连。
    • rustdesk-server的dock-compose配置参考:

请输入图片描述

`key是保证别人不能在知道你中继服务器的IP后,利用你的IP做中继。如果不配置key,就做好中继IP的保密工作,不要泄露给其他人。
而只要服务端配置了密钥,无论是随机生成(生成后本身就固定了),还是自定义的,如果控制客户端不配置对应key就无法控制其他机器(被控机器可以不填key)`

对于自定义key是否生效,请看rustdesk server中hbbs的日志:
请输入图片描述

展示

请输入图片描述

功能特点

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

    • 注册页与登录页:
      请输入图片描述
      请输入图片描述
  • 支持前台展示设备信息,分为管理员版、用户版。
  • 支持自定义别名(备注)。
  • 支持后台管理。
  • 支持彩色标签。
    请输入图片描述
  • 支持设备在线统计。
  • 支持设备密码保存。
  • 利用心跳接口自动管理token并保活。
  • 支持分享设备给其他用户。
    请输入图片描述
  • 支持web控制端(目前仅支持非SSL模式,见下面使用问题说明)
    请输入图片描述

后台主页:
请输入图片描述

安装

方法1:开箱即用

仅支持Windows,请前往 release 下载,无需安装环境,直接运行启动.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:端口 的形式来访问。

注意:如果 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.1MYSQL数据库的服务器IP
MYSQL_USER可选,默认 -MYSQL数据库的用户名
MYSQL_PASSWORD可选,默认 -MYSQL数据库的密码
MYSQL_PORT可选,默认 3306MYSQL数据库端口
数据库配置-- 结束 --查看【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。

  • Mysql版本要求

    如果你使用的是Mysql数据库,需要注意django4.x版本需要Mysql8.0,如果要使用mysql5.8则需要将django版本降至3.2。

开发计划

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

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

    将大神的web客户端集成进来,已集成。 来源
  • [x] 对过期(不在线)设备的过滤,用以区分在线&离线设备(1.4.7)

    通过配置方式,对过期超过指定时间的设备清理或过滤。
  • [x] 首屏拆分为用户列表页与管理员列表页并增加分页(1.4.6)。
  • [x] 支持信息导出到为xlsx文件(1.4.6)。

    支持管理员在【所有设备】页面导出所有设备信息。
  • [x] 通过配置项设定是否允许新用户注册(1.4.7)。
  • [x] 支持mysql及sqlite3迁移mysql(1.4.8)。
  • [-] 用户前端修改密码。
  • [-] 前端改造,所有页面自适应,前后端分离(计划V2)。

其他相关工具

Stargazers over time

Stargazers over time

安装准备:VPS一台、Debian系统

1、NPS开源项目地址:【点击进入】(此项目已经很久没更新了)
项目安装文档:【点击进入
最新开源项目:【点击进入】(由旧项目二次开发而来)
2、配置NPS服务器端
手动下载安装文件(国内下载比较慢,可以直接下载下来,上传到服务器root目录下)
从github上获取最新版本的nps服务端
看仔细了下载

  • 解压服务器端文件

    tar -zxvf linux_amd64_server.tar.gz

如果需要更改登录账号和密码,在/root/conf/nps.conf此路径下配置文件中更改(红色部分改成你自己想要的)
注意要点:如果要改密码,请在执行安装命令前更改,之后更改不起作用

web_username=admin
web_password=admin123456

如果需要更改唯一验证密钥,在/root/conf/hosts.json此路径下配置文件中更改

  • 执行安装命令

    ./nps install

  • 启动服务器端

    nps start

4、登陆NPS控制面板并设置参数(登陆默认端口为:8081,默认用户名:admin,默认密码:123)

如果需要更改登录账号和密码,在/root/conf/nps.conf此路径下配置文件中更改(红色部分改成你自己想要的)
web_username=admin
web_password=admin123456
客户端——新增——设置客户端验证密钥
5、配置NPS客户端

  • 下载客户端配置文件

看仔细了下载
通过Finalshell上传到软路由root目录下(如果上传不了,可执行以下命令)

mount  -o  remount rw /

通过Finalshell对上传的文件解压

tar -zxvf linux_amd64_client.tar.gz

6、启动客户端

临时启动客户端测试

./npc -server=服务器IP:客户端连接端口 -vkey=前面设置的客户端验证密钥

设置客户端后台启动

nohup ./npc -server=服务器IP:服务器连接端口 -vkey=前面设置的客户端验证密钥

通过对比目前较为受欢迎的WebDAV服务器端软件,https://github.com/hacdias/webdav 较为稳定(唯一遗憾的是,项目已经终止)。 此开源项目是使用GoLang开发的,因此兼容性非常强悍,仅作者预编译针对不同操作系统和CPU架构的二进制文件就有34种,可以说涵盖了几乎所有运行环境。 作者默认使用此软件的都是专业选手,因此没有手把手的文档可以参考。这对于非程序员甚至非GoLang程序员不太友好。

配置文件

作者给出的配置参考已经非常详细,但需要注意的是,你需要全部复制并做出对应修改,程序中并没有做默认值合并。注释中的will be merged仅仅针对当前配置文件下文的用户默认值。

二进制安装

访问https://github.com/hacdias/webdav/releases/,对应下载作者预编译的二进制版本。
参考Systemd Example,注册为*unix服务,实现开机自动启动。此步骤有疑问的话,搜索对应操作系统+systemd关键词。
需要特别注意的是:
二进制文件所在的执行目录需要和Systemd配置文件中的ExecStart目录保持一致。
作者说明了支持JSON, YAML and TOML配置文件格式,因此你需要加上相应后缀,否则配置文件不生效。例如JSON添加.json、YAML添加.yml。
OMV5(Debian)中二进制文件安装例子(解压提示路径错误,webdav解压到、/usr/bin目录就行):

wget https://github.com/hacdias/webdav/releases/download/v4.2.0/linux-amd64-webdav.tar.gz
tar -zxvf linux linux-amd64-webdav.tar.gz
mv /root/webdav /usr/bin

在opt下创建webdav.config.yml

# Server related settings
address: 0.0.0.0
port: 8080
auth: true
tls: false
prefix: /

# Default user settings (will be merged)
scope: .
modify: true
rules: []

cors:
enabled: false
credentials: false

users:
- username: admin
  password: "{bcrypt}$2a$12$NRf4qBRbBJ0/XR56S7UwaOWzlLIs8fTRDILiC02BGCbbol2g/dw2i"
  scope: /date
  modify:   true

scope即为根目录本地映射地址。password可以用明文,也可以加密,Bcrypt密码在线生成地址: https://bcrypt-generator.com/
然后添加服务
vim /etc/systemd/system/webdav.service

[Unit]
Description=WebDAV server
After=network.target

[Service]
Type=simple
User=root
ExecStart=/usr/bin/webdav --config /opt/webdav.config.yml
Restart=on-failure

[Install]
WantedBy=multi-user.target

最后,设置开机启动并启动服务:

systemctl enable webdav
systemctl start webdav
理论上所有linux系统都可以用这个方法