RustDesk中继服务器Docker部署(以portainer设置为例)

一,RustDesk

1,主要介绍

RustDesk是一款强大的开源远程桌面软件,由中国开发者使用Rust语言开发。

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

Github项目地址为:

它可以作为TeamViewer、ToDesk等商业软件的免费替代方案。

2,核心组件

(1)hbbs(ID注册服务器):负责分配和注册ID

监听以下端口

  • 21115(TCP):用于NAT类型测试
  • 21116(TCP/UDP):用于ID注册、心跳服务和TCP打洞
  • 21118(TCP):支持WebSocket协议的网页客户端

(2)hbbr(中继服务器):主要负责远程访问中继,在直连失败时发挥作用

监听以下端口

  • 21117(TCP):用于中继服务
  • 21119(TCP):支持WebSocket协议

3,使用方式

(1)官方服务器

无需配置即可使用,但由于安全原因,RustDesk已暂停中国地区的公共服务器服务。

用户仍可以通过自建服务器继续使用该软件。

(2)自建服务器

个人使用仅需0.2C128M的最小配置即可。

二,中继服务器Docker部署

1,拉取docker镜像

docker pull rustdesk/rustdesk-server:latest

此处以Portainer进行部署

2,部署hbbs

(1)在portainer中创建container

Name :rustdesk-hbbs

Imagerustdesk/rustdesk-server:latest

Port mapping :

host 21115-21116container 21115-21116 TCP

host 21116container 21116 UDP

host 21118container 21118 TCP

(2)配置Advanced container settings

① Commands & logging :

Command

Override 'hbbs' '--relay-servers' '服务器实际IP地址' '-k' '自定义通信密钥’

Working Dir :/root

Console :TTY (-t)

② Volumes :

Volume mapping :

container :/root (bind) →

host :/home/www/docker/rustdesk/hbbs (Writable)

③ Restart policy :Always

其余保持默认

(3)点击 Deploy the Container 运行

3,部署hbbr

(1)在portainer中创建container

Name :rustdesk-hbbr

Imagerustdesk/rustdesk-server:latest

Port mapping :

host 21117container 21117 TCP

host 21119container 21119 TCP

(2)配置Advanced container settings

① Commands & logging :

Command

Override 'hbbs' '-k' '自定义通信密钥,与hbbs一致’

Working Dir :/root

Console :TTY (-t)

② Volumes :

Volume mapping :

container :/root (bind) →

host :/home/www/docker/rustdesk/hbbr (Writable)

③ Restart policy :Always

其余保持默认

(3)点击 Deploy the Container 运行

4,VPS开放相对应的端口

设置VPS防火墙和服务提供商开放并放行下述端口

2115-2119 TCP

2116 UDP

三,下载软件并配置

1,下载Rustdesk

点击链接rustdesk download下载对应系统的客户端

下述以1.3.2版本为例,非最新

Architecture Windows Ubuntu Mac Android Flatpak iOS Web
x86-64 (64-bit) EXE MSI Download Download Universal Download Go
AArch64 (ARM64) Download Download Download Download TestFlight
ARMv7 (32-bit) Download Download
x86-32 (32-bit) Download

2,配置Rustdesk

(1)Windows作为被控制端

设置点击网络后以管理员命令点击解锁网络设置

ID/中继服务器

ID服务器 :服务器实际IP地址

Key :自定义通信密钥

随后点击常规服务一栏以管理员命令点击开启

(2)Android作为被控制端

设置点击ID/中继服务器

ID/中继服务器

ID服务器 :服务器实际IP地址

Key :自定义通信密钥

(3)被控端安全设置

设置点击安全后以管理员命令点击解锁安全设置

权限 :自定义,建议取消勾选 允许远程修改配置

密码 :可以勾选设置固定密码

2FA :建议勾选启用双重认证

安全 :可以配置只允许白名单上的IP访问

36 个赞

