首页
/ 从零开始部署RustDesk API服务器:完整配置与应用指南

从零开始部署RustDesk API服务器:完整配置与应用指南

2026-04-26 11:37:54作者:卓炯娓

核心价值解析

RustDesk API服务器作为远程协助工具RustDesk的后端支撑系统,提供了账号管理、设备注册和地址簿维护等关键功能。采用Go语言开发的该服务具备三大核心优势:

  • 高性能并发处理:基于Go语言原生的协程机制,可同时处理数千设备的连接请求
  • 灵活的数据库支持:兼容MySQL和SQLite3两种主流数据库,满足不同规模部署需求
  • 企业级安全架构:集成JWT认证(JSON Web Token)机制,确保API通信安全可靠

[!TIP] 该服务特别适合需要集中管理多台设备的企业环境,通过API接口可轻松实现设备远程控制权限的分配与管理。

环境准备清单

在开始部署前,请确保您的系统满足以下要求:

  • 基础环境
    • Go语言环境(1.16或更高版本)
    • GCC编译器(用于编译C语言依赖库)
    • Git版本控制工具
  • 数据库选项(二选一):
    • MySQL 5.7+(推荐生产环境使用)
    • SQLite3(适合轻量级部署)
  • 网络要求
    • 开放21114端口(默认服务端口)
    • 具备互联网连接(用于下载依赖包)

[!WARNING] 生产环境建议使用Linux服务器(如Ubuntu 20.04+或CentOS 7+),Windows系统仅推荐用于开发测试。

分步实施指南

基础部署流程

  1. 获取项目代码

    git clone https://gitcode.com/gh_mirrors/rus/rustdesk-api-server.git
    cd rustdesk-api-server
    

    预期结果:项目代码克隆到本地并进入项目根目录

  2. 安装依赖包

    go mod download
    

    预期结果:所有依赖包下载到本地缓存,无错误提示

  3. 创建基础配置文件

    cp ./conf/app.conf.example ./conf/app.conf
    

    预期结果:配置文件模板复制完成

  4. 初始化数据库

    # MySQL用户请先创建数据库
    mysql -u root -p -e "CREATE DATABASE rustdesk_api DEFAULT CHARACTER SET utf8mb4"
    
    # 执行数据库迁移(自动创建表结构)
    go run main.go -migrate
    

    预期结果:数据库表结构创建完成,无错误提示

  5. 启动基础服务

    go run main.go
    

    预期结果:服务启动成功,控制台显示"Server started on :21114"

进阶配置方案

  1. 优化配置文件 编辑./conf/app.conf文件,修改以下关键配置:

    # 生产环境配置
    runmode = prod
    httpport = 21114
    
    # 数据库配置(MySQL示例)
    db_type = mysql
    db_host = 127.0.0.1
    db_port = 3306
    db_user = rustdesk
    db_pass = your_strong_password
    db_name = rustdesk_api
    
    # 安全配置
    jwt_secret = your_24_char_secret_key
    session_timeout = 86400
    

    预期结果:配置文件修改完成,保存无错误

  2. 配置系统服务 创建Systemd服务文件:/etc/systemd/system/rustdesk-api.service

    [Unit]
    Description=RustDesk API Server
    After=network.target mysql.service
    
    [Service]
    User=www-data
    WorkingDirectory=/path/to/rustdesk-api-server
    ExecStart=/path/to/rustdesk-api-server/rustdesk-api
    Restart=always
    
    [Install]
    WantedBy=multi-user.target
    

    预期结果:服务配置完成,可通过systemctl管理

  3. 构建可执行文件

    go build -o rustdesk-api main.go
    chmod +x rustdesk-api
    

    预期结果:当前目录生成rustdesk-api可执行文件

  4. 启动系统服务

    sudo systemctl daemon-reload
    sudo systemctl start rustdesk-api
    sudo systemctl enable rustdesk-api
    

    预期结果:服务成功启动并设置为开机自启

典型应用场景

场景一:企业设备管理系统集成

