系统环境:Alpine vir 3.19.0 x86_64 Alpine Linux安装

已安装docker及compose插件 ALpine Linux中安装Docker

官方网站 RustDesk – 开源远程桌面访问软件

中文文档 RustDesk文档

RustDesk开源地址 rustdesk/rustdesk (github.com)

推荐使用docker compose方式部署

需要创建两个文件夹用于保存ID服务器和中继服务器数据,以/opt/hbbs,/opt/hbbr为例

创建配置文件

在目录内创建docker-compose.yaml文件。

启动命令中加入 -k _参数用于强制加密连接,环境变量中的- LIMIT_SPEED=100- SINGLE_BANDWIDTH=100根据需要设置限速,单位是Mbps。


networks:
  rustdesk-net:
    external: false

services:
  hbbs:
    container_name: hbbs
    ports:
      - 21115:21115
      - 21116:21116 # 定义 hbbs 映射端口
      - 21116:21116/udp # 定义 hbbs 映射端口
    environment:
      - TZ=Asia/Chongqing
    image: rustdesk/rustdesk-server
    command: hbbs -r your_domain.com:21117 -k _ # 填入个人域名或 IP + hbbr 暴露端口
    volumes:
      - ./opt/hbbs:/root # 自定义挂载目录
    networks:
      - rustdesk-net
    depends_on:
      - hbbr
    restart: unless-stopped
    deploy: # 容器内存限制
      resources:
        limits:
          memory: 64M

  hbbr:
    container_name: hbbr
    ports:
      - 21117:21117 # 自定义 hbbr 映射端口
    environment:
      - TZ=Asia/Chongqing
      - LIMIT_SPEED=50
      - SINGLE_BANDWIDTH=100
    image: rustdesk/rustdesk-server
    command: hbbr -k _
    volumes:
      - ./opt/hbbr:/root # 自定义挂载目录
    networks:
      - rustdesk-net
    restart: unless-stopped
    deploy: # 容器内存限制
      resources:
        limits:
          memory: 64M

启动rustdesk容器

docker compose up -d

配置端口映射

  默认情况下,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)

Key

  hbbs在第一次运行时,会自动产生一对加密私钥和公钥(分别位于运行目录下的id_ed25519id_ed25519.pub文件中),其主要用途是为了通讯加密。存放于/opt/hbbs目录中,如果中继服务器同时启用了加密,则应保持/opt/hbbs和/opt/hbbr目录下的密钥文件一致

配置客户端

  被控端+主控端都要再在 ID 服务器输入框中输入 hbbs 主机或 ip 地址,另外两个地址可以不填,RustDesk会自动推导(如果没有特别设定),中继服务器指的是hbbr(21117)端口。Key输入框填入上述id_ed25519.pub文件中的公钥,如果配置了强制加密参数 -k _则必须填入公钥,否则可不填,不影响连接,但是连接无法加密。