Skip to content

Latest commit

 

History

History
210 lines (150 loc) · 8.84 KB

README_EN.md

File metadata and controls

210 lines (150 loc) · 8.84 KB

rustdesk-api-server

If the project has helped you, giving a star isn't too much, right?

Please use the latest version 1.2.3 of the client.

点击这里查看中文说明。

A Rustdesk API interface implemented in Python, with WebUI management support

Main Page

Features

  • Supports self-registration and login on the front-end webpage.

    • Registration and login pages: Front Registration Front Login
  • Supports displaying device information on the front end, divided into administrator and user versions.

  • Supports custom aliases (remarks).

  • Supports backend management.

  • Supports colored tags. Rust Books

  • Supports device online statistics.

  • Supports saving device passwords.

  • Automatically manages tokens and keeps them alive using the heartbeat interface.

  • Supports sharing devices with other users. Rust Share

  • Supports web control terminal (currently only supports non-SSL mode, see below for usage issues) Rust Share

Admin Home Page: Admin Main

Installation

Method 1: Out-of-the-box

Only supports Windows, please go to the release to download, no need to install environment, just run 启动.bat directly. Screenshots:

Windows Run Directly Version

Method 2: Running the Code

# Clone the code locally
git clone https://github.com/kingmo888/rustdesk-api-server.git
# Enter the directory
cd rustdesk-api-server
# Install dependencies
pip install -r requirements.txt
# After ensuring dependencies are installed correctly, execute:
# Please modify the port number yourself, it is recommended to keep 21114 as the default port for Rustdesk API
python manage.py runserver 0.0.0.0:21114

Now you can access it using http://localhostIP:Port.

Note: When configuring on CentOS, Django4 may have problems due to the low version of sqlite3 in the system. Please modify the file in the dependency library. Path: xxxx/Lib/site-packages/django/db/backends/sqlite3/base.py (Find the package address according to the situation), modify the content:

# from sqlite3 import dbapi2 as Database   #(comment out this line)
from pysqlite3 import dbapi2 as Database # enable pysqlite3

Method 3: Docker Run

Docker Method 1: Build Yourself

git clone https://github.com/kingmo888/rustdesk-api-server.git
cd rustdesk-api-server
docker compose --compatibility up --build -d

Thanks to the enthusiastic netizen @ferocknew for providing.

Docker Method 2: Pre-built Run

docker run command:

docker run -d \
  --name rustdesk-api-server \
  -p 21114:21114 \
  -e CSRF_TRUSTED_ORIGINS=http://yourdomain.com:21114 \ #Cross-origin trusted source, optional
  -e ID_SERVER=yourdomain.com \ #ID server used by the web control terminal
  -v /yourpath/db:/rustdesk-api-server/db \ #Modify /yourpath/db to your host database mount directory
  -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 method:

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 #Cross-origin trusted source, optional
      - ID_SERVER=yourdomain.com #ID server used by the web control terminal
    volumes:
      - /yourpath/db:/rustdesk-api-server/db #Modify /yourpath/db to your host database mount directory
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    network_mode: bridge
    ports:
      - "21114:21114"
    restart: unless-stopped

Environment Variables

Variable Name Reference Value Note
HOST Default 0.0.0.0 IP binding of the service
TZ Default Asia/Shanghai, optional Timezone
SECRET_KEY Optional, custom a random string Program encryption key
CSRF_TRUSTED_ORIGINS Optional, verification off by default;
If you need to enable it, fill in your access address http://yourdomain.com:21114
To disable verification, please delete this variable instead of leaving it blank
Cross-origin trusted source
ID_SERVER Optional, default is the same host as the API server.
Customizable like yourdomain.com
ID server used by the web control terminal
DEBUG Optional, default False Debug mode
ALLOW_REGISTRATION Optional, default True Whether to allow new user registration
Database Configuration -- Start -- If not using MYSQL, the following are unnecessary
DATABASE_TYPE Optional, default SQLITE3 Database type (SQLITE/MYSQL)
MYSQL_DBNAME Optional, default - MYSQL database name
MYSQL_HOST Optional, default 127.0.0.1 MYSQL database server IP
MYSQL_USER Optional, default - MYSQL database username
MYSQL_PASSWORD Optional, default - MYSQL database password
MYSQL_PORT Optional, default 3306 MYSQL database port
Database Configuration -- End -- See sqlite3 migration to mysql tutorial

Usage Issues

  • Administrator Settings

    When there are no accounts in the database, the first registered account directly obtains super administrator privileges,

and subsequently registered accounts are ordinary accounts.

  • Device Information

    Tested, the client will send device information to the API interface regularly in the mode of installation as a service under non-green mode, so if you want device information, you need to install the Rustdesk client and start the service.

  • Slow Connection Speed

    The new version Key mode connection speed is slow. You can start the service on the server without the -k parameter. At this time, the client cannot configure the key either.

  • Web Control Terminal Configuration

    • Set the ID_SERVER environment variable or modify the ID_SERVER configuration item in the rustdesk_server_api/settings.py file and fill in the IP or domain name of the ID server/relay server.
  • Web Control Terminal Keeps Spinning

    • Check if the ID server filling is correct.

    • The web control terminal currently only supports non-SSL mode. If the webui is accessed via https, remove the 's', otherwise ws cannot connect and keeps spinning. For example: https://domain.com/webui, change to http://domain.com/webui

  • CSRF verification failed when logging in or logging out of backend operations. Request interrupted.

    This operation is highly likely to be a combination of docker configuration + nginx reverse proxy + SSL. Pay attention to modifying CSRF_TRUSTED_ORIGINS. If it is SSL, it starts with https, otherwise it is http.

Development Plans

  • Share devices with other registered users (v1.3+)

    Explanation: Similar to sharing URLs of network disks, the URL can be activated to obtain devices under a certain group or certain label. Note: In fact, there is not much that can be done with the web API as middleware. More functions still need to be implemented by modifying the client, which is not very worthwhile.

  • Integration of Web client form (v1.4+)

    Integrating the great god's web client, already integrated. Source

  • Filter expired (offline) devices to distinguish between online and offline devices (1.4.7)

    By configuration, clean or filter devices that have expired for more than a specified time.

  • Split the first screen into user list page and administrator list page and add pagination (1.4.6).

  • Support exporting information to xlsx files (1.4.6).

    Allows administrators to export all device information on the [All Devices] page.

  • Set whether to allow new user registration through configuration items (1.4.7).

  • Support mysql and sqlite3 migration to mysql (1.4.8).

Other Related Tools

Stargazers over time

Stargazers over time