群晖docker部署rustdesk

RustDesk简介

RustDesk 即远程桌面软件,开箱即用,无需任何配置。完全掌控数据,不用担心安全问题。

RustDesk 硬件要求很低,最低配置的云服务器就可以了,CPU和内存要求都是最小的。

关于网络大小,如果TCP打洞直连失败,就要耗费中继流量,一个中继连接的流量在30k-3M每秒之间(1920x1080屏幕),取决于清晰度设置和画面变化。如果只是办公需求,平均在100K/s。

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

Docker CLI

sudo docker image pull rustdesk/rustdesk-server
sudo docker run --name hbbs -p 21115:21115 -p 21116:21116 -p 21116:21116/udp -p 21118:21118 -v `pwd`:/root -td --net=host rustdesk/rustdesk-server hbbs -r <relay-server-ip[:port]>
sudo docker run --name hbbr -p 21117:21117 -p 21119:21119 -v `pwd`:/root -td --net=host rustdesk/rustdesk-server hbbr

Docker Compose

  • –net=host 仅适用于 Linux,它让 hbbs/hbbr 可以看到对方真实的ip, 而不是固定的容器ip (172.17.0.1)。 如果–net=host运行正常,-p选项就不起作用了, 可以去掉。
version: '3'

networks:
  rustdesk-net:
    external: false

services:
  hbbs:
    container_name: hbbs
    ports:
      - 21115:21115
      - <hbbs_port>:21116 # 自定义 hbbs 映射端口
      - <hbbs_port>:21116/udp # 自定义 hbbs 映射端口
    image: rustdesk/rustdesk-server
    command: hbbs -r <your_domain>:<hbbr_port> # 填入个人域名或 IP + hbbr 暴露端口
    volumes:
      - <mount_path>:/root # 自定义挂载目录
    networks:
      - rustdesk-net
    depends_on:
      - hbbr
    restart: unless-stopped
    deploy:
      resources:
        limits:
          memory: 64M

  hbbr:
    container_name: hbbr
    ports:
      - <hbbr_port>:21117 # 自定义 hbbr 映射端口
    image: rustdesk/rustdesk-server
    command: hbbr
    volumes:
      - <mount_path>:/root # 自定义挂载目录
    networks:
      - rustdesk-net
    restart: unless-stopped
    deploy:
      resources:
        limits:
          memory: 64M

version: '3'
services:
  hbbs:
    container_name: hbbs
    image: rustdesk/rustdesk-server:latest
    command: hbbs -r rustdesk.example.com:21117 -k _
    volumes:
      - ./data:/root
    network_mode: host
    depends_on:
      - hbbr
    restart: always

  hbbr:
    container_name: hbbr
    image: rustdesk/rustdesk-server:latest
    command: hbbr -k _
    volumes:
      - ./data:/root
    network_mode: host
    restart: always

# 因為使用 docker host mode
# 以防你忘記這些端口:
# 21115 TCP NAT 類型測試
# 21116 TCP TCP 打洞
# 21116 UDP 心跳/ID 伺服器
# 21117 TCP Relay/中繼

RustDesk使用说明

ID 服务器hbbs

  • 被控端+主控端
  • 输入 hbbs 主机或 ip 地址:hbbs.example.com:21116
     
  • 另外两个地址可以不填,RustDesk会自动推导(如果没有特别设定)

中继服务器hbbr

  • hbbr.example.com:21117

加密远程连接设置Key

  • 用记事本打开./hbbs/id_ed25519.pub,将内容复制到中继器的KEY输入框

RustDesk客户端

rustdesk-api-server

基于Django的RustDesk Api&Web Server,除了支持api所有功能,还支持web注册、管理、展示等。

docker cli 方式

docker run -d \
  --name rustdesk-api-server \
  -p 21114:21114 \
  -e CSRF_TRUSTED_ORIGINS=http://yourdomain.com:21114 \ #防跨域信任来源,可选
  -e ID_SERVER=yourdomain.com \ #Web控制端使用的ID服务器
  -v /yourpath/db:/rustdesk-api-server/db \ #修改/yourpath/db为你宿主机数据库挂载目录
  -v /etc/timezone:/etc/timezone:ro \
  -v /etc/localtime:/etc/localtime:ro \
  --network bridge \
  --restart unless-stopped \
  ghcr.io/kingmo888/rustdesk-api-server:latest

docker-compose方式

version: "3.8"
services:
  rustdesk-api-server:
    container_name: rustdesk-api-server
    image: ghcr.io/kingmo888/rustdesk-api-server:latest
    environment:
      - CSRF_TRUSTED_ORIGINS=http://yourdomain.com:21114 #防跨域信任来源,可选
      - ID_SERVER=yourdomain.com #Web控制端使用的ID服务器
    volumes:
      - /yourpath/db:/rustdesk-api-server/db #修改/yourpath/db为你宿主机数据库挂载目录
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    network_mode: bridge
    ports:
      - "21114:21114"
    restart: unless-stopped

