mirror of
https://github.com/kingmo888/rustdesk-api-server.git
synced 2026-02-21 10:27:23 +08:00
commit
f4602248e0
58
.github/workflows/docker-publish.yml
vendored
Normal file
58
.github/workflows/docker-publish.yml
vendored
Normal file
@ -0,0 +1,58 @@
|
||||
name: Docker Publish
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
packages: write
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
push:
|
||||
tags:
|
||||
- "v*.*"
|
||||
|
||||
env:
|
||||
REGISTRY: ghcr.io
|
||||
IMAGE_NAME: ${{ github.repository }}
|
||||
|
||||
jobs:
|
||||
build-and-push:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: Extract metadata (tags, labels) for Docker
|
||||
id: meta
|
||||
uses: docker/metadata-action@v5
|
||||
with:
|
||||
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
|
||||
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v3
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
|
||||
- name: Login to GitHub Container Registry
|
||||
uses: docker/login-action@v3
|
||||
with:
|
||||
registry: ${{ env.REGISTRY }}
|
||||
username: ${{ github.actor }}
|
||||
password: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Build and push Docker image
|
||||
uses: docker/build-push-action@v5
|
||||
with:
|
||||
build-args: |
|
||||
MAINTAINER=${{ github.repository_owner }}
|
||||
BRANCH=${{ github.ref_name }}
|
||||
SOURCE_COMMIT=${{ github.sha }}
|
||||
context: .
|
||||
platforms: |
|
||||
linux/amd64
|
||||
linux/arm/v7
|
||||
linux/arm64
|
||||
file: ./Dockerfile
|
||||
push: true
|
||||
tags: ${{ steps.meta.outputs.tags }}
|
||||
labels: ${{ steps.meta.outputs.labels }}
|
||||
25
Dockerfile
25
Dockerfile
@ -1,27 +1,18 @@
|
||||
FROM python:3.10.3-slim-bullseye
|
||||
FROM python:3.10.3-alpine
|
||||
|
||||
WORKDIR /rustdesk-api-server
|
||||
ADD . /rustdesk-api-server
|
||||
|
||||
RUN pip install pip -U -i https://mirrors.cloud.tencent.com/pypi/simple
|
||||
RUN pip config set global.index-url https://mirrors.cloud.tencent.com/pypi/simple
|
||||
RUN pip config set install.trusted-host mirrors.cloud.tencent.com
|
||||
RUN pip install -r requirements.txt
|
||||
|
||||
VOLUME /rustdesk-api-server/db.sqlite3
|
||||
|
||||
ENV HOST 0.0.0.0
|
||||
ENV TZ=Asia/Shanghai \
|
||||
DEBIAN_FRONTEND=noninteractive
|
||||
RUN set -ex \
|
||||
&& pip install --no-cache-dir --disable-pip-version-check -r requirements.txt \
|
||||
&& rm -rf /var/cache/apk/* \
|
||||
&& cp -r ./db ./db_bak
|
||||
|
||||
ENV HOST=0.0.0.0
|
||||
ENV TZ=Asia/Shanghai
|
||||
ENV CSRF_TRUSTED_ORIGINS=""
|
||||
|
||||
|
||||
EXPOSE 21114/tcp
|
||||
EXPOSE 21114/udp
|
||||
|
||||
RUN cd /rustdesk-api-server
|
||||
|
||||
|
||||
ENTRYPOINT ["bash", "run.sh"]
|
||||
|
||||
ENTRYPOINT ["sh", "run.sh"]
|
||||
|
||||
174
README.md
174
README.md
@ -1,95 +1,147 @@
|
||||
## Rustdesk Api接口介绍
|
||||
# rustdesk-api-server
|
||||
|
||||
<p align="center">
|
||||
<img src ="https://img.shields.io/badge/version-1.1-blueviolet.svg"/>
|
||||
<img src ="https://img.shields.io/badge/platform-windows|linux-green.svg"/>
|
||||
<img src ="https://img.shields.io/badge/python-3.7|3.8|3.9|3.10|3.11-blue.svg" />
|
||||
<i>一个 python 实现的 Rustdesk API 接口,支持 WebUI 管理</i>
|
||||
<br/>
|
||||
<img src ="https://img.shields.io/badge/Version-1.1-blueviolet.svg"/>
|
||||
<img src ="https://img.shields.io/badge/Python-3.7|3.8|3.9|3.10|3.11-blue.svg" />
|
||||
<img src ="https://img.shields.io/badge/Django-3.2+|4.x-yelow.svg" />
|
||||
<img src ="https://img.shields.io/badge/docker-blue.svg" />
|
||||
<br/>
|
||||
<img src ="https://img.shields.io/badge/Platform-Windows|Linux-green.svg"/>
|
||||
<img src ="https://img.shields.io/badge/Docker-arm|arm64|amd64-blue.svg" />
|
||||
</p>
|
||||
|
||||
### 缘起
|
||||
看了市面上各类RustDesk WEB API版本,或多或少的存在一些问题,比如说,需要通过url注册、新版客户端某些接口不支持、无法方便的修改密码等不足,因此博采众长,撸一个自己喜欢的版本来用。在此要感谢论坛及github的各位朋友写的接口,省去了我抓包找接口的时间。
|
||||

|
||||
## 缘起
|
||||
|
||||
看了市面上各类 RustDesk WEB API 版本,或多或少的存在一些问题,比如说,需要通过url注册、新版客户端某些接口不支持、无法方便的修改密码等不足,因此博采众长,撸一个自己喜欢的版本来用。在此要感谢论坛及github的各位朋友写的接口,省去了我抓包找接口的时间。
|
||||
|
||||

|
||||
|
||||
## 功能特点
|
||||
|
||||
### 功能特点
|
||||
- 支持前台网页自主注册和登录。
|
||||
- 注册页与登录页:
|
||||
|
||||
<img src="images/front_reg.png" width="45%" />
|
||||
<img src="images/front_login.png" width="45%" />
|
||||
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
- 支持前台展示设备信息,分为管理员版、用户版。
|
||||
- 支持自定义别名(备注)。
|
||||
- 支持后台管理。
|
||||
- 支持彩色标签。
|
||||
|
||||
<img src="images/rust_books.png" width="45%" />
|
||||
|
||||
|
||||

|
||||
|
||||
- 支持设备在线统计。
|
||||
- 支持设备密码保存。
|
||||
- 利用心跳接口自动管理token并保活。
|
||||
- 支持分享设备给其他用户(本功能暂未实现)。
|
||||
|
||||
后台主页:
|
||||
<img src="images/admin_main.png" width="60%" />
|
||||
|
||||
### 管理员设置
|
||||
当数据库中不存在账户时,第一个注册的账户直接获取超级管理员权限,之后注册账户为普通账户。
|
||||
后台主页:
|
||||

|
||||
|
||||
### 其他说明
|
||||
设备信息
|
||||
经测试,客户端会在非绿色版模式下,安装为服务的模式中,定时发送设备信息到api接口,
|
||||
所以如果想要设备信息,需要安装rustdesk客户端并启动服务。
|
||||
## 安装
|
||||
|
||||
### 连接速度慢
|
||||
新版本Key模式链接速度慢,可以在服务端启动服务时,不要带参数的-k,此时,客户端也不能配置key
|
||||
### 开箱即用
|
||||
|
||||
仅支持Windows,请前往 release 下载,无需安装环境,直接运行`启动.bat`即可。独立版截图:
|
||||
|
||||

|
||||
|
||||
### 获取方法
|
||||
### 代码运行
|
||||
|
||||
#### 开箱即用版
|
||||
|
||||
Window独立打包版,无需安装环境,直接运行`启动.bat`即可。请前往release下载。仅支持windows
|
||||
独立版截图:
|
||||
|
||||
|
||||
|
||||
#### 代码版本
|
||||
|
||||
将代码克隆到本地后,请先安装依赖:
|
||||
`pip install -r requirements.txt`
|
||||
|
||||
确保依赖安装正确后,执行:
|
||||
`python manage.py runserver 0.0.0.0:21114` 端口号请自行修改。
|
||||
|
||||
此时即可使用`http://本机IP:端口`的形式来访问啦。
|
||||
|
||||
支持Django3及Django4+
|
||||
注意,如果cengtos配置时,Django4会因为系统的sqlite3版本过低而出问题,请修改依赖库中的文件,路径:
|
||||
`xxxx/Lib/site-packages/django/db/backends/sqlite3/base.py` (这是例子,根据情况自行查找包所在地址)
|
||||
|
||||
|
||||
修改内容:
|
||||
```bash
|
||||
# 将代码克隆到本地
|
||||
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` (根据情况自行查找包所在地址),修改内容:
|
||||
```python
|
||||
# from sqlite3 import dbapi2 as Database #(注释掉这行)
|
||||
from pysqlite3 import dbapi2 as Database # 启用pysqlite3
|
||||
```
|
||||
|
||||
#### Docker方式
|
||||
|
||||
根目录执行命令:
|
||||
`docker compose --compatibility up --build -d;`
|
||||
### Docker 运行
|
||||
|
||||
#### 自行构建
|
||||
```bash
|
||||
git clone https://github.com/kingmo888/rustdesk-api-server.git
|
||||
cd rustdesk-api-server
|
||||
docker compose --compatibility up --build -d
|
||||
```
|
||||
感谢热心网友 @ferocknew 提供。
|
||||
|
||||
### 计划开发
|
||||
#### 预构建运行
|
||||
|
||||
1、分享设备给其他已注册用户
|
||||
docker run 命令:
|
||||
|
||||
说明:类似网盘url分享,url激活后可以获得某个或某组或某个标签下的设备
|
||||
备注:其实web api作为中间件,可做的不多,更多功能还是需要修改客户端来实现,就不太值当了。
|
||||
```bash
|
||||
docker run -d \
|
||||
--name rustdesk-api-server \
|
||||
-p 21114:21114 \
|
||||
-e HOST=0.0.0.0 \
|
||||
-e TZ=Asia/Shanghai \
|
||||
-e CSRF_TRUSTED_ORIGINS=http://yourdomain.com:21114 \ #修改CSRF_TRUSTED_ORIGINS为你的访问地址
|
||||
-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:master
|
||||
```
|
||||
|
||||
2、集成Web桌面形式
|
||||
docker-compose 方式:
|
||||
|
||||
将大神的web桌面集成进来(待议)
|
||||
```yaml
|
||||
version: "3.8"
|
||||
services:
|
||||
rustdesk-api-server:
|
||||
container_name: rustdesk-api-server
|
||||
image: ghcr.io/kingmo888/rustdesk-api-server:master
|
||||
environment:
|
||||
- HOST=0.0.0.0
|
||||
- TZ=Asia/Shanghai
|
||||
- CSRF_TRUSTED_ORIGINS=http://yourdomain.com:21114 #修改CSRF_TRUSTED_ORIGINS为你的访问地址
|
||||
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
|
||||
```
|
||||
## 使用问题
|
||||
|
||||
- 管理员设置
|
||||
|
||||
当数据库中不存在账户时,第一个注册的账户直接获取超级管理员权限,之后注册账户为普通账户。
|
||||
|
||||
- 设备信息
|
||||
|
||||
经测试,客户端会在非绿色版模式下,安装为服务的模式中,定时发送设备信息到api接口,所以如果想要设备信息,需要安装rustdesk客户端并启动服务。
|
||||
|
||||
- 连接速度慢
|
||||
|
||||
新版本Key模式链接速度慢,可以在服务端启动服务时,不要带参数的-k,此时,客户端也不能配置key。
|
||||
|
||||
## 开发计划
|
||||
|
||||
- [ ] 分享设备给其他已注册用户
|
||||
|
||||
> 说明:类似网盘url分享,url激活后可以获得某个或某组或某个标签下的设备
|
||||
> 备注:其实web api作为中间件,可做的不多,更多功能还是需要修改客户端来实现,就不太值当了。
|
||||
|
||||
- [ ] 集成Web客户端形式
|
||||
|
||||
> 将大神的web客户端集成进来(待议)
|
||||
|
||||
@ -7,10 +7,12 @@ services:
|
||||
environment:
|
||||
- HOST=0.0.0.0
|
||||
- TZ=Asia/Shanghai
|
||||
- CSRF_TRUSTED_ORIGINS=<//域名:端口>
|
||||
- CSRF_TRUSTED_ORIGINS=http://yourdomain.com:21114
|
||||
volumes:
|
||||
- ./db.sqlite3:/rustdesk-api-server/db.sqlite3
|
||||
- /yourpath/db:/rustdesk-api-server/db
|
||||
- /etc/timezone:/etc/timezone:ro
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
network_mode: bridge
|
||||
ports:
|
||||
- "21114:21114"
|
||||
restart: unless-stopped
|
||||
|
||||
6
run.sh
6
run.sh
@ -1,4 +1,10 @@
|
||||
#!/bin/bash
|
||||
|
||||
cd /rustdesk-api-server;
|
||||
|
||||
if [ ! -e "./db/db.sqlite3" ]; then
|
||||
cp "./db_bak/db.sqlite3" "./db/db.sqlite3"
|
||||
echo "首次运行,初始化数据库"
|
||||
fi
|
||||
|
||||
python manage.py runserver $HOST:21114;
|
||||
|
||||
@ -78,7 +78,7 @@ WSGI_APPLICATION = 'rustdesk_server_api.wsgi.application'
|
||||
DATABASES = {
|
||||
'default': {
|
||||
'ENGINE': 'django.db.backends.sqlite3',
|
||||
'NAME': BASE_DIR / 'db.sqlite3',
|
||||
'NAME': BASE_DIR / 'db/db.sqlite3',
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user