当前位置: 代码网 > 服务器>服务器>云虚拟主机 > docker自建rustdesk-server远程桌面的解决方案

docker自建rustdesk-server远程桌面的解决方案

2024年09月08日 云虚拟主机 我要评论
rustdesk简介rustdesk 是一款可以平替 teamviewer 的开源软件,旨在提供安全便捷的自建方案。rustdesk 是一款功能齐全的远程桌面应用,具有以下特性:支持 windows、

rustdesk简介

rustdesk 是一款可以平替 teamviewer 的开源软件,旨在提供安全便捷的自建方案。

rustdesk 是一款功能齐全的远程桌面应用,具有以下特性:

  • 支持 windows、macos、linux、ios、android、web 等多个平台。
  • 支持 vp8 / vp9 / av1 软件编解码器和 h264 / h265 硬件编解码器。
  • 完全掌控数据,轻松自建。
  • p2p 连接,端到端加密。
  • 在 windows 上可以非管理员不安装运行,根据需要在本地或远程提升权限。
  • 我们崇尚简单,尽一切可能让它简单。

官方网站:https://rustdesk.com/zh/

项目地址:https://github.com/rustdesk/rustdesk

rustdesk 架构

rustdesk 采用了经典的客户端-服务器模型,其中涉及三个主要组件:rustdesk 客户端、rustdesk 服务器和 id server。

  • rustdesk 客户端:运行在你的设备上(windows,macos,linux,android, iphone)用于连接两个设备的软件,它负责监听来自客户端的连接请求,并在建立连接后向客户端发送屏幕更新和接收输入事件。
  • rustdesk 中继服务器(relay server):运行在服务器上,充当客户端之间的桥梁,转发来自一方的数据包到另一方。在某些环境中(如经过 nat 出网)设备之间无法进行 p2p 连接,可以用服务器来中转
  • id 服务器(id server):运行在服务器上,用于维护客户端及中继服务器的连接信息,促进设备之间建立 p2p 连接。

在rustdesk的服务器端部署中,hbbrhbbs 是两个重要的组件,分别用于不同的功能:

  • hbbs - 代表 rustdesk id / rendezvous server,rustdesk id注册服务器,用于分配和注册id;hbbs 是rustdesk的中介服务器(broker server),用于管理和协调客户端连接。它帮助客户端找到并建立p2p连接。hbbs 负责维护客户端的在线状态,并处理连接请求。当客户端a希望连接客户端b时,它会向hbbs发送请求,hbbs会帮助它们建立连接。
  • hbbr -代表 rustdesk relay server,rustdesk 中继服务器,如果p2p无法连接,会使用hbbr进行流量中继。hbbr 是rustdesk的中继服务器(relay server),用于在两台客户端之间进行连接中继。它允许无法直接建立p2p连接的客户端通过中继服务器进行通信。当客户端a和客户端b之间无法建立直接连接时,它们会通过hbbr中继服务器进行数据传输。
  • rustdesk-utils - rustdesk 命令行工具

p2p直连说明:

  • rustdesk 首先尝试建立直接 p2p 连接,如果 p2p 失败,将使用中继服务器。
  • 确认连接方式,首先连接到远程主机,可以将鼠标移动到工具栏图标(绿色图标),将显示它是直接连接还是通过中继服务器连接。

使用端口说明:

序号服务端口协议用途是否可选
1hbbs21114tcp用于 web 控制台api,仅在专业版中可用可选
2hbbs21115tcpnat类型测试必选
3hbbs21116tcp/udpudp用于id注册和心跳服务,tcp用于tcp打洞和连接服务必选
4hbbr21117tcp用于relay服务必选
5hbbs21118tcp用于支持web客户端可选
6hbbr21119tcp用于支持web客户端可选

部署rustdesk-server

rustdesk支持自行搭建属于你的rustdesk服务器,所有的一切都是免费且开源的。所谓自建服务器,也就是自建 id server 和 relay server。

整体部署架构如下:

官方文档:https://github.com/rustdesk/rustdesk-server/blob/master/readme-zh.md

前置部署要求

前置要求:

  • 准备一台公网linux服务器,并绑定公网ip地址,以阿里云轻量应用服务器为例,操作系统为ubuntu 22.04。
  • 服务器已安装dockerdocker-compose工具

1、登录阿里云控制台,配置防火墙规则,开通以下端口

端口放通说明:

放通tcp端口2111521116211172111821119放通udp端口21116

2、登录阿里云控制台,配置域名解析(可选):

配置一条a记录,将rustdesk-server公网ip地址解析到rustdesk.example.com域名(需自行准备域名并进行备案)。

