腾讯云锐驰型轻量服务器搭建开源远程桌面软件RustDesk中继服务器小记
RustDesk是一个基于Rust编写的全平台开源远程桌面软件,其最大的特点为开箱即用,且数据完全自主掌控,甚至可以依托此项目定制化开发自己专属的远程桌面软件。
一、前言
由于我个人经常性出差,对远程桌面软件有强需求,而微软自带的RDP并不能完全满足我的需求,且国内的向日葵/ToDesk/TeamViewer的定价与吃相属实太过美丽,所以目光转向了开源的方案,最终敲定为RustDesk的原因是没有带宽分辨率限制(你也不想720P的远程分辨率吧),且拥有较为完善的第三方WebUI管理后台。
二、服务器准备
由于腾讯云近期推出了锐驰型轻量应用服务器,拥有200M不限流量的大带宽国内网络,这极大的满足了我对大带宽的需求,所以我也是迫不及待的申请内测试了下。定价相对来说还算不错,此次使用的是2C1G的套餐,月付40元。以下为配置清单:
- 操作系统模板:Ubuntu 24.04 LTS
- 地域:上海(可根据自身需求选择地域位置)
- 套餐类型:锐驰型
- 套餐配置:2C 1G 40G 200Mbps
- 活动购买直达链接:点此前往
- 目前看来锐驰套餐的缺点是CPU抽奖,我运气比较好直接开出了AMD 7K62的CPU,如果开出 Intel的建议删了重开……
三、环境准备
在购买完成且服务器已自动初始化完成运行后,我们可以直接使用腾讯云自带的OrcaTerm一键登录,无需下载第三方SSH客户端。


登录成功后,执行以下命令更新软件包
sudo su
apt update -y
apt upgrade -y
安装Docker&Docker-Composer
sudo apt-get update
sudo apt-get install ca-certificates curl -y
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://mirrors.cloud.tencent.com/docker-ce/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://mirrors.cloud.tencent.com/docker-ce/linux/ubuntu/ \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
查看安装是否成功
docker info

出现以上内容则代表安装成功
软连接docker-composer
ln -s /usr/libexec/docker/cli-plugins/docker-compose /usr/local/bin/docker-compose
查看软连接是否正常
docker-composer -v

出现以上内容即代表成功安装
配置腾讯云Docker镜像源
由于Docker在国内的公共镜像源服务因政策被下线,所以只能使用腾讯云内网的Docker镜像源
执行以下命令,打开 /etc/docker/daemon.json 配置文件。
vim /etc/docker/daemon.json
按 i 切换至编辑模式,添加以下内容,并保存。
{
"registry-mirrors": [
"https://mirror.ccs.tencentyun.com"
]
}
执行以下命令重启 Docker 即可
systemctl restart docker
四、配置中继服务器
创建目录
mkdir /home/rustdesk
创建HBBR/HBBS 服务
创建docker-composer.yml文件
cd /home/rustdesk
vi docker-compose.yml
networks:
rustdesk-net:
external: false
services:
hbbs:
container_name: hbbs
ports:
- 21115:21115 # NAT-Test
- 21116:21116 # TCP-Connect
- 21116:21116/udp # ID&Heart
- 21118:21118 #web-client
image: rustdesk/rustdesk-server
command: hbbs -r xx.example.com -k abc123456 # 填入个人域名或 IP + hbbr 暴露端口
volumes:
- /home/rustdesk:/root # 自定义挂载目录
networks:
- rustdesk-net
depends_on:
- hbbr
restart: unless-stopped
deploy:
resources:
limits:
memory: 64M
hbbr:
container_name: hbbr
ports:
- 21117:21117 # 中继
- 21119:21119 #web-client
image: rustdesk/rustdesk-server
command: hbbr -k abc123456
volumes:
- /home/rustdesk:/root # 自定义挂载目录
networks:
- rustdesk-net
restart: unless-stopped
deploy:
resources:
limits:
memory: 64M
保存后,执行docker-composer up -d动容器
注意事项
在第一次启动HBBR/HBBS服务时,当前的新版本会自动创建两个key文件id_ed25519和id_ed25519.pub,此文件用于链接的加密,以及ID服务器的授权认证。
当前版本中,被控端可不输入key,而控制端则强制要求key的存在。
由于第三方API在Key的加密上存在一定的问题,所以如果要使用第三方客户端,则必须在hbbs启动命令中带有-k的指定密钥参数即可修正此问题。而使用了-k命令,则不会使用服务器自动创建的两个密钥对文件。
此问题仅存在于第三方API上,如果不使用第三方API则无需增加。参考以下Issue
五、软件配置
由于版本更新较快,本次客户端配置仅限Windws x64 1.3.7 版本
Rustdesk支持免安装控制/被控,但由于Windows系统原因,如果想要开机自启等一系列进阶功能,则仍需要安装后使用。安装完成后,点击右上角的设置按钮进行ID服务器配置。


