【rustdesk】客户端和服务端的安装和部署(自建服务器,docker,远程控制开源软件rustdesk)

【rustdesk】客户端和服务端的安装和部署(自建服务器,docker)

一、官方部署教程

https://rustdesk.com/docs/zh-cn/client/mac/

官方服务端下载地址

https://github.com/rustdesk/rustdesk-server/releases

我用的docker感觉非常方便,没有直接下载服务端。

官方客户端下载地址

https://github.com/rustdesk/rustdesk/releases

image-20241126132553345

如果访问不了github,可以留言要下载的版本(Architecture+客户端类型),我下载后发到csdn上。

二、我的安装示例详细步骤

1、介绍

服务器做服务端,服务端主要部署HBBS(ID/注册服务器)、HBBR(中继服务器),文章最后会介绍HBBS、HBBR都是做什么的。

mac、windows、安卓做客户端,用来远程控制或者被控制

服务端我安装的是V1.1.12版本,客户端1.3.2版本

题外废话:

我用rustdesk的目的是家里有nuc迷你主机,想要没事的时候远程控制家里的电脑玩。家里电脑可以开几个虚拟机,远程练习linux等或者部署了一些todolist、看板之类的东西(比较占内存,云服务器太贵)再内网穿透。

阿里云的这个99一年3M带宽不限流量,配置一般但是用它的带宽感觉还是很不错的,其他用途都写在这个好玩儿分享专栏中了,另外最近国产的这个雨云也很火超便宜,我的很多朋友都在用,如果不是阿里云我还有自己其他业务需要稳定运行,就会买雨云了。

2、服务端安装

(1)docker、docker-compose安装

# 更新包列表
sudo apt-get update

image-20241126135903999

# 安装必要的依赖包
apt-get install -y ca-certificates curl gnupg lsb-release# 添加Docker官方GPG密钥
curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg# 设置Docker稳定版仓库
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null# 再次更新软件包索引
apt-get update# 安装最新版本的Docker和docker-compose
apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

查看版本号判断是否安装成功

docker --version

image-20241126140601965

(2)配置docker镜像,docker的rustdesk国内版本有点滞后了,启动会报错,所以需要配置一下

/etc/docker路径下,修改daemon.json文件(没有则新建),内容为

{"dns": ["8.8.8.8", "8.8.4.4"],"registry-mirrors": ["https://dockerpull.org","https://docker.anyhub.us.kg","https://dockerhub.icu"]
}

daemon.json文件我放到了csdn上,也可以直接点这里下载直接丢到/etc/docker目录下(做好备份)

image-20241126140828250

(3)重启docker

# 1. 重新加载 daemon 配置文件
systemctl daemon-reload# 2. 重启 Docker 服务
systemctl restart docker# 3. 检查 Docker 服务状态
systemctl status docker# 4. 验证配置是否生效
docker info

(4)配置rustdesk的配置文件,docker-compose.yaml

#创建文件夹的命令
mkdir /data/rustdesk/compose

image-20241126143023457

docker-compose.yml文件我放到了csdn上,可以直接点这里下载直接丢到/data/rustdesk/compose目录下

#是添加的注释,可以删#后的内容无影响

# 指定 docker-compose 文件的版本
version: '3'# 定义服务
services:# hbbs:ID注册服务器,用于处理RustDesk的设备注册和连接请求hbbs:# 指定容器名称container_name: hbbs# 指定使用的镜像和版本image: rustdesk/rustdesk-server:1.1.12# 运行命令,启动 hbbs 服务command: hbbs# 使用主机网络模式,直接使用宿主机的网络,可以避免端口映射的问题network_mode: "host"# 数据卷挂载,将容器内的 /root 目录映射到主机的 /data/rustdesk/data 目录# 用于持久化存储配置文件、密钥等数据volumes:- /data/rustdesk/data:/root# 环境变量配置#environment:# 设置中继密钥,用于 hbbs 和 hbbr 之间的通信验证# 是服务端 hbbs 和 hbbr 之间通信使用的密钥# - RELAY_KEY=123456# SSL证书配置(可选)# - CERT_FILE=/root/cert.pub# - KEY_FILE=/root/cert.key# 容器重启策略:always 表示容器退出时总是重启restart: always# hbbr:中继服务器,用于处理远程连接的数据传输hbbr:container_name: hbbrimage: rustdesk/rustdesk-server:1.1.12# 运行命令,启动 hbbr 服务command: hbbrnetwork_mode: "host"volumes:- /data/rustdesk/data:/root#environment:# 中继密钥必须与 hbbs 服务配置的密钥相同#- RELAY_KEY=123456restart: always# 端口说明(使用 host 网络模式时自动使用以下端口):
# hbbs 服务使用的端口:
# - 21115: TCP,用于设备注册
# - 21116: TCP,用于 NAT 类型测试
# - 21118: TCP,用于 ID 注册服务器的 Web 服务
#
# hbbr 服务使用的端口:
# - 21117: TCP,用于中继服务器
# - 21119: TCP,用于中继服务器的 Web 服务# 注意事项:
# 1. 确保防火墙开放上述端口
# 2. RELAY_KEY 建议使用复杂的随机字符串
# 3. 数据目录 /data/rustdesk/data 需要提前创建
# 4. 如果需要使用 SSL,请将证书文件放在数据目录中
# 5. 服务器重启时容器会自动启动

