自建远程桌面服务RustDesk保姆级教程📚

远程桌面软件RustDesk 是目前市面上仅有的开源远程桌面服务,本教程实现了保姆级的部署方案,通过Go语言构建了RustDesk API,并包含了Web Admin 和 Web客户端功能。

建议 点赞🔥收藏🔥转发🔥一键三连🔥 😏😏😏

目录

关键词

❓RustDesk是如何工作的?

RustDesk的工作原理很简单,通过客户端ID注册、优先P2P直连、失败后使用中继传输以及端到端加密这几个步骤,实现了安全、高效且可控的远程桌面连接。具体流程可以参考下图:

端口要求

服务器上有两个可执行文件:

  • hbbs - RustDesk ID服务器,监听 TCP(21114
  • hbbr - RustDesk 中继服务器,监听 TCP(2111721119 用于 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个为例):

shell
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存储库:

shell
# 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 update

2️⃣ 安装最新的Docker包:

shell
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

3️⃣ 验证是否安装成功:

此命令下载测试映像并在容器中运行。容器运行时,它会打印一条确认消息并退出。

shell
sudo docker run hello-world

如果失败了也不要紧,请看下一步。

设置Docker proxy

由于我们不可直接访问Docker服务,所以需要设置Docker的代理地址。

👉 编辑daemon.json文件

shell
sudo nano /etc/docker/daemon.json

👉 添加代理配置

shell
{
  "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
json
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镜像

  • 抓取镜像
shell
sudo docker compose -f $yourlocation/rustdesk_docker-composer.yml pull
  • 启动镜像
shell
sudo docker compose -f $yourlocation/rustdesk_docker-composer.yml up -d

🔐后台管理

现在我们可以通过 http://localhost:21114访问API后台,默认管理员用户名为:admin

通过容器日志获取管理员密码,自己查看日志往下翻,找到如下图的内容就是密码

shell
sudo docker logs rustdesk-rustdesk-1

登录之后可以修改用户名和密码:

🌠Nginx反向代理

默认本地可以通过 http://localhost:21114 访问API的后台,如果需要公网访问的话,需要配置Nginx反向代理。

rustdesk_Nginx_conf
shell
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的信息,并记录:

shell
sudo docker logs rustdesk-rustdesk-1

下载客户端

去官网下载对应设备的客户端,以Windows为例:

下载地址:https://github.com/rustdesk/rustdesk/releases

控制端和受控端都需要安装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是真快啊!

面向Codex编程
面向Cursor编程