| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
基于 Spring Boot 3.5.6 + Maven 的 RustDesk API 服务器 Java 实现版本。
这是一个完整的 RustDesk 远程桌面管理后端 API 系统,使用 Java + Spring Boot 框架开发,实现了与 Go 版本相同的功能。
cd /path/to/your/workspace
# 项目已创建在 rustdesk-api-java 目录Sa-Token 需要 Redis 来存储分布式 Session:
# 使用 Docker 启动 Redis
docker run -d --name redis-rustdesk -p 6379:6379 redis:7-alpine
# 或使用本地 Redis
redis-server开发环境 (SQLite): 默认配置已设置为使用SQLite,无需额外配置。
生产环境 (MySQL): 编辑 src/main/resources/application-prod.yml:
spring:
datasource:
url: jdbc:mysql://localhost:3306/rustdesk?serverTimezone=Asia/Shanghai
username: root
password: your_password
data:
redis:
host: localhost
port: 6379mvn clean compile# 开发环境
mvn spring-boot:run
# 或编译后运行
mvn clean package
java -jar target/rustdesk-api.jar初次启动时会自动创建管理员账号:
⚠️ 请在首次登录后立即修改密码!
rustdesk-api-java/ ├── src/main/java/com/rustdesk/api/ │ ├── config/ # 配置类 │ │ ├── SaTokenConfig.java # Sa-Token 认证配置 │ │ ├── JpaConfig.java │ │ ├── CorsConfig.java │ │ └── properties/ │ ├── entity/ # 实体类 (15个) │ │ ├── User.java │ │ ├── Peer.java │ │ ├── AddressBook.java │ │ └── ... │ ├── repository/ # JPA Repository (15个) │ ├── service/ # 业务逻辑层 (7个) │ │ ├── UserService.java │ │ └── ... │ ├── controller/ # 控制器 │ │ ├── api/ # RustDesk客户端API │ │ └── admin/ # 管理后台API │ ├── dto/ # 数据传输对象 │ │ ├── request/ │ │ └── response/ │ ├── util/ # 工具类 │ │ ├── PasswordUtil.java # BCrypt 密码加密 │ │ └── ... │ └── exception/ # 异常定义 │ └── GlobalExceptionHandler.java ├── src/main/resources/ │ ├── application.yml # 主配置 │ ├── application-dev.yml # 开发环境 │ ├── application-prod.yml # 生产环境 │ └── db/migration/ # Flyway数据库迁移 │ ├── V1__init_schema.sql │ └── V2__init_data.sql ├── pom.xml ├── README.md └── UPGRADE.md # 架构升级文档
server:
port: 21114
# Sa-Token 配置
sa-token:
token-name: satoken
timeout: 604800 # Token 有效期 7天
is-concurrent: true # 允许并发登录
is-share: false # 不共享 Token
token-style: uuid
is-read-header: true
token-prefix: "Bearer"
# Redis 配置
spring:
data:
redis:
host: localhost
port: 6379
database: 0
# RustDesk 服务器配置
rustdesk:
security:
captcha-threshold: 3 # 验证码触发次数
ban-threshold: 5 # 封禁IP触发次数
rustdesk-server:
id-server: "" # RustDesk ID服务器
relay-server: "" # RustDesk Relay服务器
api-server: "http://localhost:21114"
key: "" # 公钥| 变量名 | 说明 | 示例 |
|---|---|---|
| REDIS_HOST | Redis主机 | localhost |
| REDIS_PORT | Redis端口 | 6379 |
| RUSTDESK_ID_SERVER | ID服务器地址 | 192.168.1.66:21116 |
| RUSTDESK_RELAY_SERVER | Relay服务器地址 | 192.168.1.66:21117 |
| RUSTDESK_API_SERVER | API服务器地址 | http://192.168.1.66:21114 |
| RUSTDESK_KEY | RustDesk公钥 | key_content |
| MYSQL_HOST | MySQL主机 | localhost |
| MYSQL_PORT | MySQL端口 | 3306 |
| MYSQL_DATABASE | 数据库名 | rustdesk |
| MYSQL_USERNAME | 数据库用户名 | root |
| MYSQL_PASSWORD | 数据库密码 | password |
POST /api/login # 用户登录 POST /api/logout # 用户登出 GET /api/login-options # 获取登录选项
GET /api/user/info # 当前用户信息 POST /api/user/changePassword # 修改密码
POST /api/sysinfo # 上报设备信息 GET /api/peers # 获取设备列表
POST /api/admin/login # 管理员登录 GET /api/admin/user/list # 用户列表 POST /api/admin/user/create # 创建用户 GET /api/admin/group/list # 群组列表
详细API文档请访问: http://localhost:21114/swagger-ui.html
项目使用 Flyway 进行数据库版本管理,包含15张表:
时间戳类型不一致: 部分实体的时间字段(如ShareRecord.expire)需要从LocalDateTime改为Long以与Go版本保持一致
CVE 安全漏洞 (详见 UPGRADE.md):
首次启动:
需要将以下实体的时间字段改为Long类型(Unix timestamp毫秒):
// ShareRecord.java
@Column(name = "expire")
private Long expire; // 改为 Long
// 其他可能需要修改的时间字段类似处理查看完整的架构升级文档: UPGRADE.md
| 组件 | v1.x | v2.0 | 改进 |
|---|---|---|---|
| Spring Boot | 3.2.5 | 3.5.6 | 最新稳定版 |
| 认证框架 | Spring Security | Sa-Token 1.44.0 | 代码减少 61% |
| Token 方案 | JWT (自实现) | Sa-Token (内置) | 简化管理 |
| 密码加密 | Spring BCrypt | at.favre.lib BCrypt | 轻量独立 |
| Session 存储 | 内存/数据库 | Redis | 分布式支持 |
| 依赖体积 | 5.2MB+ | 450KB | 减少 91% |
| 特性 | Go版本 | Java版本 | 说明 |
|---|---|---|---|
| 核心API | ✅ | ✅ | 完全兼容 |
| Web Admin | ✅ | ✅ | 功能一致 |
| 第三方登录 | ✅ | ✅ | GitHub/Google/OIDC/Lark (JustAuth) |
| 轻量级认证 | - | ✅ | Sa-Token (比 Spring Security 更轻) |
| Web Client | ✅ | ⚠️ | 待集成 |
| Docker | ✅ | ⚠️ | 待完善 |
| 性能 | 高 | 中等 | JVM启动较慢,运行时性能接近 |
欢迎提交 Issue 和 Pull Request!
本项目参考 lejianwen/rustdesk-api 项目实现。
开发时间: 2024年10月 - 2025年1月 版本: 2.0.0 (Spring Security → Sa-Token 架构升级) 作者: RustDesk API Team (Java Implementation) 架构升级: 详见 UPGRADE.md
| Back | FazBrowse Home | New Git URL |