【开源项目】TeamViewer 替代品来了!RustDesk 自建远程桌面服务端全攻略
说起来远程桌面这事儿,我之前一直用的 TeamViewer,但最近不知道是网络问题还是咋的,连接质量越来越不稳定,有时候急着用的时候卡在那儿真的心态爆炸。正好看到 GitHub 上有个开源项目叫 RustDesk,11 万+的 Star,用 Rust 写的远程桌面软件,定位就是 TeamViewer 和 AnyDesk 的开源替代品。想着与其年年交订阅费,不如自己搭一个。
这篇文章就记录一下我是怎么在云服务器上部署 RustDesk 服务端的,整个过程不复杂,Docker 一把梭就完事儿了。
什么是 RustDesk
先简单介绍一下。RustDesk 是个开源的远程桌面软件,核心特点:
- 完全自托管:服务端自己搭,数据不经过第三方
- 跨平台:Windows、macOS、Linux、iOS、Android、Web 都支持
- 开箱即用:不需要复杂配置,下载客户端就能用
- 端到端加密:通信内容加密,安全性有保障
- 支持 NAT 穿透:能直连就直连,实在不行才走中继
它分为两部分:客户端(你远程控制的设备上安装的软件)和服务端(负责 ID 注册、协商连接、转发数据)。我们今天要部署的就是服务端。
前置准备
服务器选择
既然要 24 小时在线稳定运行,一台云服务器是少不了的。要求不高,官方文档说 1 核 CPU、512MB 内存、10GB 存储就能跑,但实际建议 2 核 2GB 起步,留点余量。系统推荐 Ubuntu 22.04 或 24.04 LTS。区域的话,选香港最好,不用搞docker镜像。
服务器厂商的话,腾讯云、阿里云、雨云这些都可以考虑,我用的是雨云,注册时邀请码填 techaser有新人折扣,看自己预算选就行。
雨云官网:https://rainyun.com
需要开放的端口
RustDesk 服务端主要用到这几个端口:
| 端口 | 协议 | 用途 |
|---|---|---|
| 21115 | TCP | ID 注册 |
| 21116 | TCP/UDP | 心跳和直连穿透 |
| 21117 | TCP | 中继转发 |
大厂的云服务器要在云服务器的安全组里把这几个端口放行,UDP 也要开,别只放 TCP。
部署服务端
服务端部署有两种方式:直接运行二进制文件,或者用 Docker。我推荐 Docker,一行命令搞定更新维护。
1. 安装 Docker
雨云的服务器比较方便,可以直接在服务器管理面板装docker。到那个“重装/安装系统和软件”里有docker可以选。
如果你是别的厂的服务器,先装一下Docker:
# 安装 Docker
curl -fsSL https://get.docker.com | bash
# 确认安装成功
docker --version
docker compose version
2. 创建目录和 docker-compose.yml
在服务器上找个地方建目录:
mkdir -p /opt/rustdesk-server/data
cd /opt/rustdesk-server
然后创建 docker-compose.yml:
version: "3.8"
services:
hbbs:
container_name: hbbs
image: rustdesk/rustdesk-server:latest
command: hbbs
volumes:
- ./data:/root
network_mode: "host"
depends_on:
- hbbr
restart: unless-stopped
hbbr:
container_name: hbbr
image: rustdesk/rustdesk-server:latest
command: hbbr
volumes:
- ./data:/root
network_mode: "host"
restart: unless-stopped
这里有个关键点:必须用 network_mode: "host",不能改成端口映射。RustDesk 的协议设计需要直接读取宿主机的网络接口信息,用 NAT 的话客户端会无法正确识别。
3. 启动服务
docker compose up -d
查看容器状态:
docker ps
确保 hbbs 和 hbbr 两个容器都在运行。如果状态不对,用 docker logs hbbs 和 docker logs hbbr 看日志排查。
4. 获取公钥
服务端启动后,会在 ./data 目录生成一对 Ed25519 密钥。我们需要把公钥拿出来,后面配置客户端要用到:
cat /opt/rustdesk-server/data/id_ed25519.pub
这会输出一行 Base64 字符串,复制下来备用。私钥 id_ed25519 留在服务器上就行,不要外泄。
5. 配置防火墙
确保云服务器的安全组放行了 21115-21117 的 TCP 和 UDP 流量。另外在服务器内部也可以用 ufw 确认一下:
sudo ufw allow 21115/tcp
sudo ufw allow 21116/tcp
sudo ufw allow 21116/udp
sudo ufw allow 21117/tcp
sudo ufw reload
配置客户端
服务端跑起来之后,就可以在各种设备上安装客户端了。
下载客户端
RustDesk 客户端下载地址:
- 官网:https://rustdesk.com/download
- GitHub Releases:https://github.com/rustdesk/rustdesk/releases
Windows、macOS、Linux 直接下载对应安装包;手机去 App Store / Google Play / F-Droid 搜 "RustDesk" 就行。
连接自建服务器
打开客户端,点击右上角的三个点菜单,选择「网络」:
- ID 服务器:填你的服务器 IP 或域名,例如
你的服务器IP:21115 - Key:粘贴刚才从服务端获取的公钥
填完点确定,客户端会自动重连。连接成功的标志是底部状态栏显示你的服务器地址,而不是官方的公共节点。
测试连接
在两台设备上分别配置同一个服务端,然后用其中一台去连接另一台的 ID。第一次连接会提示「是否信任此设备」,确认后以后就自动放行了。
实测下来,直连的话延迟很低,体验和 TeamViewer 差别不大。如果双方都在复杂网络环境下,直连失败会自动走中继,速度会慢一些但能用。
进阶配置
设置开机自启(systemd)
如果你不想用 Docker,也可以直接跑二进制文件,然后用 systemd 管理:
sudo nano /etc/systemd/system/rustdesk-hbbs.service
写入:
[Unit]
Description=RustDesk HBBS (ID Server)
After=network.target
[Service]
Type=simple
WorkingDirectory=/opt/rustdesk-bin
ExecStart=/opt/rustdesk-bin/hbbs -r 你的服务器IP:21117
Restart=on-failure
User=root
[Install]
WantedBy=multi-user.target
同理创建 rustdesk-hbbr.service,然后:
sudo systemctl daemon-reload
sudo systemctl enable rustdesk-hbbs rustdesk-hbbr
sudo systemctl start rustdesk-hbbs rustdesk-hbbr
强制使用中继
如果网络环境复杂,直连一直失败,可以在 hbbs 的启动命令里加个参数强制走中继:
hbbs:
command: hbbs -r 你的服务器IP:21117
environment:
- ALWAYS_USE_RELAY=Y
使用场景
自建 RustDesk 服务端之后,应用场景还挺多的:
- 远程办公:在家里连公司的电脑,或者反过来
- 技术支援:帮家人朋友处理电脑问题,不用跑过去
- 服务器管理:图形化操作,比纯 SSH 方便
- 家庭影院控制:用手机控制客厅的 HTPC
完全私有化之后,数据都在自己手上,不用担心第三方服务抽风或者隐私问题。
总结
RustDesk 是个认真的开源项目,代码质量不错,社区活跃度也高。服务端用 Docker 部署非常简单,几分钟就能跑起来。如果你也在找 TeamViewer 的替代方案,或者有远程控制的需求,值得试试看。
有问题欢迎评论区交流,看到会回。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐
所有评论(0)