环境变量

变量名 参考值 备注
HOST 默认 0.0.0.0 绑定服务的IP
TZ 默认 Asia/Shanghai,可选 时区
SECRET_KEY 可选,自定义一串随机字符 程序加密秘钥
CSRF_TRUSTED_ORIGINS 可选,默认关闭验证;
如需开启填写你的访问地址 http://yourdomain.com:21114
如需关闭验证请删除此变量,而不是留空
防跨域信任来源
ID_SERVER 可选,默认为和API服务器同主机。
可自定义如 yourdomain.com
Web控制端使用的ID服务器
DEBUG 可选,默认 False 调试模式
ALLOW_REGISTRATION 可选,默认 True 是否允许新用户注册
数据库配置 -- 开始 -- 若不使用MYSQL则以下皆无需配置
DATABASE_TYPE 可选,默认 SQLITE3 数据库类型(SQLITE/MYSQL)
MYSQL_DBNAME 可选,默认 - MYSQL数据库名
MYSQL_HOST 可选,默认 127.0.0.1 MYSQL数据库的服务器IP
MYSQL_USER 可选,默认 - MYSQL数据库的用户名
MYSQL_PASSWORD 可选,默认 - MYSQL数据库的密码
MYSQL_PORT 可选,默认 3306 MYSQL数据库端口
数据库配置 -- 结束 -- 查看【sqlite3迁移mysql教程】
LANGUAGE_CODE 可选,默认 zh-hans 语言,支持中文(zh-hans)、英语(en)

使用说明

  • 管理员设置

    当数据库中不存在账户时,第一个注册的账户直接获取超级管理员权限,之后注册账户为普通账户。

  • 设备信息

    经测试,客户端会在非绿色版模式下,安装为服务的模式中,定时发送设备信息到api接口,所以如果想要设备信息,需要安装rustdesk客户端并启动服务。

  • 连接速度慢

    新版本Key模式链接速度慢,可以在服务端启动服务时,不要带参数的-k,此时,客户端也不能配置key。

  • Web控制端配置

    • 设置ID_SERVER环境变量,或修改rustdesk_server_api/settings.py文件中ID_SERVER配置项,将ID服务器/中继服务器IP或域名填上。
  • Web控制端一直转圈

    • 检查ID服务器填写是否正确

    • Web控制端目前仅支持非SSL模式,若webui为https访问,请将s去掉,否则ws连不上一直转圈。如:https://domain.com/webui,改为http://domain.com/webui

  • 后台操作登录或登出时:CSRF验证失败. 请求被中断.

    这种操作大概率是docker配置+nginx反代+SSL的组合,要注意修改CSRF_TRUSTED_ORIGINS,如果是ssl那就是https开头,否则就是http。

RustDesk参考文献

 

是不是感觉很麻烦~~~那就来个大综合~~自行修改里面的域名/ip/端口

version: '3'

networks:
  rustdesk-net:
    external: false

services:
  hbbs:
    container_name: rustdesk-hbbs
    ports:
      - 21115:21115
      - 21116:21116 # 自定义 hbbs 映射端口
      - 21116:21116/udp # 自定义 hbbs 映射端口
    image: rustdesk/rustdesk-server
    command: hbbs -r rustdesk.example.com:21116 # 填入个人域名或 IP + hbbr 暴露端口
    volumes:
      - ./hbbs:/root # 自定义挂载目录
    networks:
      - rustdesk-net
    depends_on:
      - hbbr
      - api-server
    restart: unless-stopped
    deploy:
      resources:
        limits:
          memory: 64M

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

  api-server:
    container_name: rustdesk-api-server
    ports:
      - 21114:21114 # 自定义 rustdesk-api-server 映射端口
    image: ghcr.io/kingmo888/rustdesk-api-server:latest
    environment:
      - CSRF_TRUSTED_ORIGINS=http://rustdesk.example.com:21114 #防跨域信任来源,可选
      - ID_SERVER=rustdesk.example.com #Web控制端使用的ID服务器
      - SECRET_KEY=vXM%yDY!FgFk6mX!FGcuZT # 程序加密秘钥
      - ALLOW_REGISTRATION=False  # 是否允许新用户注册 默认 True
    volumes:
      - ./api-server/db:/rustdesk-api-server/db #修改/yourpath/db为你宿主机数据库挂载目录
      - ./api-server/timezone:/etc/timezone:ro
      - ./api-server/localtime:/etc/localtime:ro 
    networks:
      - rustdesk-net
    restart: unless-stopped

 

THE END
分享
二维码
打赏
海报
群晖docker部署rustdesk
RustDesk简介 RustDesk 即远程桌面软件,开箱即用,无需任何配置。完全掌控数据,不用担心安全问题。 RustDesk 硬件要求很低,最低配置的云服务器就可以了,CP……
<<上一篇
下一篇>>
文章目录
关闭
目 录