3步零门槛部署RustDesk API服务器:从安装到运维全指南
RustDesk API服务器是基于Go语言开发的远程协助解决方案后端,支持自建服务器部署,为企业提供安全可控的远程控制基础设施。本文将通过需求分析、方案设计、实施步骤和场景应用四个阶段,帮助您从零开始完成RustDesk API服务器的私有部署与运维优化。
一、需求分析:为什么需要自建RustDesk API服务器
在企业远程协助场景中,自建API服务器可解决以下核心问题:
- 数据隐私保护:避免远程控制数据经过第三方服务器
- 访问速度优化:本地化部署降低网络延迟
- 权限管理定制:根据企业需求定制访问控制策略
- 功能扩展自由:基于API接口开发定制化功能
技术选型决策
RustDesk API服务器采用Go语言开发,基于Beego框架构建,提供RESTful API接口,支持SQLite3和MySQL两种数据库方案:
| 数据库类型 | 适用场景 | 优势 | 限制 |
|---|---|---|---|
| SQLite3 | 小型部署、测试环境 | 无需额外配置、文件型数据库 | 不支持高并发、无网络访问能力 |
| MySQL | 生产环境、企业级部署 | 支持高并发、网络访问、数据备份 | 需要单独安装配置、资源占用较高 |
💡 专家提示:个人使用或团队规模小于10人时,优先选择SQLite3;企业级应用或预期并发连接数超过50时,建议使用MySQL。
二、方案设计:构建企业级远程控制后端
系统架构设计

