RustDesk搭建服务器
固定IP
1.阿里云租服务器
2 核(vCPU)
2 GiB 内存
峰值带宽 2Mbps
服务器开放端口
服务器防火墙设置放行端口: 21115、21117、21118、21119 开放 TCP 21116 开放 TCP 和 UDP
| 服务 | 端口 | 协议 | 用途 |
|---|---|---|---|
| hbbs | 21115 | TCP | NAT 类型测试 |
| hbbs | 21116 | TCP/UDP | ID 注册、心跳、TCP 打洞与连接 |
| hbbr | 21117 | TCP | 中继服务 |
| hbbs | 21118 | TCP | WebSocket 服务(支持网页客户端) |
| hbbr | 21119 | TCP | WebSocket 转发(支持网页客户端) |
2.购买域名
通过DnsPod,购买一年域名14元,进行域名映射
使用域名作为固定ip
下载服务器端软件
下载地址:https://github.com/rustdesk/rustdesk-server/releases
选择linux-amd64,在上面右键复制链接,然后在服务器上找一个位置使用 wget 下载(链接换成自己复制的),比如我就下载到 root 用户家目录
wget https://github.com/rustdesk/rustdesk-server/releases/download/1.1.14/rustdesk-server-linux-amd64.zip
然后使用 unzip 目录解压
unzip rustdesk-server-linux-amd64.zip
mv 命令重命名为 rustdesk1.1.14
mv amd64 rustdesk1.1.14
然后进入 rustdesk1.1.14 目录
cd rustdesk1.1.14
也可以本地网络下载后上传到服务器端,服务器端可能无法下载github文件。
使用
1.RustDesk提供了安装版的软件打包(分别下载 hbbr 和 hbbs,安装使用 sudo dpkg -i 安装包名),支持使用 systemd 服务管理
2.此处我使用的是免安装版,可以直接运行的,后期升级换版更新文件即可,使用灵活度更高。 RustDesk 服务端是两部分组成:
- hbbs:负责客户端 ID 注册、在线状态维护以及协调客户端之间建立 P2P 直连的信令服务器。
- hbbr:在 P2P 连接失败时提供数据中转服务的中继服务器。
确保当前工作路径在 RustDesk 软件包目录下
创建一个复用终端名为 rustdeskR
tmux new -s rustdeskR
执行 hbbr
./hbbr
按Ctrl+B,然后再按D退出当前复用终端(后台运行)
创建一个复用终端名为 rustdeskS
tmux new -s rustdeskS
执行 hbbs
./hbbs
然后同样操作退出复用终端,查看当前目录可以看到有个 .pub 文件,这是公钥文件,后面被控端/控制端连接这个服务器需要这个文件内容作为验证“密码”
使用cat命令查看文件内容,把内容复制下来
电脑/手机客户端
客户端下载地址:https://github.com/rustdesk/rustdesk/releases
Windows 电脑被控端建议下载 MSI 安装版,以保证可以实现开机自启动,运行后点开 ID 右侧的三点打开设置
网络设置:
点开网络,点解锁网络设置(安装版有),然后可以点击编辑ID/中继服务器,ID 服务器和中继服务器都填前面部署服务的服务器公网地址,key 就填前一步查看到的公钥内容,点确定
查看状态:
回到主页可以看到底板显示连接状态,成功连接服务器显示就绪
固定密码:
可以自行设置固定密码,以便随时连接
存在问题
对于高分辨率屏幕,需要提前设置自适应屏幕,不然卡死
同时只能有一个设备连接。
每次服务器重启或者当RuskDesk serve卡死,需要重新启动后台
画质设置AV1效果最好
没有流量统计功能
后台脚本
#!/bin/bash
# 定义 RustDesk 软件包所在的目录名
RUSTDESK_DIR="rustdesk1.1.14"
echo "--------------------------------------------------"
echo "RustDesk 服务启动脚本"
echo "--------------------------------------------------"
# 检查当前目录是否是 RustDesk 软件包目录
if [ "$(basename "$(pwd)")" != "$RUSTDESK_DIR" ]; then
echo "警告:当前目录不是 '$RUSTDESK_DIR'。"
echo "请确保你在 '$RUSTDESK_DIR' 目录下运行此脚本,或者手动进入该目录。"
read -p "是否尝试进入 '$RUSTDESK_DIR' 目录?(y/n): " choice
if [[ "$choice" =~ ^[Yy]$ ]]; then
if [ -d "$RUSTDESK_DIR" ]; then
echo "尝试进入 '$RUSTDESK_DIR'..."
cd "$RUSTDESK_DIR" || { echo "进入目录失败,请检查目录是否存在或权限。"; exit 1; }
echo "已进入 '$RUSTDESK_DIR' 目录。"
else
echo "错误:目录 '$RUSTDESK_DIR' 不存在于当前路径下。"
echo "请手动切换到正确的 RustDesk 软件包目录后再运行此脚本。"
exit 1
fi
else
echo "用户选择不进入目录,脚本退出。"
exit 1
fi
fi
echo "当前工作目录:$(pwd)"
echo ""
# --- 启动 hbbr 服务 ---
echo "正在启动 hbbr 服务..."
echo "将创建一个名为 'rustdeskR' 的 tmux 会话。"
echo "服务启动后,请按 'Ctrl+B',然后按 'D' 将会话放到后台运行。"
sleep 2 # 稍作等待,让用户看到提示
# 检查 rustdeskR 会话是否存在,如果存在则连接,否则创建
tmux has-session -t rustdeskR 2>/dev/null
if [ $? -eq 0 ]; then
echo "tmux 会话 'rustdeskR' 已存在,正在尝试连接..."
tmux attach-session -t rustdeskR
else
echo "创建新的 tmux 会话 'rustdeskR' 并运行 ./hbbr..."
tmux new -s rustdeskR "./hbbr"
fi
echo ""
echo "hbbr 服务已启动或已连接会话。请按 Ctrl+B, D 分离会话。"
echo "--------------------------------------------------"
# --- 启动 hbbs 服务 ---
echo "正在启动 hbbs 服务..."
echo "将创建一个名为 'rustdeskS' 的 tmux 会话。"
echo "服务启动后,请按 'Ctrl+B',然后按 'D' 将会话放到后台运行。"
sleep 2 # 稍作等待,让用户看到提示
# 检查 rustdeskS 会话是否存在,如果存在则连接,否则创建
tmux has-session -t rustdeskS 2>/dev/null
if [ $? -eq 0 ]; then
echo "tmux 会话 'rustdeskS' 已存在,正在尝试连接..."
tmux attach-session -t rustdeskS
else
echo "创建新的 tmux 会话 'rustdeskS' 并运行 ./hbbs..."
tmux new -s rustdeskS "./hbbs"
fi
echo ""
echo "hbbs 服务已启动或已连接会话。请按 Ctrl+B, D 分离会话。"
echo "--------------------------------------------------"
echo "所有服务启动完成。你可以使用 'tmux attach -t rustdeskR' 或 'tmux attach -t rustdeskS' 重新连接会话。"
echo "使用 'tmux ls' 可以查看所有 tmux 会话。"
画质编码
| 编码格式 | 编码效率 (相对H.264) | 传输画质 (相同码率下) | 兼容性/普及度 | 授权费用 | 主要应用场景 |
|---|---|---|---|---|---|
| H.264 | 基准 (1x) | 良好 | 极高 | 有 | 几乎所有视频应用,直播,会议 |
| VP8 | 略低于H.264 | 一般 | 较低 (WebM) | 免费 | WebM (逐渐被VP9取代) |
| VP9 | 1.3x - 2x | 优秀 | 高 (WebM) | 免费 | YouTube, Netflix高清/4K流媒体 |
| H.265 | 1.5x - 2x | 极佳 | 中高 | 有 (复杂) | 4K/8K UHD内容,部分OTT流媒体 |
| AV1 | 2x - 3x | 最佳 | 正在提升 | 免费 | 下一代Web视频,低带宽高画质场景 |
从传输画质的角度看,AV1 > H.265 > VP9 > H.264 > VP8。越靠前的编码格式,在相同带宽下能提供越好的视觉体验,或在相同视觉体验下所需带宽越低。
流量统计
vnstat vnstat是个Linux下基于shell终端的网络流量监控工具,可帮助用户在不同时间段内监视,记录和查看网络统计信息。它提供了各种网络接口的汇总,允许用户以详细表或命令行统计视图的形式查看小时,每日,每月统计。
vnstat安装
sudo apt update
sudo apt install vnstat
sudo systemctl start vnstat
sudo systemctl enable vnstat
systemctl status vnstat
常见问题
安装后要等一段时间累积数据,使用vnstat探查才会有数据,否则会提示eth0: Not enough data available yet
vnstat统计的是从系统启动开始的流量数据,如果统计过程中有系统重启,统计数据可能会被重置。
统计查看
查看实时流量统计
vnstat -l
查看指定网络接口的实时流量统计
vnstat -l -i eth0
按小时查看
vnstat -h
按天查看
vnstat -d
按月查看
vnstat -m
输出项说明
rx Receive接收流量
tx Transmit发送流量
total 总流量,rx + tx
avg.rate 平均速率,可以用于评估带宽占用。是基于实际数据传输期间的平均速率,不包括没有流量的时间段。如果基于全天总流量除以天,会算出较低的平均值(相当于流量全天均匀分布),不能体现出峰值数据。
图表生成
vnstati是vnstat的一个附属工具,专门用于生成基于流量统计数据的PNG图表
vnstati安装
sudo apt update
sudo apt install vnstati
生成每日流量图表
sudo vnstati -d -i eth0 -o ./daily.png