Windows 远程桌面连接 macOS 开源解决方案 RustDesk
以前买了台 2020 款 “拯救者 R7000” 作为工作机器,电源适配器加上台笔记本天天背着回家,地铁人又多又挤电脑包很重心累,后来为了降低背负重量,又新买了电源适配器放家里,每天回家少背块砖头瞬间减负。最近又在家里添了台 Mac mini 当 Home Studio,二十四小时不关机,有时候工作也需要用 Windows 远程桌面连上家里的 Mac,看了看向日葵,连接能成功但是在登录页面上卡成幻灯片,都没法登录,估摸着 FPS 只有几帧。只好找找开源解决方案,目前在公网服务器上搭建 RustDesk,可以解决这个问题,下面看看怎么搭建这个服务。
RustDesk 搭建也比较简单,只需要运行 hbbs 和 hbbr 这两个程序即可,一般安装有两种方法,一个是 Docker 运行,另一种是手动下载包安装,这里图方便我就照着官方文档 Docker 开始配置运行。
服务端搭建
我这边服务器配置比较低,CPU 是 2 Core,内存 2Gb,网络 4M
1.服务器网络策略开放 hbbs 和 hbbr 需要用到的端口
hbbs:
- 21115 (TCP):用于 NAT 类型测试。
- 21116 (TCP/UDP):请注意,21116 应该同时启用 TCP 和 UDP。21116/UDP 用于 ID 注册和心跳服务。21116/TCP 用于 TCP 打洞和连接服务。
hbbr:
- 21117 (TCP):用于中继服务。
3.Docker pull 镜像
sudo docker image pull rustdesk/rustdesk-server
如果你没法下载可能是因为网络的问题,目前 Docker 镜像在中国被 GFW 封禁,需要搜搜 Docker 镜像源,我目前用的是 t.me/dockerpull 提供的镜像。
4.运行 hbbs 和 hbbr
这条命令会运行这两个服务,并在当前目录下创建 ./data,里面存放客户端自定义服务器的连接密钥。
sudo docker run --name hbbs -v ./data:/root -td --net=host --restart unless-stopped rustdesk/rustdesk-server hbbs
sudo docker run --name hbbr -v ./data:/root -td --net=host --restart unless-stopped rustdesk/rustdesk-server hbbr
5.记好当前服务器的 IP 和 Key
通过本地文件查看 Key
ubuntu@blog:~$ cat data/id_ed25519.pub
pyBp6F1xxxeowwcBoCOTml8=
或者查看 hbbs 启动日志。
pyBp6F17BjGXhRmsudo docker logs hbbs | grep Key:
[2024-12-31 02:28:34.451794 +00:00] INFO [src/rendezvous_server.rs:1205] Key: pyBp6F1xxxeowwcBoCOTml8=
客户端搭建
1.被控端设置
在网络设置里添加ID/中级服务器信息,由于都是默认端口,所以就在 ID 服务器填写服务器 IP(除非你改了默认端口,否则不需要具体填写端口),最后把前面获取到的 Key 填入 Key 输入框。
后面的 API 服务器是要花钱才能用的,不需要填写,中继服务器由于是同一台机器不写的话会自动使用 ID 服务器的地址。
配置完成启动服务就可以连接上自建服务器。
2.客户端设置
只和前面一样需要填写自建服务器的 IP 和 Key,后面就直接输入被控端 ID 连接即可。
可以打开画质统计信息,看看当前连接的速率画面帧率咋样。默认的配置一般 30 帧,对于实时显示的工作不太行。因为不是长期使用,为了保持流畅度,我这里自定义画质,码率 10%,帧率 65,画面大概是 50 来帧,还算凑合,客户端网络不好时延时卡顿还是比较明显的。
服务端版本更新
可以通过 https://github.com/rustdesk/rustdesk-server 查看服务端最新的版本号,这里我查询到新版是 1.1.14。
原来默认的是 latest 不知道镜像具体版本号,这里查询 rustdesk/rustdesk-server 镜像版本号。
ubuntu@blog:~$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
rustdesk/rustdesk-server latest e0892e67d5a7 4 months ago 23.5MB
ubuntu@blog:~$ sudo docker image inspect rustdesk/rustdesk-server:latest | grep -i version
"DockerVersion": "",
"org.opencontainers.image.version": "1.1.12"
确定版本号后,查询以前容器存放数据的路径,做好备份防止意外丢失。
ubuntu@blog:~$ sudo docker inspect hbbr hbbs | grep \"Source\":
"Source": "/home/ubuntu/data",
"Source": "/home/ubuntu/data",
ubuntu@blog:~$ cp -r /home/ubuntu/data rustDeskData
拉取新镜像,可以选择指定版本号或者不佳版本号默认选择 latest 最新版,这里建议使用指定版本号的方式,方便以后更新时知道版本是什么。
ubuntu@blog:~$ sudo docker image pull rustdesk/rustdesk-server
Using default tag: 1.1.14
latest: Pulling from rustdesk/rustdesk-server
9e455e83a929: Pull complete
cf1dc9594c7d: Pull complete
4f3b5a2b0508: Pull complete
Digest: sha256:680f8ba5accafc264d15076f33a6fdb9cb6f4d963a0fc92e01023ca0e919cc83
Status: Downloaded newer image for rustdesk/rustdesk-server:latest
docker.io/rustdesk/rustdesk-server:1.1.14
ubuntu@blog:~$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
rustdesk/rustdesk-server 1.1.14 9227b43758be 3 weeks ago 12.8MB
rustdesk/rustdesk-server latest e0892e67d5a7 4 months ago 23.5MB
查看有哪些容器,手动停止这两个容器。
ubuntu@blog:~$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
af8b798714fc rustdesk/rustdesk-server "hbbr" 6 weeks ago Up 6 weeks hbbr
adb5e91d9118 rustdesk/rustdesk-server "hbbs" 6 weeks ago Up 6 weeks hbbs
ubuntu@blog:~$ sudo docker stop af8b798714fc adb5e91d9118
af8b798714fc
adb5e91d9118
ubuntu@blog:~$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
删除老容器。这里删除不会删除到以前容器 -v 挂载的数据。
ubuntu@blog:~$ sudo docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
af8b798714fc e0892e67d5a7 "hbbr" 6 weeks ago Exited (0) 15 minutes ago hbbr
adb5e91d9118 e0892e67d5a7 "hbbs" 6 weeks ago Exited (0) 14 minutes ago hbbs
ubuntu@blog:~$ sudo docker rm hbbr hbbs
hbbr
hbbs
ubuntu@blog:~$ sudo docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
删除老镜像。
sudo docker rmi 9227b43758be e0892e67d5a7
通过 ustdesk/rustdesk-server:1.1.14 镜像创建新容器,通过 -v 来指定老数据,其中 -k 是手动指定了以前生成的老 Key,不然默认生成新 Key(通过 docker logs 可以查看)。
sudo docker run --name hbbs -v /home/ubuntu/rustDeskData -td --net=host --restart unless-stopped rustdesk/rustdesk-server:1.1.14 hbbs -k pyBp6F1xxxeowwcBoCOTml8=
sudo docker run --name hbbr -v /home/ubuntu/rustDeskData -td --net=host --restart unless-stopped rustdesk/rustdesk-server:1.1.14 hbbr -k pyBp6F1xxxeowwcBoCOTml8=
到这里手动更新服务端版本所有操作就做完了,这样操作仍然很麻烦,后续有时间会写个 Shell 脚本完成自动化更新操作。
最近更新:
发布时间: