欢迎光临
我们一直在努力

rustdesk部署和使用,完成frp公网端口映射,实现win、linux、安卓、ios客户端安装

基于frp的RustDesk部署教程,优秀的远程控制工具

0、初衷

平时使用远程桌面主要是向日葵,但在网络不太好时候总是延迟比较大、画面卡顿,并且支持设备数量有限、文件传输速度受限制,因此希望解决找到一款工具随时随地控制自有设备,解决延迟太大、画面卡顿问题,同时支持win系统、linux、安卓、IOS。幸运的是rustdesk就是这么一款可以私有化部署的远程工具,并且可以接入自己的公网ip,实现远程访问。

一、RustDesk API介绍

1.什么是 RustDesk?为什么选择自托管?

(1)RustDesk 是什么?

RustDesk 是一款远程桌面控制软件,支持 Windows、Linux等多种平台。与 向日葵、TeamViewer、AnyDesk 等商业软件类似,它提供远程控制、文件传输等功能,但更加轻量、开源,并允许用户自建服务器。

(2)为什么选择自托管?
  • 数据隐私:所有远程连接数据经过自己的服务器,避免第三方窥探。
  • 性能优化:自建服务器可以选择合适的机房,优化网络延迟和带宽。
  • 不受限制:自托管版本没有连接时间或设备数量的限制。
  • 定制化强:可根据需要调整服务器配置和中继策略。
(3)rustdesk原理

rustdesk有两个服务,hbbs负责验证签名,hbbr负责转发远程控制产生的数据包。

170487506-8ef1f025-ad42-47f9-8d82-b49d0ec759ad

RustDesk 会先用 TCP 21116 信令服务 NAT 打洞,如果打洞成功,直接 P2P 直连,RustDesk 不参与中继。RustDesk 如果没有打洞成功,则走 TCP 21117 中继服务,延迟、画质取决于中继服务器的带宽。

2.RustDesk API项目

RustDesk API项目使用 Go 实现了 RustDesk 的 API,并包含了 Web Admin 和 Web 客户端。RustDesk是一个远程桌面软件,提供了自托管的解决方案,官方API是收费的,这次咱们用到的是Github开源的第三方API源码。

img

✅特性

  • PC端API
    • 支持 github , google 和 OIDC 登录,
    • 支持 web后台 授权登录
    • 支持 LDAP (AD和OpenLDAP已测试), 如果API Server配置了LDAP
    • 个人版API
    • 登录
    • 地址簿
    • 群组
    • 授权登录
    • i18n
  • Web Admin
    • 用户管理
    • 设备管理
    • 地址簿管理
    • 标签管理
    • 群组管理
    • Oauth 管理
    • 配置LDAP, 配置文件或者环境变量
    • 登录日志
    • 链接日志
    • 文件传输日志
    • 快速使用web client
    • i18n
    • 通过 web client 分享给游客
    • server控制
  • Web Client
    • 自动获取API server
    • 自动获取ID服务器和KEY
    • 自动获取地址簿
    • 游客通过临时分享链接直接远程到设备
    • v2 Preview
  • CLI
    • 重置管理员密码

二、rustdesk本地部署和远程端口映射

0、整体思路

本地搭建rustdesk,然后将本地rustdesk端口映射到公网服务器,实现通过域名远程访问rustdesk,解决rustdesk只能在局域网访问问题。

搭建前提条件,需要熟悉一下技术或具备以下资源:

frp
docker compose
iptables,用于配置ip白名单
公网服务器
绑定公网ip的域名

1、rustdesk本地docker compose部署

开源项目地址:https://github.com/lejianwen/rustdesk-api?tab=readme-ov-file

因为需要使用将rustdesk本地端口映射到公网,通过域名进行访问,因此需要配置自己的域名和端口,配置时候注意看清楚

networks:
rustdesk-net:
external: false
services:
rustdesk:
ports:
21114:21114
21115:21115
21116:21116
21116:21116/udp
21117:21117
21118:21118
21119:21119
image: lejianwen/rustdeskservers6:latest
environment:
RELAY=反代21117的域名:端口
ENCRYPTED_ONLY=1
MUST_LOGIN=N # 是否必须登录才能远程
TZ=Asia/Shanghai
RUSTDESK_API_RUSTDESK_ID_SERVER=反代21116的域名:端口
RUSTDESK_API_RUSTDESK_RELAY_SERVER=反代21117的域名:端口
RUSTDESK_API_RUSTDESK_API_SERVER=反代21114的域名:端口
RUSTDESK_API_RUSTDESK_WS_HOST=反代21114的域名:端口
RUSTDESK_API_KEY_FILE=/data/id_ed25519.pub
RUSTDESK_API_JWT_KEY= # jwt 为空不启用
RUSTDESK_API_JWT_EXPIRE_DURATION= # jwt 为空不启用
volumes:
./data/rustdesk/server:/data
./data/rustdesk/api:/app/data #将数据库挂载
networks:
rustdesknet
restart: unlessstopped

本地实际docker-compose.yml配置:

