news 2026/5/25 20:15:01

树莓派4B家庭服务器实战:用RustDesk打造跨平台远程控制中心

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
树莓派4B家庭服务器实战:用RustDesk打造跨平台远程控制中心

1. 为什么选择树莓派4B搭建远程控制中心?

最近几年,我发现身边越来越多的技术爱好者开始用树莓派搭建家庭服务器。我自己从树莓派3B+升级到4B后,最明显的感受就是性能提升带来的各种可能性。特别是当你需要远程管理家里多台设备时,树莓派4B的千兆网口和USB3.0接口简直就是为这个场景量身定制的。

说到远程控制,很多人第一反应可能是TeamViewer或者向日葵这类商业软件。但实际用下来,我发现它们在内网环境下的表现实在差强人意。有次我想用Windows电脑控制客厅的Mac mini,画面卡顿得就像在看PPT。后来尝试了开源的RustDesk,配合树莓派4B作为服务器,延迟直接降到了个位数毫秒,操作流畅度堪比本地使用。

树莓派4B作为家庭服务器的优势主要体现在三个方面:首先是功耗极低,7*24小时运行电费几乎可以忽略不计;其次是体积小巧,随便找个角落就能安置;最重要的是它的性能足够应对家庭网络环境下的各种服务需求。我实测下来,一台树莓派4B同时运行RustDesk服务器、文件共享和媒体服务都毫无压力。

2. 准备工作:系统配置与网络环境

2.1 选择合适的操作系统

给树莓派4B装系统就像给电脑装Windows一样简单。我个人推荐使用官方的Raspberry Pi OS Lite版本,因为这个版本没有图形界面,资源占用更少。安装过程只需要用官方的Imager工具把系统镜像烧录到SD卡就行。记得第一次启动时要先运行sudo raspi-config命令,把文件系统扩展到整个SD卡,这样才不会浪费存储空间。

网络配置是重中之重。建议给树莓派分配固定IP地址,这样后续配置会方便很多。在我的路由器管理页面,我把192.168.1.100这个IP地址通过MAC地址绑定分配给了树莓派。如果你不知道怎么操作,也可以在树莓派上直接修改dhcpcd.conf文件:

sudo nano /etc/dhcpcd.conf

然后在文件末尾添加:

interface eth0 static ip_address=192.168.1.100/24 static routers=192.168.1.1 static domain_name_servers=192.168.1.1

2.2 基础环境配置

系统装好后,有几项基础配置是必须做的。首先是换源,国内用户建议使用清华或阿里云的镜像源,更新软件速度会快很多。执行以下命令更换源:

sudo sed -i 's|raspbian.raspberrypi.org|mirrors.tuna.tsinghua.edu.cn/raspbian|g' /etc/apt/sources.list sudo sed -i 's|archive.raspberrypi.org|mirrors.tuna.tsinghua.edu.cn/raspberrypi|g' /etc/apt/sources.list.d/raspi.list

更新完系统后,建议安装Docker和Docker Compose,因为我们将使用容器化方式部署RustDesk服务。安装命令如下:

curl -fsSL https://get.docker.com | sh sudo usermod -aG docker pi sudo apt install docker-compose-plugin

这些准备工作完成后,我们的树莓派就已经具备了运行RustDesk服务器的所有条件。

3. 部署RustDesk服务器

3.1 Docker Compose配置详解

RustDesk的服务器端由两个组件组成:hbbs(信令服务器)和hbbr(中继服务器)。用Docker部署是最方便的方式,不需要操心各种依赖问题。首先创建必要的目录结构:

mkdir -p /opt/rustdesk/{config,data} chmod -R 755 /opt/rustdesk

然后创建docker-compose.yml文件:

version: '3' services: hbbs: image: rustdesk/rustdesk-server:latest container_name: hbbs command: hbbs -r rustdesk.example.com:21117 volumes: - /opt/rustdesk/data:/root - /opt/rustdesk/config:/config ports: - "21115:21115" - "21116:21116" - "21116:21116/udp" - "21118:21118" restart: unless-stopped hbbr: image: rustdesk/rustdesk-server:latest container_name: hbbr command: hbbr volumes: - /opt/rustdesk/data:/root - /opt/rustdesk/config:/config ports: - "21117:21117" - "21119:21119" restart: unless-stopped

这个配置有几个关键点需要注意:-r参数后面要填写你的公网域名或IP地址加上21117端口,这是hbbr服务的端口。如果你暂时没有公网IP,可以先随便填一个,等后面配置frp时再修改。

启动服务只需要执行:

docker compose up -d

3.2 客户端配置技巧

服务端运行起来后,需要在所有需要远程控制的设备上安装RustDesk客户端。客户端下载地址在GitHub Releases页面。安装完成后,最关键的一步是配置ID服务器。

在客户端设置界面的网络选项卡中,将ID服务器地址填写为你的树莓派内网IP(比如192.168.1.100)。这样当控制端和被控端都在同一个局域网时,所有流量都会直接走内网,延迟可以低至5ms以内。

我发现在Windows控制macOS时,默认的画面质量设置可能不够理想。建议在客户端设置中将编码器改为"自动",画质设为"平衡"。如果网络条件特别好,可以尝试开启"直接连接"选项,这样能进一步降低延迟。

4. 内网穿透与外网访问

4.1 使用FRP实现端口映射

