RustDesk远程桌面工具自建服务器教程
同心抗疫,共度时艰。
简介
RustDesk,工具如其名,基于高效的Rust语言构建的开源远程桌面工具。
优势:
(1)轻量:不论服务端还是客户端、不论哪个平台,软件小巧、功能完备。
(2)全平台支持:支持Android、Linux、Windows任意双向控制,iOS单向控制。
(3)安全可控:软件开源,服务端自建,通信加密。
(4)带宽高效:仅需2-3M即可流畅1080P,支持TCP打洞端对端P2P连接。
RustDesk官网:https://rustdesk.com/zh/
GitHub:https://github.com/rustdesk/rustdesk
运行原理
RustDesk自建服务器运行原理
自建服务器
免费的公共服务器非常卡,在国内也许网速会很慢或者无法访问。
RustDesk的优势在于可以使用自己的服务器,推荐使用国内主流云产品厂商,个人使用的腾讯云搭建服务器,价格不贵可以接受,相比于远程流畅度来说物超所值,且服务器唯自己所有,不用担心第三方远控软件造成的信息安全问题。
这里总结了腾讯云的最新优惠产品(含有推广链接,可自行去推广):腾讯云云产品特惠专区
如果有兴趣和能力也可以自己搭建物理服务器,或者使用内网穿透在自己电脑上搭建服务器,这里不再赘述。
服务器要求
硬件要求很低,最低配置的云服务器就可以了,CPU和内存要求都是最小的。
关于网络大小,如果控制端和被控端位于同一网段下时,不需要通过 relay server 中转,直接建立内网链接。
如果TCP打洞直连失败,就要耗费中继流量,一个中继连接的流量在30k-3M每秒之间(1920x1080屏幕),取决于清晰度设置和画面变化。如果只是办公需求,平均在100K/s。
非直连情况下,播放全屏视频(1920x1080屏幕)实测近两分钟,带宽平均占用1.3Mbps左右。
Docker部署
在Docker部署和常规部署之间选择一个即可。
Linux/amd64
sudo docker image pull rustdesk/rustdesk-server
sudo docker run --name hbbs -p 21115:21115 -p 21116:21116 -p 21116:21116/udp -p 21118:21118 -v `pwd`:/root -td --net=host rustdesk/rustdesk-server hbbs -r <relay-server-ip[:port]>
sudo docker run --name hbbr -p 21117:21117 -p 21119:21119 -v `pwd`:/root -td --net=host rustdesk/rustdesk-server hbbr
Linux/arm64v8
sudo docker image pull rustdesk/rustdesk-server:latest-arm64v8
sudo docker run --name hbbs -p 21115:21115 -p 21116:21116 -p 21116:21116/udp -p 21118:21118 -v `pwd`:/root -td --net=host rustdesk/rustdesk-server:latest-arm64v8 hbbs -r <relay-server-ip[:port]>
sudo docker run --name hbbr -p 21117:21117 -p 21119:21119 -v `pwd`:/root -td --net=host rustdesk/rustdesk-server:latest-arm64v8 hbbr
据我所知,–net=host 仅适用于 Linux,它让 hbbs/hbbr 可以看到对方真实的ip, 而不是固定的容器ip (172.17.0.1)。 如果–net=host运行正常,-p选项就不起作用了, 可以去掉。
请去掉 –net=host,如果您在非Linux系统上遇到无法连接的问题
常规部署
直接运行
This content is only supported in a ThunderSoft Docs
在服务器上运行 hbbs/hbbr (Centos 或 Ubuntu)。
./hbbs -r <hbbr运行所在主机的地址[:port]>
./hbbr
默认情况下,hbbs 监听21115(tcp), 21116(tcp/udp), 21118(tcp),hbbr 监听21117(tcp), 21119(tcp)。务必在防火墙开启这几个端口, 请注意21116同时要开启TCP和UDP。其中21115是hbbs用作NAT类型测试,21116/UDP是hbbs用作ID注册与心跳服务,21116/TCP是hbbs用作TCP打洞与连接服务,21117是hbbr用作中继服务, 21118和21119是为了支持网页客户端。如果您不需要网页客户端(21118,21119)支持,对应端口可以不开。
- TCP(21115, 21116, 21117, 21118, 21119)
- UDP(21116)
端口号 | 协议 | 程序 | 用途 | 锚点 |
---|---|---|---|---|
21115 | tcp | HBBS | NAT类型测试 | |
21116 | tcp/udp | HBBS | TCP 打洞与连接服务/UDP ID注册与心跳服务 | HBBS锚点 |
21117 | tcp | HBBR | 中继服务 | HBBR锚点 |
21118 | tcp | HBBS | WebSocket服务 | |
21119 | tcp | HBBR | WebSocket转发 |
如果你想选择自己的端口,使用 “-h” 选项查看帮助。
守护进程
至此我们的自建服务器已经运行起来了,至此服务器完全可以使用RustDesk,但你会发现当你退出了服务器远程连接,服务器就自动停掉了,所以我们还需要将自建服务器的进程守护起来。
在pm2和systemd之间选择一个即可,建议使用systemd。
使用 pm2
pm2 start hbbs -- -r <relay-server-ip[:port]>
pm2 start hbbr
pm2
需要 nodejs v16+,如果你运行 pm2 失败(例如在 pm2 list
中看不到 hbbs/hbbr),请从 https://nodejs.org 下载并安装 LTS 版本的 nodejs。 如果你想让 hbbs/hbbr 在重启后自动运行,请查看 pm2 save
和 pm2 startup
。 更多关于 pm2。另一个不错的日志工具是 pm2-logrotate。
hhbs的-r
参数不是必须的,他只是方便你不用在客户端指定中继服务器,如果是默认21117端口,可以不填port。客户端指定的中继服务器优先级高于这个。
使用 systemd
官方建议使用PM2守护进程,如果你的主机没有其它使用Node.js工具的需求,只需要使用systemd来管理服务即可!
HBBS
解压出来的hbbs文件先通过chmod +x hbbs
赋予可执行权限,先运行一次./hbbs
,生成用于客户端认证使用的公钥id_ed25519.pub
,随后用cat id_ed25519.pub
命令查看公钥并记下。然后通过喜欢的编辑器编辑/etc/systemd/system/hbbs.service
,将用于参考的以下配置根据需要进行修改并保存,这时也要将强制校验密钥以-k _
参数写入启动命令中。
# systemd配置路径
# /etc/systemd/system/hbbs.service
[Unit]
Description=Rust Desk Service
After=network.target
[Service]
Type=simple
User=root
Restart=on-failure
RestartSec=5s
#设置运行路径
WorkingDirectory=/*程序路径*/rustdesk
#可修改锚点端口,当前为21116(锚点)和21115(锚点-1)和21118(锚点+2)
#-r用于指定网卡IP(适用多网卡),-k参数用于强制校验客户端公钥,用于避免未授权的使用
ExecStart=/*程序路径*/rustdesk/hbbs -r 0.0.0.0 -p 21116 -k _
[Install]
WantedBy=multi-user.target
HBBR
解压出来的hbbr文件先通过chmod +x hbbr
赋予可执行权限,然后通过喜欢的编辑器编辑/etc/systemd/system/hbbr.service
,将用于参考的以下配置根据需要进行修改并保存,同样将密钥校验以-k _
参数写入启动命令中。
# systemd配置路径
# /etc/systemd/system/hbbr.service
[Unit]
Description=Rust Desk Service
After=network.target
[Service]
Type=simple
User=root
Restart=on-failure
RestartSec=5s
#设置运行路径
WorkingDirectory=/*程序路径*/rustdesk
#可修改锚点端口,当前为21117(锚点)和21119(锚点+2)
#-k参数用于强制校验客户端公钥,用于避免未授权的使用
ExecStart=/*程序路径*/rustdesk/hbbr -p 21117 -k _
[Install]
WantedBy=multi-user.target
service
设置好后,即可通过service hbbs start
和service hbbr start
来启动这两项服务,启动后可以通过service hbbs status
和service hbbr status
查看进程的运行状态,显示绿色的Active即无误。
一切准备就绪后即可通过systemctl enable hbbs
和systemctl enable hbbr
允许它们开机自启。
端口放行
在腾讯云服务器上,进入服务器详情->防火墙->添加规则,然后编辑相应端口和规则即可,不必关心以下指令。
如果恰好你有能力搭建了一台物理主机,则需要你手动设置防火墙规则,iptables
、firewalld
、ufw
的命令分别如下,其中的端口请按照你的设置的进行放行(默认21115-21117),这里需要注意hbbs锚点端口必须同时放行tcp和udp。
#CentOS firewalld
firewall-cmd --zone=public --add-port=21115/tcp --permanent
firewall-cmd --zone=public --add-port=21116/tcp --permanent
firewall-cmd --zone=public --add-port=21116/udp --permanent
firewall-cmd --zone=public --add-port=21117/tcp --permanent
#Debian/Ubuntu ufw
ufw allow 21115/tcp
ufw allow 21116/tcp
ufw allow 21116/udp
ufw allow 21117/tcp
#iptables
iptables -I INPUT 1 -p tcp --dport 21115 -j ACCEPT
iptables -I INPUT 1 -p tcp --dport 21116 -j ACCEPT
iptables -I INPUT 1 -p udp --dport 21116 -j ACCEPT
iptables -I INPUT 1 -p tcp --dport 21117 -j ACCEPT
iptables-save //保存(解决重启失效)
客户端连接
ID服务器填写你的服务器IP地址:21116
中继服务器填写你的服务器IP地址:21117
随后你只需要使用ID和密码即可使用自建服务器的RustDesk。
开机自启
在我们远程控制主机时,可能不得不完成重启的操作,远控软件不自启可不行,那么接下来我们一起来配置一下自启。
编辑文本文档 rustdesk.service
[Unit]
Description=RustDesk
Requires=network.target
After=systemd-user-sessions.service
[Service]
Type=simple
ExecStart=/usr/bin/rustdesk --service
PIDFile=/var/run/rustdesk.pid
KillMode=mixed
TimeoutStopSec=30
User=root
LimitNOFILE=100000
[Install]
WantedBy=multi-user.target
移动到 /usr/lib/systemd/system 文件夹下,执行:
sudo systemctl enable rustdesk
使用
systemctl status rustdesk
查看服务运行状态:
参考
- 【RustDesk】自建远程桌面服务替代TeamViewer/Todesk – Luminous' Home: https://luotianyi.vc/6542.html
- 安装 :: RustDesk文档: https://rustdesk.com/docs/zh-cn/self-host/install/
- Working principle · Issue #594 · rustdesk/rustdesk: https://github.com/rustdesk/rustdesk/issues/594#issuecomment-1138342668
- Systemd 入门教程:命令篇 - 阮一峰的网络日志: https://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-commands.html
- Systemd 入门教程:实战篇 - 阮一峰的网络日志: https://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-part-two.html
2025年10月新盘 做第一批吃螃蟹的人coinsrore.com
新车新盘 嘎嘎稳 嘎嘎靠谱coinsrore.com
新车首发,新的一年,只带想赚米的人coinsrore.com
新盘 上车集合 留下 我要发发 立马进裙coinsrore.com
做了几十年的项目 我总结了最好的一个盘(纯干货)coinsrore.com
新车上路,只带前10个人coinsrore.com
新盘首开 新盘首开 征召客户!!!coinsrore.com
新项目准备上线,寻找志同道合 的合作伙伴coinsrore.com
新车即将上线 真正的项目,期待你的参与coinsrore.com
新盘新项目,不再等待,现在就是最佳上车机会!coinsrore.com
新盘新盘 这个月刚上新盘 新车第一个吃螃蟹!coinsrore.com
2025年10月新盘 做第一批吃螃蟹的人
情感真挚自然,字里行间传递出强烈的感染力。
选材新颖独特,通过细节描写赋予主题鲜活生命力。
文章中的实用建议和操作指南,让读者受益匪浅,值得珍藏。
这是一篇佳作,无论是从内容、语言还是结构上,都堪称完美。
建议融入东方智慧,形成对话张力。
案例丰富且贴合主题,论证逻辑环环相扣。
你好,你好我的头发是。。。。。。
想想你的文章写的特别好
控制端和被控端的 rustdesk 都需要设置中继网络吧。你没写呢