RustDesk 自托管远程桌面部署实战
【免费下载链接】rustdeskAn open-source remote desktop application designed for self-hosting, as an alternative to TeamViewer.项目地址: https://gitcode.com/GitHub_Trending/ru/rustdesk
晚上九点,客户电脑卡死,你惯用的商业远程桌面弹出一条按席位收费的提醒。你需要的是自托管远程桌面,数据流必须攥在自己手里——RustDesk,一款支持自托管部署的开源远程桌面,让 Windows、macOS、Linux 到手机的跨平台远程桌面一次打通。
先跑起来:五分钟连通跨平台远程桌面
先别急着研究架构,把东西连上再说。去官方渠道下载对应平台的安装包,装完打开,界面会立刻生成一个专属 ID 和临时密码,这就是你的远程桌面身份。
连通就三步:两端各自启动 RustDesk → 被控端把 ID 和密码念给控制端 → 控制端填 ID、输密码、点连接。桌面立刻呈现,中间不需要任何额外配置。
这里有个坑:临时密码会定期轮换,长期用的机器建议在设置里改成固定密码,省得每次两头来回确认。客户端会自动记住连过的设备,下次点开即用,手机上能看到完整的设备列表。
🧩 搞清楚它怎么工作:自托管和商业版差在哪
| 维度 | RustDesk | 商业远程桌面 |
|---|---|---|
| 费用 | 开源免费,可自托管 | 免费额度有限,按席位收费 |
| 数据流向 | 自建时完全自控 | 默认经厂商服务器 |
| 连接路径 | 先 P2P 打洞,失败再回落中继 | 常走厂商中继 |
| 源码透明度 | 完整开源可审计 | 闭源 |
| 部署方式 | 安装包 / 包管理器 / 源码编译 | 基本只有官方客户端 |
说白了,商业方案的核心是连接必须经过厂商中继,数据流向由它说了算。RustDesk 先尝试 P2P 打洞(UDP 直接戳穿双方 NAT 建立点对点连接),打不通才回落中继,而中继可以自己搭,整条数据路径握在自己手里。服务端逻辑在 src/server/,平台抽象层在 src/platform/,想弄清底层干了什么可以直接读。
拿剪贴板举例,能看出它对流量的控制有多细——两端复制粘贴不是简单搬运,而是按连接 ID 协商格式、过滤内容:
三种安装部署方式,按场景选
如果你只是想先连上,走第一条就够了;后面两条是给你升级、定制留的后路。
图形安装包
双击或拖入即可,全部支持 64 位系统。Linux 下最省心的是 AppImage,加个执行权限就能跑:
# Linux AppImage,加执行权限即可运行 chmod +x rustdesk-x86_64.AppImage ./rustdesk-x86_64.AppImage包管理器
习惯命令行的用这个,好处是升级、卸载都有统一入口:
brew install --cask rustdesk # macOS Homebrew sudo snap install rustdesk # Linux SnapWindows 侧则交给 Chocolatey:
choco install rustdesk源码编译
官方二进制通常滞后于源码。只有当你想第一时间吃新功能、或要开hwcodec(硬件编解码)、drm这类编译特性时,才值得走这条路——否则前两条更省事。
git clone https://gitcode.com/GitHub_Trending/ru/rustdesk cd rustdesk cargo build --release产物在target/release/,拷到系统路径即可运行。
连不稳?先分清是直连、中继还是自建出了问题
RustDesk 的连接是一条降级链:直连 → 中继 → 自建。先搞清卡在哪一级,排障才不会瞎忙。
网络层要放行的端口就这几张,配防火墙或自建服务器都绕不开:
| 端口 | 协议 | 用途 |
|---|---|---|
| 21115 | TCP | NAT 类型探测 |
| 21116 | TCP + UDP | 注册、心跳、UDP 打洞 |
| 21117 | TCP | 中继转发 |
| 21118 / 21119 | TCP | Web 客户端 |
如果两端都在内网或都有公网 IP,UDP 打洞一般一次就成,拿到延迟最低的直连。如果一端卡在运营商级 NAT 后面打不通,会自动回落中继,可用性高但延迟上去。如果你连中继都不能忍,就自建 rendezvous + relay,数据从此不经过任何第三方。
几个可调参数,对齐你的真实网络再动。如果直连能成但你觉得还不够快,收紧direct-threshold(直连阈值,多少毫秒内建连算成功)给打洞更紧的窗口。如果经常卡在"连接中",把relay-timeout(中继超时,打洞失败后多久回落中继)调大一点,多给打洞一点时间。如果长连接老是掉,就调keep-alive-interval(保活间隔),让心跳更勤。
🔒 把门关上:安全加固清单
远程桌面方便你,也可能方便入侵者。下面几条不是可选项,务必逐条落地:
- 设高强度固定密码并开双重验证——不做,弱密码几秒就被爆破,随机临时密码一换你反而进不去。
- 维护访问白名单,只放行可信网段或指定 ID——不做,任何 ID 都能来你这台机器反复试探。
- 按需关掉文件传输、打印、音频等不用的能力——不做,暴露面变大,一个通道泄露就是破口。
- 给 macOS 授屏幕录制、辅助功能、输入监控三项权限——不做,画面黑屏或敲不进字,授权后要重启验证。
- 自建服务器配加密密钥并关掉多余的 IPv6 暴露——不做,流量等于裸奔,自托管的"自主"就成空话。
macOS 那一条尤其容易翻车:它的剪贴板和文件粘贴依赖观察者线程监听剪贴板,权限没给全,监听器读不到内容,粘贴直接哑掉。授权异常时可用tccutil reset ScreenCapture com.carriez.rustdesk重置后重新授权。
🩺 画面卡、声音断、粘贴失灵?对症调参数
别一卡就怀疑软件坏了,按"症状 → 排查顺序 → 对应开关"来。
画面卡、帧率低
先看是不是带宽或 CPU 顶不住:网络差就先降画质档位("反应优先"),网络好再回"画质优先";帧率上 30 帧够办公,放视频再上 60。CPU 飙高、帧率却低,优先开硬件编解码,把编码压力从 CPU 卸走。
延迟高、转圈久
多半是走了中继而非直连。按上一节的思路把直连阈值、中继超时对齐你的网络,或换更近的自建服务器,转圈时间会明显缩短。
远程复制粘贴失灵
这是跨平台协作的高频痛点。RustDesk 的剪贴板在 Windows 端靠IDataObject和IStream在两端协商格式、按连接 ID 过滤内容,整套实现在 libs/clipboard/。排查顺序:先确认两端格式能不能协商上,再看平台权限给没给全——不是软件坏,多是协商失败或权限缺位。
macOS 侧的粘贴走的是另一套线程模型,格式数据与文件内容分别回传对端:
声音断断续续
多为音频缓冲太小。调大缓冲、检查被控端音频驱动,音画不同步时再微调缓冲大小。
从 1 台到 100 台:团队部署工程化
个人装个包就完事,团队场景的差异点只有四个:静默参数、服务常驻、配置集中下发、容器化。
批量装机用静默安装,几十台几分钟铺完:
.\rustdesk-setup.exe /S让 RustDesk 以系统服务常驻,用户不登录也能被接入。Linux 下项目自带服务单元,开箱即用:
sudo cp res/rustdesk.service /etc/systemd/system/ sudo systemctl enable --now rustdesk配置集中下发是关键:把服务器地址、加密密钥、访问策略预先写进RustDesk.toml,随安装包一起分发,员工零配置即用。无头服务器场景,根目录的 Dockerfile 提供容器化基础;再挂个轻量健康检查,周期探测进程与服务器连通性,异常自动拉起,让远程运维本身可观测。
各平台配置路径收在这里:
| 平台 | 配置文件位置 |
|---|---|
| Windows | %APPDATA%\RustDesk\config\RustDesk.toml |
| macOS | ~/Library/Application Support/RustDesk/config/RustDesk.toml |
| Linux | ~/.config/RustDesk/config/RustDesk.toml |
回到开头那个九点卡死的夜晚。现在就能下载一个 RustDesk 安装包,把 ID 和密码念给同事,先连上,再把密码策略、白名单和硬件加速逐项配上——所有设备都握在自己手里,这种感觉,才是自托管该有的样子。
【免费下载链接】rustdeskAn open-source remote desktop application designed for self-hosting, as an alternative to TeamViewer.项目地址: https://gitcode.com/GitHub_Trending/ru/rustdesk
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考