虽然内网使用体验已经很完美,但有时候我们需要从外部网络访问家里的设备。这时候就需要用到内网穿透工具。我个人比较推荐FRP,配置起来相对简单。

首先需要在有公网IP的服务器上安装FRP服务端。然后在树莓派的FRP客户端配置中添加以下内容:

[rustdesk-tcp-21115] type = tcp local_ip = 127.0.0.1 local_port = 21115 remote_port = 21115 [rustdesk-tcp-21116] type = tcp local_ip = 127.0.0.1 local_port = 21116 remote_port = 21116 [rustdesk-udp-21116] type = udp local_ip = 127.0.0.1 local_port = 21116 remote_port = 21116 [rustdesk-tcp-21117] type = tcp local_ip = 127.0.0.1 local_port = 21117 remote_port = 21117 [rustdesk-tcp-21118] type = tcp local_ip = 127.0.0.1 local_port = 21118 remote_port = 21118 [rustdesk-tcp-21119] type = tcp local_ip = 127.0.0.1 local_port = 21119 remote_port = 21119

配置完成后,外网设备访问时只需要将ID服务器地址改为你的公网服务器IP即可。RustDesk很智能的一点是,即使两端都配置了公网IP,只要它们实际上处于同一个内网,流量还是会自动走内网通道。

4.2 安全加固建议

把服务暴露到公网就不得不考虑安全问题。我有几个实践经验分享:首先,修改默认的21115-21119端口范围,使用非常用端口能减少被扫描的概率;其次,定期检查/opt/rustdesk/data目录下的日志文件;最后,考虑在FRP服务端配置白名单,只允许特定IP访问这些端口。

对于更高安全要求的场景,可以在RustDesk服务端启用加密功能。这需要在启动hbbs时添加-k _参数,然后在客户端设置中输入相同的密钥。这样所有传输的数据都会经过加密,安全性更有保障。

5. 实战经验与疑难解答

5.1 多平台控制技巧

经过几个月的使用,我发现RustDesk在不同平台上的表现有些差异。Windows作为控制端时体验最好,几乎可以完美控制任何其他系统。而用macOS控制Windows时,有时会遇到剪贴板同步不稳定的问题。解决方案是在被控端的Windows设置中,手动勾选"共享剪贴板"选项。

Linux平台有个特殊技巧:如果被控设备是Linux,建议先安装x11vnc作为后备方案。因为有时候Linux桌面环境可能会崩溃,导致RustDesk无法连接。这时候通过x11vnc仍然可以获取桌面访问权限。

5.2 常见问题排查

遇到连接问题时,我通常按照以下步骤排查:首先检查树莓派上的Docker容器是否正常运行;然后确认客户端配置的ID服务器地址是否正确;接着查看端口是否开放(可以用telnet IP 端口测试);最后检查两端设备的防火墙设置。

有个特别容易忽略的问题是NAT环回。有些路由器不支持从内网通过公网IP访问内网服务。这种情况下,要么升级路由器固件,要么在内网使用时直接使用内网IP访问。

说到硬件配置,树莓派4B的散热是需要特别注意的。长时间运行RustDesk服务时,建议加装散热风扇或散热片。我实测发现,温度超过80度后,网络吞吐性能会明显下降。可以在树莓派上运行vcgencmd measure_temp随时监控温度。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/4 19:30:40

LeRobot机械臂USB端口绑定终极指南:解决Linux下ttyACM设备号随机变动问题

LeRobot机械臂USB端口绑定终极指南:解决Linux下ttyACM设备号随机变动问题 在机器人开发领域,设备连接的稳定性往往决定了整个项目的成败。想象一下这样的场景:你花费数小时精心调试的机械臂程序,仅仅因为一次USB接口的重新插拔就完…

作者头像 李华
网站建设 2026/4/1 9:17:45

别再只会调滤镜了!用Python的OpenCV和PIL库,手把手教你玩转伽马、亮度、对比度(附完整代码)

用Python解锁专业级图像处理:从原理到实战的伽马、亮度、对比度调整指南 每次看到别人分享的精修照片,你是否好奇过那些惊艳效果背后的秘密?专业摄影师不会告诉你的是,大多数令人眼前一亮的图像效果,其实都建立在三个基…

作者头像 李华
网站建设 2026/4/1 9:16:38

终极DLSS状态指示器实战指南:3步搞定游戏性能监控

终极DLSS状态指示器实战指南:3步搞定游戏性能监控 【免费下载链接】dlss-swapper 项目地址: https://gitcode.com/GitHub_Trending/dl/dlss-swapper 还在为游戏中DLSS是否真正生效而困惑吗?DLSS状态指示器就是你的实时性能监控利器!D…

作者头像 李华
网站建设 2026/4/1 9:15:59

StructBERT文本相似度模型Mathtype公式嵌入文本的混合语义理解研究

StructBERT文本相似度模型Mathtype公式嵌入文本的混合语义理解研究 1. 引言 想象一下,你是一位科研人员,正在海量的学术论文库里寻找与你课题高度相关的文献。你输入的关键词可能是一段描述,比如“基于注意力机制的神经网络优化方法”&…

作者头像 李华
网站建设 2026/4/4 19:29:40

Sunshine:重构游戏体验的自托管串流解决方案

Sunshine:重构游戏体验的自托管串流解决方案 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine 问题溯源 现状诊断 当代游戏娱乐面临着设备生态碎片化与资源利用率不足的…

作者头像 李华