PassNAT LogoPassNAT

RustDesk 中继架在自己 NAS:Docker Compose 部署与远程桌面配置

作者

小编

发布时间

Curving abstract shapes with an orange and blue gradient

项目介绍

RustDesk 是一个开源的远程桌面工具。控制端和被控端各装一个客户端,输入对方的 ID 就能连上看桌面、传文件、共用剪贴板,用起来跟常见的远控软件差不多;不一样的是,中间的「见面」和「转发」可以架在你自己的 NAS 上。

它把服务端拆成两个小容器:hbbs 是 ID 服务器,负责让两台机器互相找到、握手;hbbr 是中继,两边网络打不通的时候,画面和数据从它这里转。两个都架在自己 NAS 上,连接就不经过第三方的服务器。

项目地址:点我跳转

部署安装

只要能跑 Docker 的 NAS 都能装,下面用飞牛 NAS 演示:先用 帕斯内网穿透 把两个端口放出去,再用 Docker Compose 把服务端装上,最后在客户端里填三个格子。

一、先用帕斯内网穿透拿到两个公网地址

飞牛的「应用中心」里搜 PassNAT,装上这个穿透插件,打开它,点「创建隧道」。RustDesk 要建两条:

第一条给 ID 服务器:名字随便起(不超过 12 个字符),本地 IP 留默认的 127.0.0.1,本地端口填 21116。

第二条给中继:名字另起一个,本地端口填 21117。

两条都点开、按一下电源,状态变成运行中,详情里各有一个公网地址(形如 IP:端口),两个都记下来。

不是飞牛的系统,PassNAT 文档的「连接使用」里有其他系统的连接教程:点我跳转。

二、新建 Compose 项目

打开飞牛的「Docker」应用,切到「Compose」标签,点右上角的新增项目。项目名称填 rustdesk,路径在「我的文件」下面挑一个空文件夹。来源选「创建 docker-compose.yml」,把下面这段整个贴进去:

1services:
2 hbbs:
3 image: rustdesk/rustdesk-server:latest
4 container_name: hbbs
5 command: hbbs -r 你的中继公网地址:公网端口
6 network_mode: bridge
7 ports:
8 - "21115:21115"
9 - "21116:21116"
10 volumes:
11 - ./data:/root
12 restart: unless-stopped
13
14 hbbr:
15 image: rustdesk/rustdesk-server:latest
16 container_name: hbbr
17 command: hbbr
18 network_mode: bridge
19 ports:
20 - "21117:21117"
21 volumes:
22 - ./data:/root
23 restart: unless-stopped

hbbs 那条命令:-r 后面填第一步拿到的中继那条的公网地址,端口一起写上(形如 1.2.3.4:51234)。这一格不填,客户端连上 ID 服务器也找不到中继,画面就出不来。

端口映射两行照抄:21116 给 ID 服务器、21117 给中继,跟第一步建的两条隧道一一对应。../data 是存密钥的文件夹,挂出来,下面拿公钥要用;重新部署之前先备份它,不然密钥会变、客户端全部要重填。

勾上「创建项目后立即启动」,点确认,两个镜像下完就起来了。

三、拿公钥

第一次启动会自动生成一对密钥,放在上面挂出来的 data 目录里。打开 id_ed25519.pub,里面那一长串就是公钥,复制下来。客户端要拿它跟服务端对暗号,不填会被拒绝。

四、客户端填三个格子

两台电脑都装上 RustDesk 客户端,打开「设置」,切到「网络」,填三样:

ID 服务器:ID 服务器那条隧道的公网地址;中继服务器:中继那条隧道的公网地址;Key:刚才复制的那串公钥。两台填的必须一模一样。

填完确定,回到主界面。要连哪台,就在另一台客户端里输入它的九位 ID,点连接,第一次输一次密码(密码在主界面左边写着,可以点「改」换成自己的)。

五、连上之后

画面出来之后,顶部有「传输文件」「剪贴板」几个按钮:文件可以直接拖进去,剪贴板两边是通的,复制一段文字,那边就能粘。走中继延迟会高一点,日常用够。

几点说明

只放了 TCP。 编排里 21116 只映射了 TCP,没有放 UDP —— 两台机器打不成点对点,连接会走中继,能用但延迟高一点。想直连的话,中继那条之外再给 21116 加一条 UDP 隧道。

21115 / 21118 没放。 这两个端口是网页版客户端和判断 NAT 类型用的,只用桌面客户端可以先不开。

地址变了。 隧道删了重建、地址变了,要把编排里 hbbs 的 -r 和两台客户端的两个地址一起改掉,不然连不上。

更新。 升级之前把 data 目录备份一份;密钥换了,所有客户端都要重新填公钥。