前言

最近不知怎么,经常需要帮朋友远程,远程工具一般都是用向日葵,不过似乎现在需要登陆才能使用。

【好玩儿的Docker项目】开箱即用!TeamViewer、向日葵的替代品,20分钟自建一个开源远程桌面服务——RustDesk

总感觉不是很爽。

今天就来推荐一款向日葵的开源替代品——Rust desk

【好玩儿的Docker项目】开箱即用!TeamViewer、向日葵的替代品,20分钟自建一个开源远程桌面服务——RustDesk

1. 介绍

一个非常好用的远程桌面软件。

【好玩儿的Docker项目】开箱即用!TeamViewer、向日葵的替代品,20分钟自建一个开源远程桌面服务——RustDesk

1.1 特点

主机测评这边简单在网上搜集了一些特点,供大家参考:

  • 用Rust编写

  • 开箱即用,不需要复杂的配置

  • 你可以完全控制你的数据,而不用担心安全问题

  • 你可以使用官方的rendezvous/relay服务器,也可以建立你自己的rendezvous/relay服务器。

当然我们今天就是和大家分享一下如何搭建。

2. 项目展示

GitHub原项目地址(感谢作者的付出):https://github.com/rustdesk/rustdesk(23.2k star)

Docker镜像地址:https://hub.docker.com/r/rustdesk/rustdesk-server/tags

官网地址:https://rustdesk.com

文档地址:https://rustdesk.com/docs/zh-cn/self-host/

直接丢几个图片:

【好玩儿的Docker项目】开箱即用!TeamViewer、向日葵的替代品,20分钟自建一个开源远程桌面服务——RustDesk

3. 搭建环境

服务器要求:

硬件要求很低,最低配置的云服务器就可以了,CPU和内存要求都是最小的。关于网络大小,如果TCP打洞直连失败,就要耗费中继流量,一个中继连接的流量在30k-3M每秒之间(1920×1080屏幕),取决于清晰度设置和画面变化。如果只是办公需求,平均在100K/s。

4. 搭建视频

YouTube:https://youtu.be/xQ19DLW4kok

哔哩哔哩【高清版本可以点击去吐槽到B站观看】:

5. 搭建方式

5.1 搭建

服务器初始设置,参考

新买了一台服务器“必须”要做的6件小事

【Docker系列】不用宝塔面板,小白一样可以玩转VPS服务器!

注意:VPS的内存如果过小,建议设置一下SWAP,一般为内存的1-1.5倍即可,可以让系统运行更流畅!

设置SWAP可以用脚本:

wget -O box.sh https://raw.githubusercontent.com/BlueSkyXN/SKY-BOX/main/box.sh && chmod +x box.sh && clear && ./box.sh 

【好玩儿的Docker项目】开箱即用!TeamViewer、向日葵的替代品,20分钟自建一个开源远程桌面服务——RustDesk

选择18,然后输入你想要扩容的数值即可。

【好玩儿的Docker项目】开箱即用!TeamViewer、向日葵的替代品,20分钟自建一个开源远程桌面服务——RustDesk

sudo -i # 切换到root用户  apt update -y  # 升级packages  apt install wget curl sudo vim git  # Debian系统比较干净,安装常用的软件 

创建一下安装的目录:

mkdir -p /root/data/docker_data/rustdesk  cd /root/data/docker_data/rustdesk  nano docker-compose.yml 

docker-compose.yml填入以下内容:

version: '3'  networks:   rustdesk-net:     external: false  services:   hbbs:     container_name: hbbs     ports:       - 21115:21115       - 21116:21116       - 21116:21116/udp       - 21118:21118     image: rustdesk/rustdesk-server:latest     command: hbbs -r hbbs.example.com:21117   # hbbs.example.com改成     volumes:       - ./hbbs:/root     networks:       - rustdesk-net     depends_on:       - hbbr     restart: unless-stopped    hbbr:     container_name: hbbr     ports:       - 21117:21117       - 21119:21119     image: rustdesk/rustdesk-server:latest     command: hbbr     volumes:       - ./hbbr:/root     networks:       - rustdesk-net     restart: unless-stopped 