其实可以直接用s6的镜像,只需要一个容器

2 个赞

厉害了,mark支持

2 个赞

非常好帖子,这里放一个我的(直接从官方抄的):

services:
  rustdesk-server:
    container_name: rustdesk-server
    restart: unless-stopped
    network_mode: host
    # ports:
    #   - 21115:21115
    #   - 21116:21116
    #   - 21116:21116/udp
    #   - 21117:21117
    #   - 21118:21118
    #   - 21119:21119
    image: rustdesk/rustdesk-server-s6:latest
    environment:
      - "RELAY=[your_domain]:21117"
      - "ENCRYPTED_ONLY=1"
    volumes:
      - ./data:/data

# Because using docker host mode
# Just in case you forgot the ports:
# 21114 TCP for web console, only available in Pro version
# 21115 TCP for NAT type test
# 21116 TCP TCP hole punching
# 21116 UDP heartbeat/ID server
# 21117 TCP relay
# 21118/21119 TCP for web socket if you want to run web client
3 个赞

好强大的,感谢分享

2 个赞

还是用他家的吧 找qq客服可以白嫖
省事,速度也还行

5 个赞

附一个我自己搞的docker containers配置,带API接口WEB控制页的,IP:21114

networks:
  rustdesk-net:
    external: false

services:
  hbbs:
    container_name: hbbs
    ports:
      - 21115:21115
      - 21116:21116 # 自定义 hbbs 映射端口
      - 21116:21116/udp # 自定义 hbbs 映射端口
    image: rustdesk/rustdesk-server
    command: hbbs -r 服务器IP:21117 -k 自定义通信密钥
    volumes:
      - /root/docker/rustdesk/root:/root # 自定义挂载目录
    networks:
      - rustdesk-net
    depends_on:
      - hbbr
    restart: unless-stopped
    deploy:
      resources:
        limits:
          memory: 64M

  hbbr:
    container_name: hbbr
    ports:
      - 21117:21117 # 自定义 hbbr 映射端口
    image: rustdesk/rustdesk-server
    command: hbbr -k 自定义通信密钥
    volumes:
      - /root/docker/rustdesk/root:/root # 自定义挂载目录
    networks:
      - rustdesk-net
    restart: unless-stopped
    deploy:
      resources:
        limits:
          memory: 64M

  rustdesk-api-server:
    container_name: rustdesk-api-server
    image: kingmo888/rustdesk-api-server:latest
    environment:
      - CSRF_TRUSTED_ORIGINS=http://服务器IP:21114 #防跨域信任来源,可选
      - ID_SERVER=服务器IP:21114 #Web控制端使用的ID服务器
    volumes:
      - /root/docker/rustdesk/db:/rustdesk-api-server/db #修改为你宿主机数据库挂载目录
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    #network_mode: bridge
    networks:
      - rustdesk-net
    ports:
      - "21114:21114"
    restart: unless-stopped
7 个赞

感谢大佬教程

2 个赞

很奇怪我搭建完,在一台电脑上能连上,同样的配置在另外一台电脑上就连不上服务器

2 个赞

为啥没看到指定key的地方?

2 个赞

有没有没公网的佬,我用stun加frp没整明白

2 个赞

mark一下

2 个赞

mark一下

2 个赞

只需要在被控制一端设置中继服务器么?

2 个赞

我是在控制端和被控端都设置了同一个地址的中继服务器
然后就能正常使用了

3 个赞

自部署建议修改限速,rustdesk默认是限速4M的,通过添加.env可以解除|
比如:

LIMIT_SPEED=10240
SINGLE_BANDWIDTH=10240
TOTAL_BANDWIDTH=10240
7 个赞

速度如何,能打游戏吗?
流量消耗如何

2 个赞

没怎么用过,不过这种延迟都还是一言难尽的

1 个赞

这个之前还真没关注,学习了

官方文档写的那么详细,没必要吧