某软件开发公司需要管理分布在各地的开发测试设备,通过RustDesk API实现以下功能:

  1. 自动注册新设备

    curl -X POST "http://api.example.com/api/device/register" \
      -H "Content-Type: application/json" \
      -d '{"device_id":"DEVICE-12345","name":"开发测试机-01","group":"开发部"}'
    
  2. 查询在线设备列表

    curl -X GET "http://api.example.com/api/device/online" \
      -H "Authorization: Bearer YOUR_JWT_TOKEN"
    
  3. 远程协助授权

    curl -X POST "http://api.example.com/api/assist/authorize" \
      -H "Content-Type: application/json" \
      -H "Authorization: Bearer YOUR_JWT_TOKEN" \
      -d '{"device_id":"DEVICE-12345","user_id":"TECH-001","duration":3600}'
    

场景二:客户支持系统对接

某软件厂商为客户提供远程技术支持,通过RustDesk API实现:

  1. 创建临时支持会话

    curl -X POST "http://api.example.com/api/session/create" \
      -H "Content-Type: application/json" \
      -d '{"customer_id":"CUST-789","support_agent":"AGENT-456","expires_in":1800}'
    
  2. 获取会话连接信息

    curl -X GET "http://api.example.com/api/session/info?session_id=SESSION-112233" \
      -H "Authorization: Bearer YOUR_JWT_TOKEN"
    
  3. 记录支持操作日志

    curl -X POST "http://api.example.com/api/log/record" \
      -H "Content-Type: application/json" \
      -H "Authorization: Bearer YOUR_JWT_TOKEN" \
      -d '{"session_id":"SESSION-112233","action":"file_transfer","details":"传输安装包约25MB"}'
    

性能优化建议

  1. 数据库优化

    • MySQL用户建议开启查询缓存(query_cache_size = 64M)
    • 定期执行ANALYZE TABLE优化表结构
    • 对频繁查询的字段建立索引(如device_id, user_id)
  2. 服务性能调优

    • 根据服务器CPU核心数调整Go的GOMAXPROCS参数
    export GOMAXPROCS=$(nproc)
    
    • 启用连接池并合理设置大小
    # 在app.conf中添加
    db_max_open_conns = 20
    db_max_idle_conns = 10
    
  3. 网络优化

    • 使用Nginx作为反向代理,启用gzip压缩
    • 配置适当的TCP连接参数
    # Nginx配置示例
    location / {
      proxy_pass http://localhost:21114;
      proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
      gzip on;
      gzip_types application/json application/javascript;
    }
    

常见问题解决

服务启动失败

[!WARNING] 如果服务启动后立即退出,首先检查数据库连接配置是否正确。

排查步骤

  1. 查看日志文件:tail -f ./logs/app.log
  2. 检查数据库是否可连接:mysql -u 用户名 -p -h 主机名 数据库名
  3. 确认JWT密钥长度是否足够(至少24字符)

客户端无法连接

可能原因及解决

  • 防火墙阻止了21114端口:

    # 开放端口(CentOS示例)
    firewall-cmd --zone=public --add-port=21114/tcp --permanent
    firewall-cmd --reload
    
  • 配置文件中HTTPAddr设置错误:

    # 确保绑定到所有网络接口
    HTTPAddr = 0.0.0.0
    

数据库迁移失败

解决方案

  1. 手动执行SQL脚本:mysql -u root -p rustdesk_api < ./db.sql
  2. 检查数据库用户权限:确保拥有CREATE TABLE权限
  3. 确认数据库版本兼容性:MySQL需要5.7或更高版本

性能瓶颈处理

识别与解决

  1. 使用Go的pprof工具分析性能:
    go tool pprof http://localhost:21114/debug/pprof/profile?seconds=30
    
  2. 检查慢查询日志,优化频繁执行的SQL语句
  3. 考虑使用Redis缓存常用数据,减轻数据库负担

通过以上步骤,您可以从零开始构建一个稳定高效的RustDesk API服务,为远程设备管理提供强大的后端支持。无论是小型团队还是大型企业,该服务都能灵活适应不同规模的部署需求,同时保持良好的性能和安全性。

登录后查看全文
热门项目推荐
相关项目推荐

项目优选

收起