没问题的话,ctrl+x退出,按y保存,enter确认。

打开防火墙的端口2111521116211172111821119

默认情况下,hbbs 监听21115(tcp), 21116(tcp/udp), 21118(tcp),hbbr 监听21117(tcp), 21119(tcp)

务必在防火墙开启这几个端口, 请注意21116同时要开启TCPUDP

其中21115是hbbs用作NAT类型测试,21116/UDP是hbbs用作ID注册与心跳服务,21116/TCP是hbbs用作TCP打洞与连接服务,21117是hbbr用作中继服务, 2111821119是为了支持网页客户端。

如果您不需要网页客户端(21118,21119)支持,对应端口可以不开。

  • TCP(21115, 21116, 21117, 21118, 21119)
  • UDP(21116)

【好玩儿的Docker项目】开箱即用!TeamViewer、向日葵的替代品,20分钟自建一个开源远程桌面服务——RustDesk

【好玩儿的Docker项目】开箱即用!TeamViewer、向日葵的替代品,20分钟自建一个开源远程桌面服务——RustDesk

【好玩儿的Docker项目】开箱即用!TeamViewer、向日葵的替代品,20分钟自建一个开源远程桌面服务——RustDesk

【好玩儿的Docker项目】开箱即用!TeamViewer、向日葵的替代品,20分钟自建一个开源远程桌面服务——RustDesk

查看端口是否被占用(以21115为例),输入:

lsof -i:21115  #查看21115端口是否被占用,如果被占用,重新自定义一个端口 

如果出现:

-bash: lsof: command not found 

运行:

apt install lsof  #安装lsof 

如果端口没有被占用,我们接着可以运行:

cd /root/data/docker_data/rustdesk  docker-compose up -d   

注意:

1、不知道服务器IP,可以直接在命令行输入:curl ip.sb,会显示当前服务器的IP。

2、遇到访问不了的情况,请在宝塔面板的防火墙和服务商的后台防火墙里打开对应端口。

5.2 更新

cp -r /root/data/docker_data/rustdesk /root/data/docker_data/rustdesk.archive  # 万事先备份,以防万一  cd /root/data/docker_data/rustdesk  # 进入docker-compose所在的文件夹  docker-compose pull    # 拉取最新的镜像  docker-compose up -d   # 重新更新当前镜像 

利用Docker-compose搭建的应用,更新非常容易~

5.3 卸载

cd /root/data/docker_data/rustdesk  # 进入docker-compose所在的文件夹  docker-compose down    # 停止容器,此时不会删除映射到本地的数据  rm -rf /root/data/docker_data/rustdesk  # 完全删除映射到本地的数据 

6. 使用教程

6.1 安装和配置

见主机测评鸽的视频

点击 ID 右侧的菜单按钮如下,选择“ ID/中继服务器”。

【好玩儿的Docker项目】开箱即用!TeamViewer、向日葵的替代品,20分钟自建一个开源远程桌面服务——RustDesk

在 ID 服务器输入框中(被控端+主控端)输入 hbbs 主机或 ip 地址,另外两个地址可以不填,RustDesk会自动推导(如果没有特别设定),中继服务器指的是hbbr(21116)端口。

例如:

例如:

hbbs.example.com 

或者

hbbs.example.com:21116 

【好玩儿的Docker项目】开箱即用!TeamViewer、向日葵的替代品,20分钟自建一个开源远程桌面服务——RustDesk

【好玩儿的Docker项目】开箱即用!TeamViewer、向日葵的替代品,20分钟自建一个开源远程桌面服务——RustDesk

【好玩儿的Docker项目】开箱即用!TeamViewer、向日葵的替代品,20分钟自建一个开源远程桌面服务——RustDesk

【好玩儿的Docker项目】开箱即用!TeamViewer、向日葵的替代品,20分钟自建一个开源远程桌面服务——RustDesk

【好玩儿的Docker项目】开箱即用!TeamViewer、向日葵的替代品,20分钟自建一个开源远程桌面服务——RustDesk

