一、RustDesk简介

RustDesk是一款开源的远程桌面软件,支持Windows、macOS、Linux、Android、iOS等全平台。相比于市面上常见的向日葵、TeamViewer等商业软件,自建RustDesk服务器有以下优势:

  • 数据完全自主掌控:所有连接数据都经过自己的服务器,不必担心隐私泄露
  • 更低的延迟:中继服务器部署在本地NAS上,局域网内连接几乎无延迟
  • 完全免费:自建服务没有任何功能限制或收费门槛

本教程将详细讲解如何在绿联NAS上通过Docker部署RustDesk自建服务器,并配置客户端实现远程控制。

二、准备工作

在开始部署之前,请确认以下条件:

2.1 硬件与环境要求

  • 绿联NAS:已正常联网并配置完成(支持UGOS Pro系统)
  • 公网IP或域名:如需在外网使用,需要有动态公网IP或已解析的域名(经测试IPv6暂未验证,建议使用IPv4)
  • 充足存储空间:Docker镜像与数据文件占用空间很小,约几十MB

2.2 DNS与端口准备

  • 准备一个已正确解析到NAS公网IP的域名(如 rustdesk.example.com
  • 如果使用DDNS,需要在路由器或NAS上配置DDNS服务
  • 如果只有局域网使用场景,则不需要公网IP和域名,直接用NAS内网IP即可

端口说明:RustDesk需要开放5个关键端口,需在路由器和NAS层面都确保畅通:

端口协议用途
21115TCPNAT类型检测
21116TCP + UDPID注册与心跳服务(必须同时开放TCP和UDP)
21117TCP中继服务器(中继模式使用)
21118TCPWeb客户端支持(如不需要Web端可不开放)
21119TCPWeb客户端支持(如不需要Web端可不开放)

如果希望只支持P2P直连,不启用中继模式,最低只需要开放 21116 端口(同时TCP+UDP)即可。

三、开启绿联NAS的Docker功能

绿联UGOS Pro系统默认未开启Docker,需要手动安装:

  1. 登录绿联NAS管理界面
  2. 打开桌面上的 应用中心
  3. 搜索 Docker 应用
  4. 点击 安装 按钮,等待安装完成
  5. 安装完成后,首次打开Docker应用,系统会自动在文件管理器的共享文件夹中创建 docker 目录

安装成功后,桌面上会出现Docker图标,后续部署都将在Docker管理界面中完成。

四、部署RustDesk服务器(两种方案)

RustDesk提供两种Docker镜像方案:

  • 一体式镜像 rustdesk/rustdesk-server-s6:latest(推荐):一个容器同时运行 hbbs 和 hbbr 两个服务
  • 分离式镜像 rustdesk/rustdesk-server:latest:需要分别创建 hbbs 和 hbbr 两个容器

对于绿联NAS用户,强烈推荐使用 一体式S6镜像,配置更简单,一份配置文件即可完成部署。

术语说明:hbbs 是信令服务器(负责P2P打洞与连接协商),hbbr 是中继服务器(在无法直连时转发流量)。

方案一:使用Docker图形化界面部署(推荐新手)

这是绿联NAS上最简单快捷的方式,全程在图形界面中完成。

第一步:拉取镜像

  1. 打开Docker应用
  2. 进入 镜像管理镜像仓库
  3. 搜索 rustdesk/rustdesk-server-s6
  4. 点击 拉取镜像,标签选择 latest

第二步:创建并配置容器

镜像拉取完成后,点击 创建容器,按以下配置进行:

  1. 基础设置

    • 重启策略选择 always(或 unless-stopped),确保NAS重启后服务自动恢复
  2. 网络设置

    • 选择 host 模式
    说明:使用 host 模式,容器会直接使用NAS主机的网络栈,端口会自动暴露,无需单独配置端口映射。如果使用 host 模式,P2P直连功能工作更稳定。不使用host模式时也可通过手动端口映射部署,但P2P直连可能受影响。
  3. 存储空间

    • 点击 添加卷
    • 本地路径:选择 /docker/rustdesk/data(如不存在需提前在文件管理器中创建此文件夹)
    • 容器路径:填写 /data
    • 权限设置为可读写
  4. 环境变量

    • 点击 添加环境变量,设置以下两项:

      • RELAY:设置为你的域名或公网IP,如 rustdesk.example.com:21117
      • ENCRYPTED_ONLY:设置为 1(启用仅加密模式,即使中继地址泄露,没有密钥也无法使用你的服务)
  5. 点击 下一步完成,启动容器

方案二:使用docker-compose部署(推荐进阶用户)

docker-compose 方式便于配置迁移和版本管理,适合需要灵活维护的用户。

第一步:准备工作

  1. 在NAS文件管理器中,进入 /docker 目录
  2. 创建 rustdesk 文件夹
  3. 在该文件夹内创建 docker-compose.yml 文件

第二步:编写docker-compose.yml

services:
  rustdesk:
    container_name: rustdesk
    image: rustdesk/rustdesk-server-s6:latest
    restart: unless-stopped
    ports:
      - "21115:21115"
      - "21116:21116"
      - "21116:21116/udp"
      - "21117:21117"
      # - "21118:21118"   # 如需Web客户端支持,取消注释
      # - "21119:21119"   # 如需Web客户端支持,取消注释
    volumes:
      - ./data:/data
    environment:
      - RELAY=你的域名或公网IP:21117   # 中继服务器地址
      - ENCRYPTED_ONLY=1               # 启用加密模式

上述配置表示将容器的 2111521116(TCP+UDP)、21117 端口映射到NAS主机的相同端口。

第三步:部署启动

  1. 进入Docker应用 → 项目 管理界面
  2. 点击 创建项目
  3. 名称填写 rustdesk,路径选择刚才创建的 /docker/rustdesk 目录
  4. 选择使用已有的 docker-compose.yml 文件
  5. 点击 完成,系统会自动拉取镜像并启动容器
避坑提示:如果使用 host 网络模式(network_mode: host),则不需要 ports 映射部分。但在绿联NAS的Docker图形化界面上使用 compose 功能时,有些版本对 host 模式的兼容性不完美,实测使用端口映射模式同样能正常工作,因此这里选用 ports 方式而非 host 模式,稳定性更好。

五、获取服务器密钥

部署成功后,需要取出密钥,客户端连接时会用到:

  1. 打开Docker应用 → 容器管理,找到 rustdesk 容器并确认其处于运行状态
  2. 在文件管理器中,进入 /docker/rustdesk/data 目录
  3. 找到 id_ed25519.pub 文件(公钥文件)
  4. 用文本编辑器打开,复制文件内的全部内容(整行字符串)
  5. 妥善保存,后续配置客户端时需要用到
如果需要更换密钥,删除 data 目录下的 id_ed25519id_ed25519.pub 两个文件,重启容器即可重新生成。

六、配置端口转发(用于外网访问)

如果需要在外网(不在同一局域网内)使用RustDesk,必须配置路由器端口转发:

  1. 登录路由器管理后台
  2. 找到 端口转发(Port Forwarding)/ 虚拟服务器 设置
  3. 添加以下转发规则(目标IP填写NAS的内网IP地址):
外部端口内部端口协议NAS内网IP
2111521115TCP192.168.x.x
2111621116TCP192.168.x.x
2111621116UDP192.168.x.x
2111721117TCP192.168.x.x
  1. 保存并应用设置
注意:如果使用了 host 网络模式的S6镜像,端口直接绑定在NAS主机上,路由器只需将端口转发到NAS的内网IP即可。如果使用非 host 模式+S6镜像,端口映射已在Docker层面完成,路由器转发规则同上。

七、客户端配置

7.1 下载客户端

从 RustDesk 官网(https://rustdesk.com/zh-cn/)下载对应操作系统版本的客户端:

  • Windows:下载 .exe 安装包
  • macOS:下载 .dmg 安装包
  • Linux:下载 .deb / .rpm / AppImage
  • 移动端:从官方应用商店搜索 RustDesk

7.2 配置服务器连接

以Windows客户端为例,按以下步骤操作:

  1. 安装并打开 RustDesk
  2. 点击右上角的 菜单图标,进入 设置
  3. 切换到 网络 选项卡
  4. ID/中继服务器 区域,填写以下三项:

    • ID服务器:填写你的NAS域名或公网IP,端口为 21116
    • 中继服务器:填写你的NAS域名或公网IP,端口为 21117
    • Key:填写第五步中获取的服务器密钥(id_ed25519.pub 文件的全部内容)

    格式示例

    • ID服务器:rustdesk.example.com:21116123.456.789.0:21116
    • 中继服务器:rustdesk.example.com:21117123.456.789.0:21117
  5. 点击 应用 保存配置

7.3 测试远程连接

  1. 在受控端设备上打开 RustDesk,记录显示的 ID密码
  2. 在主控端设备的 RustDesk 中输入对方的ID,点击 连接
  3. 输入受控端显示的密码,即可开始远程控制
如果希望不必每次输入密码,可以在受控端设置 固定密码:设置 → 安全 → 启用永久密码。

八、扩展方案:使用Tailscale实现无公网IP外网访问

如果您的NAS没有公网IP,无法直接配置端口转发,可以借助Tailscale将所有设备组成虚拟局域网(VPN),将绿联云作为RustDesk的中继服务器。

8.1 部署Tailscale

  1. 在绿联NAS的Docker中拉取镜像:tailscale/tailscale:latest
  2. 创建容器,关键配置:

    • 网络模式:host
    • 权限:启用 特权模式(privileged)
    • 存储卷:/docker/tailscale/var/lib/tailscale
    • 启动命令填写:tailscaled
  3. 在容器终端中执行 tailscale up,登录自己的Tailscale账号

8.2 Tailscale下配置RustDesk客户端

在每台设备上安装Tailscale客户端,登录同一个账号后,所有设备会获得100.x.x.x的虚拟IP:

  • ID服务器:绿联NAS的Tailscale虚拟IP(如 100.64.0.1),端口 21116
  • 中继服务器:同上,端口 21117
  • Key:即第五步中获取的服务器密钥

这样所有设备通过Tailscale虚拟IP相互通信,无需公网IP,也无需配置路由器端口转发。适合没有公网IP的家庭宽带环境。

九、常见问题与排查方法

Q1:容器启动后,客户端无法连接

可能原因

  1. 路由器端口转发未正确配置,或端口被运营商阻断
  2. 防火墙拦截了相关端口
  3. ID/中继服务器的域名或IP填写错误

解决方法

  • 检查所有端口转发规则(21115-21117,注意21116同时包含TCP和UDP)。
  • 在路由器上确认端口对公网开放,在内网先用NAS内网IP进行测试——如果内网可以连接而外网无法连接,问题出在端口转发或公网IP可达性上。
  • 检查客户端填写的ID服务器地址是否与 RELAY 环境变量中的域名一致。
  • ENCRYPTED_ONLY=1 但Key填写错误,也会导致连接失败——仔细核对Key有无多余空格或换行。

Q2:容器启动失败,提示端口冲突

如果提示 bind: address already in use,表示211xx端口已被NAS上的其他服务占用。

解决方法

  • 检查NAS是否有其他应用正在使用这些端口。
  • 如无法解决,可将Docker映射端口改为其他可用端口(例如将主机的 21115 映射到容器的 21115 改为 31115:21115),然后相应地调整路由器的端口转发规则。

Q3:远程连接延迟较高

  • 如果设备之间处于同一局域网内,可以直连NAS进行P2P传输,延迟极低。
  • 如果通过外网中继模式连接,延迟取决于NAS的上传带宽和对方设备的下行带宽,带宽受限时延迟和画质都会受影响。
  • 对于同城或同运营商的场景,P2P打洞成功率较高;跨运营商场景下大概率会走中继,因此NAS的上行带宽直接决定了远程体验

Q4:跨平台文件传输问题

RustDesk支持远程桌面中的文件传输功能。如果在传输大文件时频繁中断,通常与中继服务器带宽有关(走中继时所有数据都经过NAS),注意NAS的上行带宽不宜过高并发占用。

Q5:如何确认服务是否正常运行?

在NAS上执行以下命令(需开启SSH)检查端口监听状态:

  • netstat -tulnp | grep 21116
  • docker logs rustdesk(查看容器日志)

如果看到预期的端口处于 LISTEN 状态,说明服务正常启动。

十、附录

注意:在NAS上执行SSH命令或修改系统配置有损坏文件系统的风险,非熟练用户请谨慎操作,或仅在指导下进行。

10.1 如何开启绿联NAS的SSH功能

  1. 登录NAS Web管理界面 → 控制面板终端机SSH服务
  2. 勾选“启用SSH服务”,端口保持默认的 22 或自行设置其他端口
  3. 点击 应用 使设置生效

10.2 Web客户端使用说明

如果部署时开放了 2111821119 端口,可以通过浏览器访问 Web 客户端控制远程设备(无需安装软件)。需要配置反向代理(如NginxProxyManager)将这两个端口映射到标准443端口才能支持HTTPS访问。

10.3 相关资源链接


通过以上步骤,您已成功在绿联NAS上搭建了属于自己的RustDesk远程控制服务器。从此告别第三方远程软件的限制与收费,享受完全自主可控的远程访问体验。

标签: RustDesk, 远程控制

添加新评论