A Rustdesk API interface implemented in Python, with WebUI management support
-
Supports self-registration and login on the front-end webpage.
-
Supports displaying device information on the front end, divided into administrator and user versions.
-
Supports custom aliases (remarks).
-
Supports backend management.
-
Supports device online statistics.
-
Supports saving device passwords.
-
Automatically manages tokens and keeps them alive using the heartbeat interface.
-
Supports web control terminal (currently only supports non-SSL mode, see below for usage issues)
Only supports Windows, please go to the release to download, no need to install environment, just run 启动.bat
directly. Screenshots:
# 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
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 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
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 |
-
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.
-
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).