6.1.1 功能展示

【好玩儿的Docker项目】开箱即用!TeamViewer、向日葵的替代品,20分钟自建一个开源远程桌面服务——RustDesk

【好玩儿的Docker项目】开箱即用!TeamViewer、向日葵的替代品,20分钟自建一个开源远程桌面服务——RustDesk

【好玩儿的Docker项目】开箱即用!TeamViewer、向日葵的替代品,20分钟自建一个开源远程桌面服务——RustDesk

6.1.2 传输文件

【好玩儿的Docker项目】开箱即用!TeamViewer、向日葵的替代品,20分钟自建一个开源远程桌面服务——RustDesk

【好玩儿的Docker项目】开箱即用!TeamViewer、向日葵的替代品,20分钟自建一个开源远程桌面服务——RustDesk

6.2 几个小问题

6.2.1 加密通话

默认是不加密的。我们可以通过设置Key,来加密通话。

以下来自官方文档

hbbs在第一次运行时,会自动产生一对加密私钥和公钥(分别位于运行目录下的id_ed25519id_ed25519.pub文件中),其主要用途是为了通讯加密。

【好玩儿的Docker项目】开箱即用!TeamViewer、向日葵的替代品,20分钟自建一个开源远程桌面服务——RustDesk

如果您在上一步骤中没有填写Key:(公钥文件id_ed25519.pub中的内容),不影响连接,但是连接无法加密。

cat /root/data/docker_data/rustdesk/hbbs/id_ed25519.pub 

【好玩儿的Docker项目】开箱即用!TeamViewer、向日葵的替代品,20分钟自建一个开源远程桌面服务——RustDesk

如果您禁止没有key的用户建立非加密连接,请在运行hbbs和hbbr的时候添加-k _ 参数,例如:

version: '3'  networks:   rustdesk-net:     external: false  services:   hbbs:     container_name: hbbs     ports:       - 21115:21115       - 21116:21116       - 21116:21116/udp       - 21118:21118     image: rustdesk/rustdesk-server:latest     command: hbbs -r hbbs.example.com:21117 -k _     # 加上-k _      volumes:       - ./hbbs:/root     networks:       - rustdesk-net     depends_on:       - hbbr     restart: unless-stopped    hbbr:     container_name: hbbr     ports:       - 21117:21117       - 21119:21119     image: rustdesk/rustdesk-server:latest     command: hbbr -k _ # 加上-k _      volumes:       - ./hbbr:/root     networks:       - rustdesk-net     restart: unless-stopped 

实测加上-k _参数后,会导致无法连接,不确定是不是BUG,有解决的小伙伴欢迎在评论区留言交流!

如果要更改key,请删除 id_ed25519id_ed25519.pub 文件并重新启动 hbbs/hbbr,hbbs将会产生新的密钥对。

6.2.2 把配置放在可执行文件名里 (Windows only)

rustdesk.exe 修改为 rustdesk-host=<host-ip-or-name>,key=<public-key-string>.exe, 例如: rustdesk-host=192.168.1.137,key=xfdsfsd32=32.exe,你可以在About窗口看到配置结果,如下图所示。

hostkey 都需要添加,缺少一个就不好使。

如果密钥中有无效字符而不能用于文件名,请删除id_ed25519文件并重新启动hbbs/hbbr,id_ed25519.pub文件将被重新生成,请重复操作直到获得有效字符。

Menu About Page
【好玩儿的Docker项目】开箱即用!TeamViewer、向日葵的替代品,20分钟自建一个开源远程桌面服务——RustDesk 【好玩儿的Docker项目】开箱即用!TeamViewer、向日葵的替代品,20分钟自建一个开源远程桌面服务——RustDesk

7. 结尾

祝大家用得开心,有问题可以去GitHub提Issues,也可以在评论区互相交流探讨。

同时,有能力给项目做贡献的同学,也欢迎积极加入到项目中来,贡献自己的一份力量!

8. 参考资料

https://github.com/rustdesk/rustdesk-server