networks:
rustdesk-net:
driver: bridge
services:
rustdesk:
image: lejianwen/rustdesk-server-s6:latest
ports:
– "23114:21114"
– "23115:21115"
– "23116:21116"
– "23116:21116/udp"
– "23117:21117"
– "23118:21118"
– "23119:21119"
environment:
– RELAY=https://域名或ip地址:27142
– ENCRYPTED_ONLY=1
– MUST_LOGIN=N
– TZ=Asia/Shanghai
– RUSTDESK_API_RUSTDESK_ID_SERVER=https://域名或ip地址:27141
– RUSTDESK_API_RUSTDESK_RELAY_SERVER=https://域名或ip地址:27142
– RUSTDESK_API_RUSTDESK_API_SERVER=https://域名或ip地址:27140
– RUSTDESK_API_RUSTDESK_WS_HOST=https://域名或ip地址:27140
– RUSTDESK_API_KEY_FILE=/data/id_ed25519.pub
– RUSTDESK_API_JWT_KEY= # jwt 为空不启用
– RUSTDESK_API_JWT_EXPIRE_DURATION= # jwt 为空不启用
volumes:
– ./data:/data
– ./data:/app/data
networks:
– rustdesk-net
restart: unless-stopped

启动容器:

docker compose up

**password:**注意看管理员密码,后面要用:

image-20250913235154675

**key:**此外注意看日志中的key,后面也要用到。key也可以在data/id_ed25519.pub中查看

2、frp端口映射到公网

注意frps.ini配置中一定要配置bind_udp_port的端口,我在这里浪费了很长时间。刚开始frpc.ini中虽然配置了21116端口的tcp和udp映射,但是没配置bind_udp_port,在访问时网络死活不通,最后排查出来需要配置这个参数

image-20250913235532135

客户端frpc.ini中需配置rustdesk21114、21116、211117、21118端口的映射,由于我使用docker启动时端口映射关系为:

– "23114:21114"
– "23115:21115"
– "23116:21116"
– "23116:21116/udp"
– "23117:21117"
– "23118:21118"
– "23119:21119"

因此,我需要将23114/23116/23117/23118j端口进行映射,同时23116端口要进行tcp和udp映射

image-20250914000036389

上面所提到的端口公网服务器的防火墙都要开通(有几个墙开几个墙,比如云服务器服务商提供的安全组策略,以及服务器主机上的防火墙策略),尤其不能忘了udp端口也要开通

完成上面设置之后,已经将本地rustdesk映射到公网,可以正常访问rustdesk服务了。

3、安全加固

将本地端口直接开放到公网存在安全隐患,因此可以使用iptables设置特定地域或ip白名单访问,在此不再细述。

建议:先做好安全加固再在公网使用,否则只建议局域网使用,数据安全不可掉以轻心

三、win、linux、安卓、ios客户端安装与使用

1.平台访问

(1)登陆管理后台,修改admin密码

访问rustdesk本地服务的http://ip:21114(或http://域名:27140)访问管理后台。用户名admin,密码为上面rustdesk启动时日志中的密码,登陆之后可以修改下密码

image-20250913235249058

(2)创建用户

登陆admin账户之后,在系统-用户管理中创建用户,然后重置密码。然后使用http://ip:21114(或http://域名:27140)登陆管理后台,可以查看自己账户的配置。

image-20250914001516872

2.客户端安装

win、linux、安卓的客户端下载地址为:https://github.com/rustdesk/rustdesk/releases

image-20250914001943145

以win系统为例,安装客户端启动后需要安装服务:

image-20250914002019232

开始设置:

image-20250914002128146

根据自己的上面的实际映射端口进行配置,key为rustdesk启动时日志中显示的key

如果局域网则配置为:

ID服务器:ip:21116

中继服务器:ip:21117

API服务器:http://ip:21114

key:日志中的key

公网配置如下图:

image-20250914004056670

配置之后,如下图为正常状态:

image-20250914005039780

最佳配置:

客户端中用户登陆:登陆刚才创建的用户名、密码。可以将本地机器添加到地址簿中,这样登陆同一个账户的客户端之间就可以相互访问了

3.安卓手机安装

由于rustdesk被诈骗分子使用过,安卓手机再https://github.com/rustdesk/rustdesk/releases下载之后无法直接安装,安卓时候需要断开网络。经测试,在安卓手机上面超级好用

4.ubuntu安装

安装时遇到如下问题:

image-20250914012434746

解决办法:

sudo apt –fix-broken install

sudo apt update sudo apt install libxdo3 libva2 libva-drm2 libva-x11-2 gstreamer1.0-pipewire

四、联系我

本人算法工程师,专注于人工智能技术研究和项目落地,目前主要聚焦大语言模型、多模态模型、检索增强、智能话术等领域研究。欢迎交流学习,欢迎商务合作,微信号littlesnail_slf。如需远程协助部署,请联系我

image-20250910155226715

五、其他相关

  • WeKnora(腾讯开源知识库)本地快速搭建&配置
  • littlesnail_slf**。如需远程协助部署,请联系我

    image-20250910155226715

    五、其他相关

  • WeKnora(腾讯开源知识库)本地快速搭建&配置
  • 赞(0)
    未经允许不得转载:171主机测评 » rustdesk部署和使用,完成frp公网端口映射,实现win、linux、安卓、ios客户端安装
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址