
远程桌面软件RustDesk 是目前市面上仅有的开源远程桌面服务,本教程实现了保姆级的部署方案,通过Go语言构建了RustDesk API,并包含了Web Admin 和 Web客户端功能。
建议 点赞🔥收藏🔥转发🔥一键三连🔥 😏😏😏
目录
关键词
- RustDesk Github斩获 96.5K star!✨
- RustDesk API 基于Go语言👻构建的RustDesk API服务
❓RustDesk是如何工作的?
RustDesk的工作原理很简单,通过客户端ID注册、优先P2P直连、失败后使用中继传输以及端到端加密这几个步骤,实现了安全、高效且可控的远程桌面连接。具体流程可以参考下图:

端口要求
服务器上有两个可执行文件:
hbbs- RustDesk ID服务器,监听 TCP(21114)hbbr- RustDesk 中继服务器,监听 TCP(21117、21119用于 web socket)
所以确保在防火墙中打开这些端口:
hbbs:21114(TCP): 用于网页控制台。21115(TCP): 用于 NAT 类型测试。21116(TCP/UDP): 请注意21116应该同时为 TCP 和 UDP 启用。21116/UDP用于 ID 注册和心跳服务。21116/TCP用于 TCP 打洞和连接服务。21118(TCP): 用于支持网页客户端。
hbbr:21117(TCP): 用于中继服务。21119(TCP): 用于支持网页客户端。
打开对应的端口(以其中2个为例):
sudo ufw allow 21114/tcp
sudo ufw allow 21116/udp配置要求
RuskDesk的硬件要求很低,云服务器最低配置即可,CPU 和内存可以最低,例如1核1G,甚至更低。
关于网络规模,如果 TCP 打洞直连失败,会消耗中继流量。中继连接的流量在 30k-3M/s(1920x1080 屏幕)之间,具体取决于分辨率设置和屏幕更新。
如果仅用于办公需求,流量在 100K/s 左右。实际生产环境的硬件消耗可以参考下图:

⚓Docker部署RustDesk
Docker的安装与使用
1️⃣ 设置Docker的 apt存储库:
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# Add the repository to Apt sources:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update2️⃣ 安装最新的Docker包:
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin3️⃣ 验证是否安装成功:
此命令下载测试映像并在容器中运行。容器运行时,它会打印一条确认消息并退出。
sudo docker run hello-world如果失败了也不要紧,请看下一步。
设置Docker proxy
由于我们不可直接访问Docker服务,所以需要设置Docker的代理地址。
👉 编辑daemon.json文件
sudo nano /etc/docker/daemon.json👉 添加代理配置
{
"registry-mirrors":["https://docker.1panel.live","https://hub.littlediary.cn","https://docker.kejilion.pro","https://docker.1ms.run","https://lispy.org","https://docker.xiaogenban1993.com","https://docker.xuanyuan.me","https://docker.myb"]
}Docker的配置部分就大功告成。🙌
Docker Composer配置文件
注意: 一定要看清楚注释,然后再去修改对应的信息,否则会遇到和端口相关的各种问题。
rustdesk_docker-composer.yml
networks:
rustdesk-net:
external: false
services:
rustdesk:
ports:
- 21114:21114
- 21115:21115
- 21116:21116
- 21116:21116/udp
- 21117:21117
- 21118:21118
- 21119:21119
image: lejianwen/rustdesk-server-s6:latest
environment:
- RELAY=反代21117的域名:端口
- ENCRYPTED_ONLY=1
- MUST_LOGIN=N # 是否必须登录才能远程
- TZ=Asia/Shanghai
- RUSTDESK_API_RUSTDESK_ID_SERVER=反代21116的域名:端口
- RUSTDESK_API_RUSTDESK_RELAY_SERVER=反代21117的域名:端口
- RUSTDESK_API_RUSTDESK_API_SERVER=反代21114的域名:端口
- RUSTDESK_API_RUSTDESK_WS_HOST=反代21114的域名:端口
- RUSTDESK_API_KEY_FILE=/data/id_ed25519.pub
- RUSTDESK_API_JWT_KEY= # jwt 为空不启用
- RUSTDESK_API_JWT_EXPIRE_DURATION= # jwt 为空不启用
volumes:
- ./data/rustdesk/server:/data
- ./data/rustdesk/api:/app/data #将数据库挂载
networks:
- rustdesk-net
restart: unless-stopped拉取Docker镜像
- 抓取镜像
sudo docker compose -f $yourlocation/rustdesk_docker-composer.yml pull- 启动镜像
sudo docker compose -f $yourlocation/rustdesk_docker-composer.yml up -d🔐后台管理
现在我们可以通过 http://localhost:21114访问API后台,默认管理员用户名为:admin。
通过容器日志获取管理员密码,自己查看日志往下翻,找到如下图的内容就是密码
sudo docker logs rustdesk-rustdesk-1
登录之后可以修改用户名和密码:

🌠Nginx反向代理
默认本地可以通过 http://localhost:21114 访问API的后台,如果需要公网访问的话,需要配置Nginx反向代理。
rustdesk_Nginx_conf
server {
server_name rustdesk;
listen 443 ssl default_server; #替换为你自己的端口
listen [::]:443 ssl default_server;
ssl_certificate /etc/nginx/ssl/www.majun.fun.pem; #替换为你自己的证书
ssl_certificate_key /etc/nginx/ssl/www.majun.fun.key; #替换为你自己的证书
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://rustdesk-api:21114/; #替换为你自己的本地IP地址
}
location /ws/id {
proxy_pass http://rustdesk-server:21118;#替换为你自己的本地IP地址
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
location /ws/relay {
proxy_pass http://rustdesk-server:21119;#替换为你自己的本地IP地址
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}配置完成之后,重启Nginx,可以通过公网访问:https://www.majun.fun:3024/
🎯配置客户端
在配置客户端之前,需要获取key,查看日志找到Key的信息,并记录:
sudo docker logs rustdesk-rustdesk-1
下载客户端
去官网下载对应设备的客户端,以Windows为例:

控制端和受控端都需要安装RustDesk,双击下载的exe文件打开就是这个界面,需要点击左边的安装才能完全安装完成

配置ID/中继服务器
1️⃣点击右上角设置

2️⃣选择网络,点击解锁网络设置

3️⃣控制端和受控端都需要设置ID/中继服务器
ID服务器: 填入21116端口反代的域名不加端口
中继服务器 : 填入21117端口 反代的域名 不加端口
API服务器 : 填入21114端口 反代的域名:端口
key : 前面日志里面获取的key
‼️ 前面两个开头不要加https或http也不要加端口,切记千万不要加端口,否则连接不上,API需要加https或http
参考如下:

设置密码
1️⃣选择安全,点击解锁安全设置

2️⃣设置一个无人值守的密码

🌟使用方法
使用方法和向日葵、TeamViewer一样,知道ID和密码就能远程连接,也可以通过登录账号后同步自己的设备,设置自定义密码直接连接。

登录之后就可以看到设备了。

网页端使用
访问管理后台,可以看到所有登录的设备,点击Web Client即可通过网页访问客户端。

💖后记
随着远程工作和协作变得越来越普遍,拥有一个安全、高效、灵活的远程访问解决方案变得至关重要。
通过自建 RustDesk ID Server 和 Relay Server,我们可以获得一个量身定制的解决方案,以满足独特的需求。
有一说一,RustDesk是真快啊!