核心组件包括:
- API服务层:处理客户端请求,提供RESTful接口
- 业务逻辑层:实现用户认证、设备管理等核心功能
- 数据持久层:与数据库交互,存储用户和设备信息
- 工具支持层:提供日志、加密、配置管理等辅助功能
网络拓扑规划
推荐部署架构:
- 公网访问层:Nginx反向代理处理SSL终止和请求转发
- 应用服务层:RustDesk API服务器集群
- 数据存储层:主从架构的MySQL数据库或高可用SQLite配置
⚠️ 注意事项:生产环境必须配置防火墙,仅开放必要端口(默认21114),并启用HTTPS加密传输。
三、实施步骤:从源码到服务的全流程部署
1. 环境准备与依赖安装
首先安装必要的系统依赖:
# Ubuntu/Debian系统
sudo apt update && sudo apt install -y golang gcc git
# 验证Go环境
go version # 预期结果:显示Go 1.16+版本信息
💡 专家提示:推荐使用Go 1.18或更高版本,以获得更好的性能和安全更新。
2. 获取与配置项目源码
克隆项目代码并安装依赖:
git clone https://gitcode.com/gh_mirrors/rus/rustdesk-api-server
cd rustdesk-api-server
# 安装项目依赖
go mod download # 预期结果:下载所有依赖包,无错误提示
3. 数据库配置与初始化
根据选择的数据库类型,修改配置文件conf/app.conf:
SQLite3配置(默认):
appname = rustdesk-api-server
HTTPAddr = 0.0.0.0
httpport = 21114
runmode = prod
db_type = sqlite3
db_name = rustdesk.db
MySQL配置:
appname = rustdesk-api-server
HTTPAddr = 0.0.0.0
httpport = 21114
runmode = prod
db_type = mysql
db_host = 127.0.0.1:3306
db_user = rustdesk
db_pass = yourpassword
db_name = rustdesk
初始化数据库:
# 手动执行SQL脚本(如提供)
cat db.sql | sqlite3 rustdesk.db # SQLite3用户
# 或
mysql -u root -p rustdesk < db.sql # MySQL用户
4. 服务启动与验证
启动API服务器:
# 开发模式
go run main.go # 预期结果:显示启动日志,无错误信息,监听21114端口
# 生产模式(后台运行)
nohup go run main.go > rustdesk-api.log 2>&1 &
验证服务状态:
curl http://127.0.0.1:21114/api/health
# 预期结果:返回{"status":"ok","version":"x.x.x"}
⚠️ 注意事项:首次启动时,系统会自动创建必要的数据表结构,请勿手动修改数据库表结构。
5. 配置Nginx反向代理
为提高安全性和性能,配置Nginx作为反向代理:
server {
listen 443 ssl;
server_name rustdesk-api.yourdomain.com;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
location / {
proxy_pass http://127.0.0.1:21114;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
重启Nginx并验证:
sudo systemctl restart nginx
curl https://rustdesk-api.yourdomain.com/api/health # 预期结果:返回健康状态
四、客户端配置:连接自建API服务器
在RustDesk客户端中配置自建API服务器:
配置步骤:
- 打开RustDesk客户端,点击"菜单" > "设置" > "网络"
- 在"ID/中继服务器"设置中:
- API服务器:输入您的服务器地址(如
https://rustdesk-api.yourdomain.com) - 保持默认端口21114(Android客户端必须使用此端口)
- 输入API密钥(如配置了的话)
- API服务器:输入您的服务器地址(如
- 点击"确认"保存设置
💡 专家提示:Android客户端配置时不需要添加http://或https://前缀,直接输入域名或IP地址。
五、性能调优:提升API服务器处理能力
数据库连接池配置
修改conf/app.conf优化数据库连接:
# MySQL连接池设置
db_max_open = 20 # 最大打开连接数
db_max_idle = 10 # 最大空闲连接数
db_conn_timeout = 30 # 连接超时时间(秒)
日志轮转配置
配置日志自动轮转,避免单个日志文件过大:
log_level = 6 # 日志级别,6为INFO
log_path = logs/ # 日志存放路径
maxlines = 100000 # 每个日志文件最大行数
maxsize = 102400 # 每个日志文件最大大小(KB)
daily = true # 按天轮转
maxdays = 30 # 日志保留天数
服务进程管理
使用systemd管理服务进程,确保服务稳定运行:
创建服务文件/etc/systemd/system/rustdesk-api.service:
[Unit]
Description=RustDesk API Server
After=network.target mysql.service
[Service]
User=www-data
Group=www-data
WorkingDirectory=/path/to/rustdesk-api-server
ExecStart=/usr/local/go/bin/go run main.go
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
启用并启动服务:
sudo systemctl enable rustdesk-api
sudo systemctl start rustdesk-api
六、典型应用场景:企业级部署方案
1. 小型团队部署(10人以下)
架构:单服务器 + SQLite3
- 硬件要求:2核4G内存,20GB SSD
- 部署步骤:按基础安装步骤部署,无需额外配置
- 维护重点:定期备份SQLite数据库文件
2. 中型企业部署(10-100人)
架构:应用服务器 + MySQL数据库
- 硬件要求:4核8G内存,50GB SSD
- 高可用策略:配置MySQL主从复制
- 备份策略:每日自动备份数据库
3. 大型企业部署(100人以上)
架构:负载均衡 + 应用集群 + 主从数据库
- 负载均衡:Nginx或云负载均衡服务
- 应用集群:2台以上应用服务器
- 数据库:MySQL主从架构,支持读写分离
- 监控:部署Prometheus + Grafana监控系统状态
七、API接口实战:常用功能调用示例
创建用户账号
curl -X POST "http://127.0.0.1:21114/api/reg" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "username=john_doe&password=SecurePass123&auth_key=your_auth_key"
成功响应:
{
"code": 0,
"message": "注册成功",
"data": {
"user_id": 1001,
"username": "john_doe"
}
}
获取地址簿列表
curl -X GET "http://127.0.0.1:21114/api/address-book" \
-H "Authorization: Bearer your_jwt_token"
成功响应:
{
"code": 0,
"message": "success",
"data": [
{
"id": 1,
"name": "办公室电脑",
"address": "192.168.1.100",
"status": "online"
},
{
"id": 2,
"name": "家里服务器",
"address": "10.0.0.5",
"status": "offline"
}
]
}
八、故障排除:常见问题与解决方案
如何解决端口占用问题?
当启动服务时出现"address already in use"错误:
- 查找占用端口的进程:
sudo lsof -i :21114 # 找到占用21114端口的进程心软
- 终止占用进程或修改配置文件中的
httpport参数使用其他端口。
数据库连接失败怎么办?
- 检查数据库服务是否正常运行
- 验证配置文件中的数据库连接参数
- 确认数据库用户权限是否正确
- 检查防火墙是否允许应用服务器访问数据库
客户端无法连接到API服务器?
- 检查API服务器是否正常运行:
curl http://服务器IP:21114/api/health - 验证网络连通性:
telnet 服务器IP 21114 - 检查服务器防火墙设置,确保21114端口开放
- 确认客户端配置的服务器地址和端口是否正确
九、版本升级与数据迁移
版本升级步骤
- 备份当前项目文件和数据库
cp -r rustdesk-api-server rustdesk-api-server_backup
sqlite3 rustdesk.db .dump > backup.sql # SQLite用户
# 或
mysqldump -u root -p rustdesk > backup.sql # MySQL用户
- 获取最新代码并重新部署
cd rustdesk-api-server
git pull
go mod download
go run main.go # 重启服务
数据迁移指南
从SQLite3迁移到MySQL:
- 导出SQLite3数据:
sqlite3 rustdesk.db .dump > data.sql
- 编辑data.sql文件,删除SQLite特有语法
- 在MySQL中创建新数据库并导入数据: 自身```sql CREATE DATABASE rustdesk CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; USE rustdesk; SOURCE data.sql;
4. 修改配置文件使用MySQL连接参数,重启服务
⚠️ **注意事项**:数据迁移前务必做好备份,迁移过程中服务需要暂时停止。
## 总结
通过本文指南,您已掌握RustDesk API服务器的私有部署、配置优化、性能调优和日常运维技能。无论是小型团队还是大型企业,都可以基于本文提供的方案构建安全、高效的远程协助基础设施。随着业务发展,您可以根据实际需求扩展服务架构,为企业远程办公提供稳定可靠的技术支持。
持续关注项目更新,及时获取新功能和安全补丁,确保系统长期稳定运行。如有定制化需求,可以基于API接口开发更多企业专属功能,充分发挥RustDesk API服务器的技术价值。
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust075- DDeepSeek-V4-ProDeepSeek-V4-Pro(总参数 1.6 万亿,激活 49B)面向复杂推理和高级编程任务,在代码竞赛、数学推理、Agent 工作流等场景表现优异,性能接近国际前沿闭源模型。Python00
MiniMax-M2.7MiniMax-M2.7 是我们首个深度参与自身进化过程的模型。M2.7 具备构建复杂智能体应用框架的能力,能够借助智能体团队、复杂技能以及动态工具搜索,完成高度精细的生产力任务。Python00
GLM-5.1GLM-5.1是智谱迄今最智能的旗舰模型,也是目前全球最强的开源模型。GLM-5.1大大提高了代码能力,在完成长程任务方面提升尤为显著。和此前分钟级交互的模型不同,它能够在一次任务中独立、持续工作超过8小时,期间自主规划、执行、自我进化,最终交付完整的工程级成果。Jinja00
Kimi-K2.6Kimi K2.6 是一款开源的原生多模态智能体模型,在长程编码、编码驱动设计、主动自主执行以及群体任务编排等实用能力方面实现了显著提升。Python00
Hy3-previewHy3 preview 是由腾讯混元团队研发的2950亿参数混合专家(Mixture-of-Experts, MoE)模型,包含210亿激活参数和38亿MTP层参数。Hy3 preview是在我们重构的基础设施上训练的首款模型,也是目前发布的性能最强的模型。该模型在复杂推理、指令遵循、上下文学习、代码生成及智能体任务等方面均实现了显著提升。Python00