部署rustdesk-server

配置主机名

hostnamectl set-hostname rustdesk-server

创建部署目录

mkdir -p /data/rustdesk/composecd /data/rustdesk/compose

创建docker-compose文件

root@rustdesk-server:/data/rustdesk/compose# vim docker-compose.yaml 
services:
  hbbs:
    container_name: hbbs
    image: rustdesk/rustdesk-server:1.1.11
    command: hbbs
    environment:
      - "relay=hbbr:21117"
      - "encrypted_only=1"
    ports:
      - 21115:21115
      - 21116:21116
      - 21116:21116/udp
      - 21118:21118
    volumes:
      - /data/rustdesk/root:/root
    networks:
      - rustdesk-net
    depends_on:
      - hbbr
    restart: unless-stopped
  hbbr:
    container_name: hbbr
    image: rustdesk/rustdesk-server:1.1.11
    command: hbbr
    ports:
      - 21117:21117
      - 21119:21119
    volumes:
      - /data/rustdesk/root:/root
    networks:
      - rustdesk-net
    restart: unless-stopped
networks:
  rustdesk-net:
    external: false

主要参数说明:

  • 环境变量relay:指定hbbr 服务的地址和端口,由于使用同一个docker network,可以通过容器名称hbbr连接
  • 环境变量encrypted_only:启用加密连接并使用key验证,防止其他获取地址的客户端非法连接

执行以下命令运行容器

root@rustdesk-server:/data/rustdesk/compose# docker-compose up -d
[+] building 0.0s (0/0)                                                                                                                                                                   docker:default
[+] running 3/3
 ✔ network compose_rustdesk-net  created                                                                                                                                                            0.1s 
 ✔ container hbbr                started                                                                                                                                                            0.1s 
 ✔ container hbbs                started    

查看运行的两个容器hbbrhbbs

root@rustdesk-server:/data/rustdesk/compose# docker-compose ps
name         image                                   command                  service      created          status          ports
hbbr         rustdesk/rustdesk-server:1.1.11         "hbbr"                   hbbr         44 seconds ago   up 43 seconds   0.0.0.0:21117->21117/tcp, :::21117->21117/tcp, 0.0.0.0:21119->21119/tcp, :::21119->21119/tcp
hbbs         rustdesk/rustdesk-server:1.1.11         "hbbs"                   hbbs         44 seconds ago   up 42 seconds   0.0.0.0:21115-21116->21115-21116/tcp, :::21115-21116->21115-21116/tcp, 0.0.0.0:21118->21118/tcp, :::21118->21118/tcp, 0.0.0.0:21116->21116/udp, :::21116->21116/udp
root@rustdesk-server:/data/rustdesk/compose# 

查看主机当前目录结构

root@rustdesk-server:~# apt install -y tree
root@rustdesk-server:~# tree /data/rustdesk/
/data/rustdesk/
├── compose
│   └── docker-compose.yaml
└── root
    ├── db_v2.sqlite3
    ├── db_v2.sqlite3-shm
    ├── db_v2.sqlite3-wal
    ├── id_ed25519
    └── id_ed25519.pub
2 directories, 6 files
root@rustdesk-server:~# 

连接验证

服务端搭建好后,在要连接的两个客户端设备上都下载 rustdesk 客户端。

下载地址是:https://github.com/rustdesk/rustdesk/releases

在rustdesk-server上获取默认生成的公钥key

root@rustdesk-server:~# cat /data/rustdesk/root/id_ed25519.pub 
g2yfoe+0pwwqxahm174txbsouqjb1brhkoxzhekv7ha=

首先找到 rustdesk 客户端的 设置 -> id/中继服务器 ,然后输入如下三个信息

  • id 服务器:rustdesk.example.com:21116,默认端口为21116时可以省略端口配置
  • 中级服务器:rustdesk.example.com:21117,默认端口为21117时可以省略端口配置
  • key:填写部署服务默认生成的 id_ed25519.pub 文件中的内容

示例配置如下:

所有客户端必须都完成相应配置,配置完成后连接测试:

1、中继连接测试

连接成功后鼠标指针放在左上角绿色图标处,显示通过加密中继连接,说明两台机器位于不同网络,无法通过p2p直连,要经过阿里云rustdesk-server中继连接。

2、直连连接测试

如果位于同一网络的两台客户端互联,由于中间不存在nat设备和防火墙,将显示两台客户端为加密直连,无需经过中继:

到此这篇关于docker自建rustdesk-server远程桌面的文章就介绍到这了,更多相关docker自建rustdesk-server内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com