(5)启动项目

在配置文件所在目录执行以下命令启动服务

# 进入文件夹
cd /data/rustdesk/compose# 创建docker数据目录
mkdir -p /data/rustdesk/data# 启动服务
docker-compose up -d# 有需要时可以用此命令重启服务
# docker-compose restart# 查看服务状态
docker-compose ps# 查看服务日志
docker-compose logs -f

image-20241126144220402

(6)检查服务器端口是否开放

使用 nc(Netcat)检查或使用 telnet检查都可以

xx.xx.xx.xx是服务器ip地址,需要替换成自己的

for port in 21115 21116 21117 21118 21119; donc -zv xx.xx.xx.xx $port
done

image-20241126144939844

for port in 21115 21116 21117 21118 21119; dotelnet xx.xx.xx.xx $port
done

2、客户端配置

(1)电脑客户端

image-20241126151326262

(2)Android 客户端

image-20241126152333963

出于移动设备安全性考虑,手机端不支持设置永久密码功能

image-20241126153247672

三、hbbs 和 hbbr 的功能:

HBBS(ID/注册服务器)

  1. 主要功能

    • 处理设备注册
    • 管理设备在线状态
    • 分配和管理 RustDesk ID
    • 维护设备心跳连接
    • 协助建立 P2P 连接
  2. 具体工作

    • 当设备启动 RustDesk 时,会连接到 HBBS
    • 为每个设备分配唯一的 ID
    • 记录设备的在线状态和网络信息
    • 协助两个设备之间建立连接
    • 存储设备的临时连接信息

HBBR(中继服务器)

  1. 主要功能

    • 处理无法建立 P2P 连接时的数据中继
    • 作为数据传输的中转站
    • 处理 NAT 穿透失败的情况
  2. 具体工作

    • 当两台设备无法直接连接时介入
    • 将控制端的指令转发给被控端
    • 将被控端的画面数据转发给控制端
    • 处理音频、文件传输等数据中继

连接流程

  1. 正常 P2P 连接
设备A → HBBS → 设备B(P2P直连)
  1. 需要中继的连接
设备A → HBBS → HBBR → 设备B

为什么需要分开?

  1. 职责分离

    • HBBS 专注于设备管理和连接协调
    • HBBR 专注于数据传输和中继
  2. 性能考虑

    • 可以分别扩展两个服务
    • 中继服务器可以部署在不同地区
    • 更容易进行负载均衡
  3. 灵活部署

    • 可以根据需求部署多个 HBBR
    • HBBS 通常只需要一个实例
    • 可以针对不同地区优化网络性能

使用建议

  1. 小规模使用

    • 两个服务可以部署在同一台服务器上
    • 使用默认配置即可
  2. 大规模使用

    • HBBR 建议部署多个实例
    • 选择网络质量好的服务器部署 HBBR
    • HBBS 选择稳定可靠的服务器
  3. 企业使用

    • 建议在不同地区部署 HBBR
    • 配置高可用方案
    • 监控服务状态

这样的设计使得 RustDesk 可以更好地处理不同的网络环境,提供更可靠的远程连接服务。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/479865.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Qt程序发布及打包成exe安装包

参考:Qt之程序发布以及打包成exe安装包 目录 一、简述 Qt 项目开发完成之后,需要打包发布程序,而因为用户电脑上没有 Qt 配置环境,所以需要将 release 生成的 exe 文件和所依赖的 dll 文件复制到一个文件夹中,然后再用 Inno Setup 打包工具打包成一个 exe 安装包,就可以…

python学opencv|读取图像

【1】引言 前序学习了使用matplotlib模块进行画图,今天开始我们逐步尝试探索使用opencv来处理图片。 【2】学习资源 官网的学习链接如下: OpenCV: Getting Started with Images 不过读起来是英文版,可能略有难度,所以另推荐一…

数据结构 ——— 归并排序算法的实现

目录 归并排序的思想 归并排序算法的实现 归并排序的思想 将已经有序的子序列合并,得到完全有序的序列,即先使每个子序列有序后,再使子序列段间有序 若将两个有序表合并成一个有序表,称为二路归并 归并排序步骤示意图&#x…

Springboot项目搭建(6)-前端登录跳转与Pinia实用

1.添加响应错误拦截 文件地址:src\utils\request.js import axios from axios import { ElMessage } from element-plus const baseURL /api const instance axios.create({baseURL}) //添加拦截器 instance.interceptors.response.use(result>{&#x1f447…

多输入多输出 | Matlab实现TCN-LSTM时间卷积神经网络结合长短期记忆神经网络多输入多输出预测

多输入多输出 | Matlab实现TCN-LSTM时间卷积神经网络结合长短期记忆神经网络多输入多输出预测 目录 多输入多输出 | Matlab实现TCN-LSTM时间卷积神经网络结合长短期记忆神经网络多输入多输出预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 多输入多输出 | Matlab实现…

C++网络编程:select IO多路复用及TCP服务器开发

C网络编程:使用select实现IO多路复用 一、什么是 IO 多路复用?二、IO多路复用器 select三、相关接口3.1、fd_set 结构体3.2、宏和函数 四、select 实现 TCP 服务器五、总结 一、什么是 IO 多路复用? 在网络编程中,最容易想到的并…

HDU Go Running(最小点覆盖 + 网络流优化)

题目大意:有一条无限长跑道,每个人可以规定自己跑步的方向,起点,跑步起止时间。每个人跑步的速度都是1m/s。最后从监控人员哪里得到了n个报告,每个报告给出了某人在某一时候所在的位置,问跑步的最少可能人数…

28.UE5实现对话系统

目录 1.对话结构的设计(重点) 2.NPC对话接口的实现 2.1创建类型为pawn的蓝图 2.2创建对话接口 3.对话组件的创建 4.对话的UI设计 4.1UI_对话内容 4.2UI_对话选项 4.3UI_对话选项框 5.对话组件的逻辑实现 通过组件蓝图,也就是下图中的…

Reachy 2,专为AI与机器人实验室打造的卓越开源双臂移动操作平台!

近期,花粉机器人(POLLEN ROBOTICS)隆重推出Reachy 2仿生机器人——下一代开源操作平台,为AI与机器人实验室带来理想的双臂移动操作科研平台! Reachy 2的仿生性: 》拥有两个基于Maxon无刷电机的仿生7自由度…

python的openpyxl库设置表格样式:字体/边框/对齐/颜色等

学习目录 1. 安装和使用openpyxl库设置表格样式 2 设置字体font 3 设置边框 4 设置对齐方式 5 设置单元格数据格式 6 设置行高和列宽 7 填充单元格颜色 附录-关于颜色说明 本章节主要介绍如何使用openpyxl库设置表格中的一些样式,比如字体,边框…

Git旧文件覆盖引发思考

一天,我的同事过来找到我,和我讲:张叫兽,大事不好,我的文件被人覆盖了。git是真的不好用啊 git不好用?文件被覆盖;瞬间我似乎知道了什么,让我想到了某位男明星的语法:他…

QSqlTableModel的使用

实例功能 这边使用一个实例显示数据库 demodb 中 employee 数据表的内容,实现编辑、插入、删除的操作,实现数据的排序和记录过滤,还实现 BLOB 类型字段 Photo 中存储照片的显示、导入等操作,运行界面如下图: 在上图中…

什么是代理,nodenginx前端代理详解

一. 什么是代理? 代理就是通过一个特殊的网络服务去访问另一网络服务的一种间接访问方式。像我们不能直接访问国外的网站,只能使用VPN,就是使用了代理 二. 前端为什么要用代理? 首先明确以下两个概念 (1&#xff09…

java脚手架系列16-AI大模型集成

之所以想写这一系列,是因为之前工作过程中有几次项目是从零开始搭建的,而且项目涉及的内容还不少。在这过程中,遇到了很多棘手的非业务问题,在不断实践过程中慢慢积累出一些基本的实践经验,认为这些与业务无关的基本的…

网络安全中的数据科学如何重新定义安全实践?

组织每天处理大量数据,这些数据由各个团队和部门管理。这使得全面了解潜在威胁变得非常困难,常常导致疏忽。以前,公司依靠 FUD 方法(恐惧、不确定性和怀疑)来识别潜在攻击。然而,将数据科学集成到网络安全中…

【算法day1】数组:双指针算法

题目引用 这里以 1、LeetCode704.二分查找 2、LeetCode27.移除元素 3、LeetCode977.有序数组的平方 这三道题举例来说明数组中双指针的妙用。 1、二分查找 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜…

open-instruct框架使用记录:只使用huggingface数据集的小部分进行训练,如何修改dataset_info.json文件

open-instruct框架 这篇笔记主要记录以下问题:只使用huggingface下载的数据集中的一小部分数据进行数据训练。而且我不想修改open-instruct的加载数据集的代码,以及脚本中的--dataset_mixer_list参数的指定等。下面是我的思路历程。 if args.dataset_na…

Jenkins升级到最新版本后无法启动

1. 场景还原 最近在web界面将jenkins升级到最新版本后,后台无法启动jenkins服务,服务状态如下: 运行jenkins命令提示invalid Java version jenkins --version jenkins: invalid Java version: java version "1.8.0_202" Java(TM)…

DRM(数字权限管理技术)防截屏录屏----ffmpeg安装

提示:ffmpeg安装 文章目录 [TOC](文章目录) 前言一、下载二、配置环境变量三、运行ffmpeg四、文档总结 前言 FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的…

Unity版本使用情况统计(更新至2024年11月)

UWA发布|本期UWA发布的内容是第十五期Unity版本使用统计,统计周期为2024年5月至2024年11月,数据来源于UWA网站(www.uwa4d.com)性能诊断提测的项目。希望给Unity开发者提供相关的行业趋势作为参考。 2024年5月 - 2024年…