Skip to content

阿里云服务器使用docker部署rustdesk中继服务器

一 rustdesk 是什么

RustDesk 是一个开源的远程桌面软件,旨在提供简单、安全、快速的远程访问和控制功能。它被设计为一个自托管解决方案,允许用户在自己的服务器上运行,以完全掌控数据和连接安全

二 为什么要使用

当然是因为开源、免费了,正好如果我们有自己的阿里云服务器,那么就可以很好的体验远程操作了, 比什么todesk 、向日葵、teamviewer 好用到不知道哪里去了。

三 hbbs和hbbr分别是什么

在 RustDesk 的服务器组件中,hbbshbbr 是两个关键的服务,它们分别扮演着不同的角色。以下是它们的定义和用途:

hbbs(RustDesk ID Server)

  • 全称hbbs 是 RustDesk 的 ID 服务器(ID Server)。
  • 功能hbbs 负责管理和分配客户端的唯一 ID,处理客户端注册,并维护客户端的连接信息。它是客户端和主机在连接时用来定位和建立连接的关键组件。
  • 用途:当客户端启动时,它会向 hbbs 注册并获取一个唯一的 ID。这个 ID 被用于在客户端和主机之间建立连接。

hbbr(RustDesk Relay Server)

  • 全称hbbr 是 RustDesk 的中继服务器(Relay Server)。
  • 功能hbbr 负责在客户端和主机之间进行数据中继。它在直接连接(点对点连接)由于网络限制(如防火墙或 NAT)无法建立时,作为中间服务器转发数据流量。
  • 用途:当客户端和主机无法直接连接时,它们会通过 hbbr 中继服务器进行通信,以确保数据流的顺利传输。

四 安装前准备

1 阿里云安装docker

众所周知,由于不可抗力因素,最近无法通过docker官方提供的安装方式进行docker的安装,所以这里提供下如何快捷的在阿里云安装docker。

在阿里云服务器官网上,进入详情页面,然后按下图进入,点击安装扩展后,搜索docker,安装即可,一会就好了。

img

2 在docker中导入导出image镜像

由于docker不可访问(呵呵mmp),所以rustdesk/rustdesk-server镜像无法拉去下来。 由于在阿里云服务器,所以代理操作不好实现(主要是安全问题 不想冒险),这时候我们通过在本地的虚拟机中把docker中的镜像导出出来,然后上传到阿里云服务器。 注意:docker 无法通过export http_proxy操作实现代理,具体如何实现,请参考我的博客
送佛送到西,我给大家提供了我已经导出好的rustdesk的镜像,直接上传后导入即可。点击下载

导出镜像

shell
docker save -o my_image.tar my_image:latest

这里,-o my_image.tar 指定了输出文件名,my_image:latest 是您要导出的镜像名称和标签。

导入镜像

shell
docker load -i my_image.tar

五 配置和使用

1. 部署 hbbs(ID Server)

建议:在用户目录新建一个rustdesk文件夹,然后在rustdesk文件夹下执行此命令,因为执行完后会在当前文件夹下生成一个data文件,方便后期查看管理

您可以使用 Docker 部署 RustDesk ID 服务器并指定端口。以下是一个示例命令:

bash
sudo docker run --name hbbs \
    -v ./data:/root  \
    -td  \
    --net=host  \ 
    --restart unless-stopped rustdesk/rustdesk-server hbbs \
    -r <relay-server-ip[:port]>

参数解释:

  • 注意 -r <relay-server-ip[:port]> 这个参数是指定中继服务器的ip地址和端口,如果都在本机安装,那么可以删除此项
  • td,安装后显示密钥,如果不显示可以通过docker logs hbbs查看
  • --net=host 这个是docker自己的参数,代表使用主机的网络。如果安装后有问题无法使用,可以去掉这个参数,然后通过-p 主机端口:容器内端口 来映射
  • -v 磁盘文件映射 主机文件: docker容器

2. 部署 hbbr(Relay Server)

同样,您可以使用 Docker 部署 RustDesk 中继服务器:

bash
sudo docker run --name hbbr \
    -v ./data:/root \
    -td \
    --net=host \
    --restart unless-stopped rustdesk/rustdesk-server hbbr

