Banner image of the blog
站长头像

花朝月夕

一个小小的个人网站

文章 评论 标签
6 1 0
标签云
暂无标签
0 0 分钟

搭建RustDesk(API版)远程服务全过程

2025-12-29 教程 编辑

很多远程软件刚开始比较好用,过个一年半载就各种限速/限时/画质变差。因此利用开源项目rustdesk搭建自己的远程服务。
由于官方定价较贵(10美元/月),这里使用第三方api。目的是:
1.防止别人得知rustdesk服务器地址与密钥后滥用,如果要使用必须登录;
2.支持web远程、地址簿、用户管理等功能。

编辑docker-compose
01.png
以下为完整代码:

services:
  rustdesk:
    image: lejianwen/rustdesk-server-s6:latest
    container_name: rustdesk-server
    ports:
      - "21114:21114"    # 注意:所有端口必须加引号
      - "21115:21115"
      - "21116:21116"    # TCP端口
      - "21116:21116/udp" # UDP端口
      - "21117:21117"
      - "21118:21118"
      - "21119:21119"
    environment: 
      - RELAY=【你的域名或IP】:21117 # 默认的中继服务器
      - ENCRYPTED_ONLY=1
      - MUST_LOGIN=Y  # 是否强制登陆
      - TZ=Asia/Shanghai  # 时区
      - RUSTDESK_API_LANG=en,zh-CN  # 语言
      - RUSTDESK_API_APP_WEB_CLIENT=1  # 是否启用web-client;1启用,0不启用;默认1
      - RUSTDESK_API_APP_REGISTER=TRUE  # 是否启用注册;true启用,false不启用;默认false
      - RUSTDESK_API_APP_SHOW_SWAGGER=1  # 是否显示swagger文档;1显示,0不显示;默认0
      - RUSTDESK_API_APP_TOKEN_EXPIRE=168h  # token有效时长
      - RUSTDESK_API_APP_DISABLE_PWD_LOGIN=FALSE  # 是否禁用密码登录;true禁用,false不禁用;默认false
      - RUSTDESK_API_APP_REGISTER_STATUS=2  # 注册用户默认状态;1启用,2禁用;默认1
      - RUSTDESK_API_APP_CAPTCHA_THRESHOLD=1  # 验证码触发次数;-1不启用,0一直启用,>0登录错误次数后启用;默认3
      - RUSTDESK_API_APP_BAN_THRESHOLD=5  # 封禁IP触发次数;0不启用,>0登录错误次数后封禁IP;默认0
     # - RUSTDESK_API_ADMIN_TITLE=RustDesk Api Admin  # 后台标题
     # - RUSTDESK_API_ADMIN_HELLO=  # 后台欢迎语,可以使用html
     # - RUSTDESK_API_ADMIN_HELLO_FILE=./hello.html  # 后台欢迎语文件,如果内容多,使用文件更方便。会覆盖RUSTDESK_API_ADMIN_HELLO
     # - RUSTDESK_API_GIN_TRUST_PROXY=192.168.1.0  # 信任的代理IP列表,以,分割;默认信任所有
      - RUSTDESK_API_GORM_TYPE=sqlite  # 数据库类型;sqlite,mysql;默认sqlite
      - RUSTDESK_API_GORM_MAX_IDLE_CONNS=10  # 数据库最大空闲连接数
      - RUSTDESK_API_GORM_MAX_OPEN_CONNS=100  # 数据库最大打开连接数
      - RUSTDESK_API_RUSTDESK_PERSONAL=1  # 是否启用个人版API;1启用,0不启用;默认1
     # - RUSTDESK_API_MYSQL_USERNAME=root  # mysql用户名
     # - RUSTDESK_API_MYSQL_PASSWORD=123456  # mysql密码
     # - RUSTDESK_API_MYSQL_ADDR=127.0.0.1:3306  # mysql地址
     # - RUSTDESK_API_MYSQL_DBNAME=rustdesk  # mysql数据库名
      - RUSTDESK_API_RUSTDESK_ID_SERVER=【你的域名或IP】:21116  # Rustdesk的id服务器地址
      - RUSTDESK_API_RUSTDESK_RELAY_SERVER=【你的域名或IP】:21117  # Rustdesk的relay服务器地址
      - RUSTDESK_API_RUSTDESK_API_SERVER=【反向代理地址】  # Rustdesk的api服务器地址
      - RUSTDESK_API_RUSTDESK_WS_HOST=【反向代理地址】  # 自定义Websocket Host
     # - RUSTDESK_API_RUSTDESK_KEY=  # Rustdesk的key
     # - RUSTDESK_API_RUSTDESK_KEY_FILE=./data/id_ed25519.pub  # Rustdesk存放key的文件
     # - RUSTDESK_API_RUSTDESK_WEBCLIENT MAGICQUERYONLINE=0  # Webclientv2中是否启用新的在线状态查询方法;1启用,0不启用;默认0
     # - RUSTDESK_API_RUSTDESK_WS_HOST=wss://192.168.1.123:1234  # 自定义WebsocketHost
     # - RUSTDESK_API_PROXY_ENABLE=FALSE  # 是否启用代理;true启用,false不启用;默认false
     # - RUSTDESK_API_PROXY_HOST=http://127.0.0.1:1080  # 代理地址
     # - RUSTDESK_API_JWT_KEY=huyanhao=  # 自定义JWTKEY,为空则不启用JWT。如果没使用lejianwen/rustdesk-server中的MUST_LOGIN,建议设置为空
     # - RUSTDESK_API_JWT_EXPIRE_DURATION=168h  # JWT有效时间
    volumes:
      - ./data:/data
      - ./data/api:/app/data # sqlite数据库文件挂载,为mysql时可以不配置
    restart: unless-stopped
    network_mode: bridge

配置DDNS与web-api相关的反向代理
DDNS与域名配置ssl证书不再赘述。
【你的域名:端口】 → http://127.0.0.1:21114
【你的域名:端口】/ws/id → http://127.0.0.1:21118/ws/id
【你的域名:端口】/ws/relay → http://127.0.0.1:21119/ws/relay
以lucky为例:
02.png
03.png
效果如图:
04.png
注意:如果反向代理服务器与rustdesk服务器在同一主机,填写127.0.0.1,否则填写rustdesk服务器所在IP。

配置RustDesk客户端
05.png
由于rustdesk本质是靠IP进行识别,所以ID服务器填写任何能指向IP地址的域名都可以(当然包括IPv4与IPv6),例如:
06.png
若服务器在NAT环境下,还需要在光猫/路由器中配置一下端口转发,一般在虚拟服务器设置中。另外注意:IPv6需要在光猫中设置放行21116、21117端口以及你的反代端口,方法在之前的文章中有提到。如果不想放行这些端口,需要自行配置反向代理,然后在网络设置中填写你反代的域名,其中,21116端口对应ID服务器(注意tcp/udp都需要),21117端口对应中继服务器

登录使用
使用你刚才配置的反向代理地址打开后台,如https://【你的域名:端口】
默认登录账号:admin,密码在日志中查找 Admin Password Is: 后的字符。
强烈建议创建一个新账号,禁用初始管理员账号。
07.png

本站未注明转载的文章均为原创,并采用 CC BY-NC-SA 4.0 授权协议,转载请注明来源,谢谢!