点开ID/中继服务器后,在ID服务器中输入服务器IP+端口或者自定义域名即可,Key为hbbs中-k后指定的字符串。
六、RustDesk WebUI/API配置(可选)
RustDesk API是一个 Go 实现的 Rustdesk API 接口,支持简单的 Web Admin 和 Web 客户端功能。
由于官方的Pro版本对个人来说有些昂贵,而社区版本并不带有WebUI等功能,所以我们这里可以使用第三方的WebUI来进行简单的客户端管理。
推荐使用此项目:https://github.com/lejianwen/rustdesk-api
修改docker-composer.yml件
使用docker-composer down止容器,修改docker-composer.yml如下所示(完整配置)
networks:
rustdesk-net:
external: false
services:
hbbs:
container_name: hbbs
ports:
- 21115:21115 # NAT-Test
- 21116:21116 # TCP-Connect
- 21116:21116/udp # ID&Heart
- 21118:21118 #web-client
image: rustdesk/rustdesk-server
command: hbbs -r 122.152.219.191:21116 -k abc123456 # 填入个人域名或 IP + hbbr 暴露端口
volumes:
- /home/rustdesk:/root # 自定义挂载目录
networks:
- rustdesk-net
depends_on:
- hbbr
restart: unless-stopped
deploy:
resources:
limits:
memory: 64M
hbbr:
container_name: hbbr
ports:
- 21117:21117 # 中继
- 21119:21119 #web-client
image: rustdesk/rustdesk-server
command: hbbr -k abc123456
volumes:
- /home/rustdesk:/root # 自定义挂载目录
networks:
- rustdesk-net
restart: unless-stopped
deploy:
resources:
limits:
memory: 64M
rustdesk-api:
container_name: rustdesk-api
environment:
- TZ=Asia/Shanghai
- RUSTDESK_API_LANG=zh-CN
- RUSTDESK_API_RUSTDESK_ID_SERVER=hbbs:21116
- RUSTDESK_API_RUSTDESK_RELAY_SERVER=hbbr:21117
- RUSTDESK_API_RUSTDESK_API_SERVER=http://122.152.219.191:21114
- RUSTDESK_API_RUSTDESK_KEY=abc123456
ports:
- 21114:21114
image: lejianwen/rustdesk-api
volumes:
- /home/rustdesk/api:/app/data #将数据库挂载出来方便备份
#- /home/rustdesk/server:/app/conf/data #挂载key文件到api容器,可以不用使用 RUSTDESK_API_RUSTDESK_KEY
networks:
- rustdesk-net
restart: unless-stopped
depends_on:
- hbbs
- hbbr
保存后,使用docker-compose up -d起动服务
查看运行状态与管理员密码
启动服务后,输入docker-compose logs查看服务输出日志,如下图所示则成功运行,日志中会输出API服务器管理员临时密码。

此时访问http://<服务器IP地址>[:port]/_admin/ 可进入管理后台

此时项目部署就已彻底完成,按第五节配置软件即可进行远程链接!
腾讯云锐驰型轻量服务器搭建开源远程桌面软件RustDesk中继服务器小记的更多相关文章
- 腾讯云:基于 Ubuntu 搭建 VNC 远程桌面服务
基于 Ubuntu 搭建 VNC 远程桌面服务 前言 任务时间:5min ~ 10min 必要知识 本教程假设您已学习以下 Ubuntu 基本操作: 连接 SSH 执行命令 编辑文件 如果还没有掌握 ...
- 【转】搭建和配置Syncthing发现和中继服务器
搭建和配置Syncthing发现和中继服务器 折腾借口 Syncthing好是挺好的,但就是同步不给力,公共网络服务其质量参差不齐,网络也说不清.最好的解决方案还是自己搭建发现服务器Synct ...
- 多服务器 vps 管理方法,十款远程桌面软件测评分析
作为运维工作者,从几年前巨大的工作量到如今有了极大的改善,这些年试用的远程桌面管理软件不在少数. 远程桌面是微软公司为了方便网络管理员管理维护服务器而推出的一项服务.从windows 2000 ser ...
- 在没有安装终端服务的Windows 2012 R2服务器上配置远程桌面的属性
在没有安装终端服务的Windows2012 R2服务器上配置远程桌面的属性. 从Windows 2012开始,如果没有在服务器上启用终端服务的计算机,要想配置远程桌面使用更安全加密的RDP连接就 ...
- 阿里云轻量应用服务器——配置MySQL远程连接(踩坑,LAMP+CentOS)
说在前面 本文讲解清晰,从0开始 如不能用Navicat等数据库软件远程登陆,请先检查:安全>防火墙中 是否添加了MYSQL的3306端口(ECS服务器请检查 安全组)如未添加,先点右上角“添加 ...
- 轻量高效的开源JavaScript插件和库 【转】
图片 布局 轮播图 弹出层 音频视频 编辑器 字符串 表单 存储 动画 时间 其它 加载器 构建工具 测试 包管理器 CDN 图片 baguetteBox.js - 是一个简单易用的响应式图像灯箱效果 ...
- 两台装有Ubuntu系统的服务器搭建VPN(一台为本地服务器,另一台为云服务器)
我们搭建VPN采用的是openvpn,搭建过程总体需要经过三大步骤: 1.openvpn的安装与配置 2.端口转发 3.系统重启iptables规则自动生效 注意:以下所有名令在ro ...
- Docsify+腾讯云对象存储 COS,一键搭建云上静态博客
最近一直在想如何利用 COS 简化静态博客的搭建过程.搜了很多的静态博客搭建过程,发现大部分的静态博客都要通过编译才能生成静态页面.功夫不负有心人,终于让我找到了一个超简洁博客的搭建方法. 效果预览 ...
- 2016年31款轻量高效的开源JavaScript插件和库
目前有很多网站设计师和开发者喜欢使用由JavaScript开发的插件和库,但同时面临一个苦恼的问题:它们中的大多数实在是太累赘而且常常降低网站的性能.其实,其中也有不少轻量级的插件和库,它们不仅轻巧有 ...
- 2016年31款轻量高效的开源 JavaScript 插件和库
目前有很多网站设计师和开发者喜欢使用由JavaScript开发的插件和库,但同时面临一个苦恼的问题:它们中的大多数实在是太累赘而且常常降低网站的性能.其实,其中也有不少轻量级的插件和库,它们不仅轻巧有 ...
随机推荐
- Qt编写的项目作品37-安卓综合应用示例
一.功能特点 封装了通用的Qt安卓组件,打通了常规与java交互机制. 动态切换横屏竖屏及获取当前横屏竖屏状态. 支持手机震动.拨打电话.发送短信. 支持moketoast临时消息.notify顶部任 ...
- Qt音视频开发40-人脸识别离线版
一.前言 上一篇文章写了在线调用人脸识别api进行处理,其实很多的客户需求是要求离线使用的,尤其是一些事业单位,严禁这些刷脸数据外泄上传到服务器,尽管各个厂家号称严格保密这些数据,但要阻止这些担心,唯 ...
- Qt音视频开发13-mpv录像存储
一.前言 用mpv来做录像存储,保存视频文件,从来都没有如此的方便,直接设置属性stream-record对应的文件路径即可,我的乖乖,一行代码,如此精简美丽大方,搞得我都不敢相信自己的眼睛,mpv除 ...
- Ubuntu 装卸Opencv
buntu中卸载opencv的方法: 1.打开ubuntu: 2.找到当初安装opencv的build目录,进入该build目录执行卸载操作: 3.通过rm命令清理/usr中所有opencv相关项即可 ...
- [转]OpenLayer4地图全屏的实现
第一种方式:自实现 1.首先将地图容器的长宽设置成100%. 2.对form 和body标签长宽设置成100%. 3.对浏览器进行全屏设置. 具体代码如下所示(fullextent 为全屏安全ID.) ...
- 某苏人社异步JS逆向加解密分析(sm2+sm3+sm4)
前期准备 网址:aHR0cHM6Ly9ycy5qc2hyc3MuamlhbmdzdS5nb3YuY24vaW5kZXgv 目标: 接口请求内容加密和响应内容解密 请求头加密参数 Web-Encrypt ...
- [.NET] API网关选择:YARP还是Ocelot?
API网关选择:YARP还是Ocelot? 摘要 随着微服务架构的流行,API网关在系统架构中扮演着越来越重要的角色.在.NET生态中,YARP(Yet Another Reverse Proxy)和 ...
- C++ STL学习笔记-C++ STL基础
仅自己回忆使用,若有侵权,联系删除 algorithm实用库函数 sort:迭代器类型必须为随机访问迭代器(first,last),应该支持< 运算符,可以自己写比较 nth_element() ...
- Linux系统设置用户密码规则(复杂密码策略)方法
Linux系统下的用户密码的有效期 可以修改密码可以通过login.defs文件控制.设置密码过期期限(默认情况下,用户的密码永不过期.) 编辑 /etc/login.defs 文件,可以设置当前密码 ...
- Docker实践:创建并运行一个自定义的Docker Image
1 目标: 创建一个自定义的Image,在该Image中,包含一个自己的Python程序,通过docker运行该Image 容器,并执行我们自己的Python程序,通过添加数据卷,在本机能够查看Pyt ...