参数

  • --net=host 这个是docker自己的参数,代表使用主机的网络。如果安装后有问题无法使用,可以去掉这个参数,然后通过-p 主机端口:容器内端口 来映射

3 密钥查看

通过docker logs hbbs查看密钥

shell
root@iZuf6jan0ceb3gi12hemq4Z:~/rustdesk# docker logs hbbs
[2024-07-03 06:19:01.806999 +00:00] INFO [src/common.rs:148] Private/public key written to id_ed25519/id_ed25519.pub
[2024-07-03 06:19:01.810571 +00:00] INFO [src/rendezvous_server.rs:1191] Key: HYreFIuRLxIuN6AHsXBFwWn2VEwqPz8h81KLsdSWKQ=
[2024-07-03 06:19:01.810599 +00:00] INFO [src/peer.rs:84] DB_URL=./db_v2.sqlite3
[2024-07-03 06:19:01.842340 +00:00] INFO [src/rendezvous_server.rs:99] serial=0
[2024-07-03 06:19:01.842359 +00:00] INFO [src/common.rs:46] rendezvous-servers=[]
[2024-07-03 06:19:01.842364 +00:00] INFO [src/rendezvous_server.rs:101] Listening on tcp/udp :21116
[2024-07-03 06:19:01.842367 +00:00] INFO [src/rendezvous_server.rs:102] Listening on tcp :21115, extra port for NAT test
[2024-07-03 06:19:01.842370 +00:00] INFO [src/rendezvous_server.rs:103] Listening on websocket :21118
[2024-07-03 06:19:01.842403 +00:00] INFO [libs/hbb_common/src/udp.rs:35] Receive buf size of udp [::]:21116: Ok(212992)
[2024-07-03 06:19:01.842451 +00:00] INFO [src/rendezvous_server.rs:138] mask: None
[2024-07-03 06:19:01.842454 +00:00] INFO [src/rendezvous_server.rs:139] local-ip: ""
[2024-07-03 06:19:01.842459 +00:00] INFO [src/common.rs:46] relay-servers=[]
[2024-07-03 06:19:01.842501 +00:00] INFO [src/rendezvous_server.rs:153] ALWAYS_USE_RELAY=N
[2024-07-03 06:19:01.842528 +00:00] INFO [src/rendezvous_server.rs:185] Start
[2024-07-03 06:19:01.842676 +00:00] INFO [libs/hbb_common/src/udp.rs:35] Receive buf size of udp [::]:0: Ok(212992)

密钥是这一行

[2024-07-03 06:19:01.810571 +00:00] INFO [src/rendezvous_server.rs:1191] Key: HYreFIuRLxIuN6AHsXBFwWn2VEwqPz8h81KLsdSWKQ=

key: 后面的才是密钥。需要一会在客户端配置

4 默认端口

我们一般只使用21116(id服务器端口)、21117(中继服务器端口)就可以了。 确保端口在防火墙中打开了,21116需要UDP/TCP、21117需要TCP

**hbbs*监听的端口

  • 21114(TCP,用于网络控制台,只有 Pro 版本可用)
  • 21115(TCP)
  • 21116(TCP/UDP)
  • 和21118(TCP)

hbbr监听的端口

  • 21117(TCP)
  • 21119(TCP)

端口的作用

  • 21115用于 NAT 类型测试
  • 21116/UDP 用于 ID 注册和心跳服务
  • 21116/TCP 用于 TCP打洞和连接服务
  • 21117用于中继服务
  • 21118和21119用于支持 web 客户端 如果不需要 Web 客户端(21118,21119)支持,可以禁用相应的端口。

5 客户端配置

配置位置:在设置>网络下配置

一图胜千言

img

总结

  • hbbs 是 ID 服务器,用于管理客户端 ID 和连接信息。
  • hbbr 是中继服务器,用于在客户端和主机无法直接连接时进行数据中继。

通过理解这两个组件的功能和用途,您可以更好地配置和部署 RustDesk 服务器,以满足不同的网络环境和需求。

参考文章:

https://rustdesk.com/docs/en/self-host/rustdesk-server-oss/docker/

https://chatgpt.com/

最后更新于: