转载自咕咕鸽
【好玩儿的Docker项目】开箱即用!TeamViewer、向日葵的替代品,20分钟自建一个开源远程桌面服务------RustDesk
2022-07-02 /40 评论 /18 点赞 /12,073 阅读 /2,198 字/推送成功!
07/02
温馨提示:
本文最后更新于 2022-07-03,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。
前言
最近不知怎么,经常需要帮朋友远程,远程工具一般都是用向日葵,不过似乎现在需要登陆才能使用。
总感觉不是很爽。
今天就来推荐一款向日葵的开源替代品------Rust desk
- 介绍
一个非常好用的远程桌面软件。
1.1 特点
咕咕这边简单在网上~抄~搜集了一些特点,供大家参考:
- 用Rust编写
- 开箱即用,不需要复杂的配置
- 你可以完全控制你的数据,而不用担心安全问题
- 你可以使用官方的rendezvous/relay服务器,也可以建立你自己的rendezvous/relay服务器。
当然我们今天就是和大家分享一下如何搭建。
- 项目展示
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/
直接丢几个图片:
- 搭建环境
- 服务器:~腾讯香港轻量应用服务器24元/月VPS一台~展示用的服务器是Netcup特价款,本期搭建用的是斯巴达的服务器,(最好是选 非大陆的服务器 )(腾讯轻量购买链接)Hetzner注册免费得25欧试用金有效期一个月
- 系统:Debian 10(DD脚本 非必需DD用原来的系统也OK)
- 安装好Docker、Docker-compose(相关脚本)
- ~【非必需】域名一枚,并做好解析到服务器上(域名购买、域名解析 视频教程)~
- ~【非必需】提前安装好宝塔面板海外版本aapanel,并安装好Nginx(安装地址)~
- ~【非必需】安装好Nginx Proxy Manager(相关教程)~
服务器要求:
硬件要求很低,最低配置的云服务器就可以了,CPU和内存要求都是最小的。关于网络大小,如果TCP打洞直连失败,就要耗费中继流量,一个中继连接的流量在30k-3M每秒之间(1920x1080屏幕),取决于清晰度设置和画面变化。如果只是办公需求,平均在100K/s。
- 搭建视频
YouTube:https://youtu.be/xQ19DLW4kok
哔哩哔哩【高清版本可以点击去吐槽到B站观看】:
- 搭建方式
5.1 搭建
服务器初始设置,参考
【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
选择 18
,然后输入你想要扩容的数值即可。
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
确认。
打开防火墙的端口 21115
、21116
、21117
、21118
、21119
默认情况下,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
为例),输入:
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.1 安装和配置
见咕咕鸽的视频
点击 ID 右侧的菜单按钮如下,选择" ID/中继服务器"。
在 ID 服务器输入框中(被控端+主控端)输入 hbbs 主机或 ip 地址,另外两个地址可以不填,RustDesk会自动推导(如果没有特别设定),中继服务器指的是hbbr(21116)端口。
例如:
例如:
hbbs.example.com
或者
hbbs.example.com:21116
6.1.1 功能展示
6.1.2 传输文件
6.2 几个小问题
6.2.1 加密通话
默认是不加密的。我们可以通过设置Key,来加密通话。
以下来自官方文档:
hbbs在第一次运行时,会自动产生一对加密私钥和公钥(分别位于运行目录下的 id_ed25519
和 id_ed25519.pub
文件中),其主要用途是为了通讯加密。
如果您在上一步骤中没有填写 Key:
(公钥文件 id_ed25519.pub
中的内容),不影响连接,但是连接无法加密。
cat /root/data/docker_data/rustdesk/hbbs/id_ed25519.pub
如果您禁止没有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_ed25519
和 id_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窗口看到配置结果,如下图所示。
host
和 key
都需要添加,缺少一个就不好使。
如果密钥中有无效字符而不能用于文件名,请删除
id_ed25519
文件并重新启动hbbs/hbbr,id_ed25519.pub
文件将被重新生成,请重复操作直到获得有效字符。
| Menu | About Page | | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | | | |
- 结尾
祝大家用得开心,有问题可以去GitHub提Issues,也可以在评论区互相交流探讨。
同时,有能力给项目做贡献的同学,也欢迎积极加入到项目中来,贡献自己的一份力量!
- 参考资料