一键部署rustdesk中继服务器及API 实现客户端登录远程设备管理等

114次阅读
5 条评论

共计 14296 个字符,预计需要花费 36 分钟才能阅读完成。

提醒:本文最后更新于 2025-09-02 15:57,文中所关联的信息可能已发生改变,请知悉!

本文内容已经失效,可以查看如下文章,学习最新部署方式!

点击访问

引言

前几期视频,鼠标讲了 RustDesk 服务器的搭建,以及客户端的编译。今天,鼠标讲下 API 服务器的搭建,该操作需要使用自定义 key,所以,咱们用 docker 一键部署,包括中继服务器及 API。

官方 API 是收费的,这次咱们用到的是 Github 大佬,开源的第三方 API 源码,可以实现 API 的基本功能,以及 Web 远控端,有条件的给大佬点个 stars,支持下!

准备工作

1. Linux 云服务器一台

在服务器控制台安全组(防火墙)放行如下端口

TCP:21114-21119
UDP:21116

如果服务器同时安装了防火墙,我们需要将防火墙完全关闭,或者放行以上端口,具体方法可自行度娘。

2. WindTerm

SSH 工具,用来连接云服务器,可以在这篇文章中下载。

安装 1Panel 服务器管理面板

因为用到 docker,图形化操作更简便一些,1Panel 这个免费开源的服务器管理面板,是个不错的选择!

1. SSH 连接服务器

2. 切换 root 用户

sudo -s

3. 运行一键安装 1Panel 脚本

# 根据自己的系统选择脚本

#RedHat / CentOS
curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && sh quick_start.sh

#Ubuntu
curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && sudo bash quick_start.sh

#Debian
curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && bash quick_start.sh

安装过程参考:

ubuntu@VM-16-8-ubuntu:~$ sudo -s                   #切换 root 用户
root@VM-16-8-ubuntu:/home/ubuntu# cd               #切换到主目录
root@VM-16-8-ubuntu:~# curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && sudo bash quick_start.sh         #1Panel 一键安装脚本
开始下载 1Panel v1.10.18-lts 版本在线安装包
安装包下载地址:https://resource.fit2cloud.com/1panel/package/stable/v1.10.18-lts/release/1panel-v1.10.18-lts-linux-amd64.tar.gz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 40.8M  100 40.8M    0     0  15.4M      0  0:00:02  0:00:02 --:--:-- 15.4M
Warning: Got more output options than URLs
1panel-v1.10.18-lts-linux-amd64/1panel.service
1panel-v1.10.18-lts-linux-amd64/1pctl
1panel-v1.10.18-lts-linux-amd64/LICENSE
1panel-v1.10.18-lts-linux-amd64/README.md
1panel-v1.10.18-lts-linux-amd64/install.sh
1panel-v1.10.18-lts-linux-amd64/1panel

 ██╗    ██████╗  █████╗ ███╗   ██╗███████╗██╗     
███║    ██╔══██╗██╔══██╗████╗  ██║██╔════╝██║     
╚██║    ██████╔╝███████║██╔██╗ ██║█████╗  ██║     
 ██║    ██╔═══╝ ██╔══██║██║╚██╗██║██╔══╝  ██║     
 ██║    ██║     ██║  ██║██║ ╚████║███████╗███████╗
 ╚═╝    ╚═╝     ╚═╝  ╚═╝╚═╝  ╚═══╝╚══════╝╚══════╝
[1Panel Log]: ======================= 开始安装 ======================= 
设置 1Panel 安装目录(默认为 /opt):[1Panel Log]: 您选择的安装路径为 /opt 
[1Panel Log]: ... 在线安装 docker 
[1Panel Log]: 选择延迟最低的源 https://mirrors.tencent.com/docker-ce,延迟为 0.039213 秒 
[1Panel Log]: 尝试从备选链接 https://get.docker.com 下载 Docker 安装脚本... 
[1Panel Log]: 成功从 https://get.docker.com 下载安装脚本 
# Executing docker install script, commit: 39040d838e8bcc48c23a0cc4117475dd15189976
+ sh -c apt-get -qq update >/dev/null
+ sh -c DEBIAN_FRONTEND=noninteractive apt-get -y -qq install ca-certificates curl >/dev/null
+ sh -c install -m 0755 -d /etc/apt/keyrings
+ sh -c curl -fsSL "https://mirrors.tencent.com/docker-ce/linux/ubuntu/gpg" -o /etc/apt/keyrings/docker.asc
+ sh -c chmod a+r /etc/apt/keyrings/docker.asc
+ sh -c echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.asc] https://mirrors.tencent.com/docker-ce/linux/ubuntu noble stable" > /etc/apt/sources.list.d/docker.list
+ sh -c apt-get -qq update >/dev/null
+ sh -c DEBIAN_FRONTEND=noninteractive apt-get -y -qq install docker-ce docker-ce-cli containerd.io docker-compose-plugin docker-ce-rootless-extras docker-buildx-plugin >/dev/null
+ sh -c docker version
Client: Docker Engine - Community
 Version:           27.3.1
 API version:       1.47
 Go version:        go1.22.7
 Git commit:        ce12230
 Built:             Fri Sep 20 11:40:59 2024
 OS/Arch:           linux/amd64
 Context:           default

Server: Docker Engine - Community
 Engine:
  Version:          27.3.1
  API version:      1.47 (minimum version 1.24)
  Go version:       go1.22.7
  Git commit:       41ca978
  Built:            Fri Sep 20 11:40:59 2024
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.7.22
  GitCommit:        7f7fdf5fed64eb6a7caf99b3e12efcf9d60e311c
 runc:
  Version:          1.1.14
  GitCommit:        v1.1.14-0-g2c9f560
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

================================================================================

To run Docker as a non-privileged user, consider setting up the
Docker daemon in rootless mode for your user:

    dockerd-rootless-setuptool.sh install

Visit https://docs.docker.com/go/rootless/ to learn about rootless mode.


To run the Docker daemon as a fully privileged service, but granting non-root
users access, refer to https://docs.docker.com/go/daemon-access/

WARNING: Access to the remote API on a privileged Docker daemon is equivalent
         to root access on the host. Refer to the 'Docker daemon attack surface'
         documentation for details: https://docs.docker.com/go/attack-surface/

================================================================================

[1Panel Log]: docker 安装成功 
Synchronizing state of docker.service with SysV service script with /usr/lib/systemd/systemd-sysv-install.
Executing: /usr/lib/systemd/systemd-sysv-install enable docker
是否配置镜像加速?(y/n): y                           #输入 y 配置镜像加速
[1Panel Log]: 创建新的配置文件 /etc/docker/daemon.json... 
[1Panel Log]: 镜像加速配置已添加。[1Panel Log]: 正在重启 Docker 服务... 
[1Panel Log]: Docker 服务已成功重启。[1Panel Log]: ... 在线安装 docker-compose 
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 59.8M  100 59.8M    0     0  13.9M      0  0:00:04  0:00:04 --:--:-- 13.9M
[1Panel Log]: docker-compose 安装成功 
设置 1Panel 端口(默认为 23281):#配置默认端口
[1Panel Log]: 您设置的端口为:23281 
[1Panel Log]: 防火墙开放 23281 端口 
Rules updated
Rules updated (v6)
Firewall not enabled (skipping reload)
设置 1Panel 安全入口(默认为 d90044baab):#配置安全入口
[1Panel Log]: 您设置的面板安全入口为:d90044baab 
设置 1Panel 面板用户(默认为 3ef597857b):smianao    #设置面板用户名
[1Panel Log]: 您设置的面板用户为:smianao 
[1Panel Log]: 设置 1Panel 面板密码,设置完成后直接回车以继续(默认为 34675a398e):*********                                           #设置面板密码
[1Panel Log]: 配置 1Panel Service 
Created symlink /etc/systemd/system/multi-user.target.wants/1panel.service → /etc/systemd/system/1panel.service.
[1Panel Log]: 启动 1Panel 服务 
[1Panel Log]: 1Panel 服务启动成功! 
[1Panel Log]:  
[1Panel Log]: ================= 感谢您的耐心等待,安装已经完成 ================== 
[1Panel Log]:  
[1Panel Log]: 请用浏览器访问面板: 
[1Panel Log]: 外网地址: http://62.234.98.8:23281/d90044baab 
[1Panel Log]: 内网地址: http://10.0.16.8:23281/d90044baab 
[1Panel Log]: 面板用户: smianao 
[1Panel Log]: 面板密码: 123456789 
[1Panel Log]:  
[1Panel Log]: 项目官网: https://1panel.cn 
[1Panel Log]: 项目文档: https://1panel.cn/docs 
[1Panel Log]: 代码仓库: https://github.com/1Panel-dev/1Panel 
[1Panel Log]:  
[1Panel Log]: 如果使用的是云服务器,请至安全组开放 23281 端口 
[1Panel Log]:  
[1Panel Log]: 为了您的服务器安全,在您离开此界面后您将无法再看到您的密码,请务必牢记您的密码。[1Panel Log]:  
[1Panel Log]: ================================================================ 
root@VM-16-8-ubuntu:~# 

安装过程,根据提示输入信息

Docker 编排服务器及 API

1. 访问 1Panel 管理面板

登录信息在上一步安装过程中

2. 创建 docke 容器

  • 导航菜单点击容器,依次点击编排 - 创建编排
  • 文件名随意命名,后缀为.yaml
  • 粘贴如下代码,修改 IP 及 key 信息,并点击确认开始编排。

networks:
  rustdesk-net:
    external: false
services:
  hbbs:
    container_name: hbbs
    ports:
      - 21115:21115
      - 21116:21116 # 自定义 hbbs 映射端口
      - 21116:21116/udp # 自定义 hbbs 映射端口
      - 21118:21118 # web client
    image: rustdesk/rustdesk-server
    command: hbbs -r < 你的服务器 IP/ 域名 >:21117 -k < 自定义 key> # 填入个人域名或 IP + hbbr 暴露端口 并输入自定 key
    volumes:
      - /data/rustdesk/hbbs:/root # 自定义挂载目录
    networks:
      - rustdesk-net
    depends_on:
      - hbbr
    restart: unless-stopped
    deploy:
      resources:
        limits:
          memory: 64M
  hbbr:
    container_name: hbbr
    ports:
      - 21117:21117 # 自定义 hbbr 映射端口
      - 21119:21119 # web client
    image: rustdesk/rustdesk-server
    command: hbbr -k < 自定义 key> #输入自定义 key
    #command: hbbr
    volumes:
      - /data/rustdesk/hbbr:/root # 自定义挂载目录
    networks:
      - rustdesk-net
    restart: unless-stopped
    deploy:
      resources:
        limits:
          memory: 64M
  rustdesk-api:
    container_name: rustdesk-api
    environment:
      - TZ=Asia/Shanghai
      - RUSTDESK_API_RUSTDESK_ID_SERVER=< 你的服务器 IP/ 域名 >:21116 #输入你的服务器 IP/ 域名
      - RUSTDESK_API_RUSTDESK_RELAY_SERVER=< 你的服务器 IP/ 域名 >:21117 #输入你的服务器 IP/ 域名
      - RUSTDESK_API_RUSTDESK_API_SERVER=http://< 你的服务器 IP/ 域名 >:21114 #输入你的服务器 IP/ 域名
      - RUSTDESK_API_RUSTDESK_KEY=< 自定义 key> #输入自定义 key
    ports:
      - 21114:21114
    image: lejianwen/rustdesk-api
    volumes:
      - /data/rustdesk/api:/app/data #将数据库挂载出来方便备份
    networks:
      - rustdesk-net
    restart: unless-stopped

通过以上操作,我们直接在 docker 里创建了服务器和 API 容器,ID/ 中继服务器可以直接使用!

编排过程参考:

 hbbr Pulling 
 rustdesk-api Pulling 
 hbbs Pulling 
 d78b354191df Pulling fs layer 
 d50eeecf3075 Pulling fs layer 
 d10949b88d3a Pulling fs layer 
 43c4264eed91 Pulling fs layer 
 48df69c0b6bc Pulling fs layer 
 7f0a66f8299c Pulling fs layer 
 e14685bc2bbd Pulling fs layer 
 4f4fb700ef54 Pulling fs layer 
 43c4264eed91 Waiting 
 48df69c0b6bc Waiting 
 7f0a66f8299c Waiting 
 e14685bc2bbd Waiting 
 4f4fb700ef54 Waiting 
 d78b354191df Pulling fs layer 
 d50eeecf3075 Pulling fs layer 
 d10949b88d3a Pulling fs layer 
 d10949b88d3a Downloading [==================================================>]      94B/94B
 d10949b88d3a Verifying Checksum 
 d10949b88d3a Download complete 
 d10949b88d3a Verifying Checksum 
 d10949b88d3a Download complete 
 d50eeecf3075 Downloading [>]  27.96kB/2.791MB
 d50eeecf3075 Downloading [>]  27.96kB/2.791MB
 d50eeecf3075 Downloading [=>]  58.11kB/2.791MB
 d50eeecf3075 Downloading [=>]  58.11kB/2.791MB
 d78b354191df Downloading [>]  47.02kB/4.664MB
 d78b354191df Downloading [>]  47.02kB/4.664MB
 d50eeecf3075 Downloading [==>]  118.5kB/2.791MB
 d50eeecf3075 Downloading [==>]  118.5kB/2.791MB
 d78b354191df Downloading [=>]    143kB/4.664MB
 d78b354191df Downloading [=>]    143kB/4.664MB
 d50eeecf3075 Downloading [====>]  249.1kB/2.791MB
 d50eeecf3075 Downloading [====>]  249.1kB/2.791MB
 d78b354191df Downloading [===>]  294.1kB/4.664MB
 d78b354191df Downloading [===>]  294.1kB/4.664MB
 d50eeecf3075 Downloading [=======>]  412.9kB/2.791MB
 d50eeecf3075 Downloading [=======>]  412.9kB/2.791MB
 d78b354191df Downloading [=====>]  490.7kB/4.664MB
 d78b354191df Downloading [=====>]  490.7kB/4.664MB
 d50eeecf3075 Downloading [============>]  675.1kB/2.791MB
 d50eeecf3075 Downloading [============>]  675.1kB/2.791MB
 d78b354191df Downloading [========>]  834.8kB/4.664MB
 d78b354191df Downloading [========>]  834.8kB/4.664MB
 d50eeecf3075 Downloading [===================>]  1.101MB/2.791MB
 d50eeecf3075 Downloading [===================>]  1.101MB/2.791MB
 43c4264eed91 Downloading [>]  37.15kB/3.624MB
 d78b354191df Downloading [==============>]  1.326MB/4.664MB
 d78b354191df Downloading [==============>]  1.326MB/4.664MB
 d50eeecf3075 Downloading [================================>]  1.822MB/2.791MB
 d50eeecf3075 Downloading [================================>]  1.822MB/2.791MB
 43c4264eed91 Downloading [=>]  77.13kB/3.624MB
 d78b354191df Downloading [=======================>]  2.211MB/4.664MB
 d78b354191df Downloading [=======================>]  2.211MB/4.664MB
 d50eeecf3075 Download complete 
 d50eeecf3075 Download complete 
 43c4264eed91 Downloading [=>]  114.1kB/3.624MB
 d78b354191df Downloading [======================================>]  3.608MB/4.664MB
 d78b354191df Downloading [======================================>]  3.608MB/4.664MB
 d78b354191df Download complete 
 d78b354191df Download complete 
 d78b354191df Extracting [>]  65.54kB/4.664MB
 d78b354191df Extracting [>]  65.54kB/4.664MB
 43c4264eed91 Downloading [===>]  228.3kB/3.624MB
 d78b354191df Extracting [==========================================>]  3.932MB/4.664MB
 d78b354191df Extracting [==========================================>]  3.932MB/4.664MB
 d78b354191df Extracting [==================================================>]  4.664MB/4.664MB
 d78b354191df Extracting [==================================================>]  4.664MB/4.664MB
 d78b354191df Pull complete 
 d78b354191df Pull complete 
 d50eeecf3075 Extracting [>]  32.77kB/2.791MB
 d50eeecf3075 Extracting [>]  32.77kB/2.791MB
 43c4264eed91 Downloading [=====>]  375.7kB/3.624MB
 d50eeecf3075 Extracting [==================================================>]  2.791MB/2.791MB
 d50eeecf3075 Extracting [==================================================>]  2.791MB/2.791MB
 d50eeecf3075 Pull complete 
 d50eeecf3075 Pull complete 
 d10949b88d3a Extracting [==================================================>]      94B/94B
 d10949b88d3a Extracting [==================================================>]      94B/94B
 d10949b88d3a Extracting [==================================================>]      94B/94B
 d10949b88d3a Extracting [==================================================>]      94B/94B
 d10949b88d3a Pull complete 
 d10949b88d3a Pull complete 
 43c4264eed91 Downloading [========>]  621.5kB/3.624MB
 hbbs Pulled 
 hbbr Pulled 
 43c4264eed91 Downloading [==============>]  1.015MB/3.624MB
 43c4264eed91 Downloading [======================>]  1.654MB/3.624MB
 43c4264eed91 Downloading [=====================================>]  2.734MB/3.624MB
 43c4264eed91 Verifying Checksum 
 43c4264eed91 Download complete 
 43c4264eed91 Extracting [>]  65.54kB/3.624MB
 7f0a66f8299c Downloading [>]  8.214kB/690.4kB
 48df69c0b6bc Downloading [==================================================>]      93B/93B
 48df69c0b6bc Verifying Checksum 
 48df69c0b6bc Download complete 
 43c4264eed91 Extracting [==================================================>]  3.624MB/3.624MB
 43c4264eed91 Pull complete 
 48df69c0b6bc Extracting [==================================================>]      93B/93B
 48df69c0b6bc Extracting [==================================================>]      93B/93B
 7f0a66f8299c Downloading [===>]   49.2kB/690.4kB
 48df69c0b6bc Pull complete 
 7f0a66f8299c Downloading [========>]    111kB/690.4kB
 7f0a66f8299c Downloading [===============>]  217.8kB/690.4kB
 7f0a66f8299c Downloading [========================>]  344.1kB/690.4kB
 7f0a66f8299c Downloading [========================================>]  557.1kB/690.4kB
 7f0a66f8299c Verifying Checksum 
 7f0a66f8299c Download complete 
 7f0a66f8299c Extracting [==>]  32.77kB/690.4kB
 7f0a66f8299c Extracting [==================================================>]  690.4kB/690.4kB
 4f4fb700ef54 Downloading [==================================================>]      32B/32B
 4f4fb700ef54 Verifying Checksum 
 4f4fb700ef54 Download complete 
 7f0a66f8299c Pull complete 
 e14685bc2bbd Downloading [>]  177.4kB/17.53MB
 e14685bc2bbd Downloading [=>]  357.1kB/17.53MB
 e14685bc2bbd Downloading [==>]  717.5kB/17.53MB
 e14685bc2bbd Downloading [===>]  1.258MB/17.53MB
 e14685bc2bbd Downloading [======>]  2.163MB/17.53MB
 e14685bc2bbd Downloading [==========>]  3.609MB/17.53MB
 e14685bc2bbd Downloading [================>]  5.956MB/17.53MB
 e14685bc2bbd Downloading [=========================>]   9.02MB/17.53MB
 e14685bc2bbd Downloading [==================================>]  12.08MB/17.53MB
 e14685bc2bbd Downloading [=========================================>]   14.6MB/17.53MB
 e14685bc2bbd Downloading [=================================================>]  17.49MB/17.53MB
 e14685bc2bbd Verifying Checksum 
 e14685bc2bbd Download complete 
 e14685bc2bbd Extracting [>]  196.6kB/17.53MB
 e14685bc2bbd Extracting [================>]  5.702MB/17.53MB
 e14685bc2bbd Extracting [==============================>]  10.81MB/17.53MB
 e14685bc2bbd Extracting [==========================================>]  14.75MB/17.53MB
 e14685bc2bbd Extracting [==================================================>]  17.53MB/17.53MB
 e14685bc2bbd Pull complete 
 4f4fb700ef54 Extracting [==================================================>]      32B/32B
 4f4fb700ef54 Extracting [==================================================>]      32B/32B
 4f4fb700ef54 Pull complete 
 rustdesk-api Pulled 
 Network rustdeskyaml_rustdesk-net  Creating
 Network rustdeskyaml_rustdesk-net  Created
 Container rustdesk-api  Creating
 Container hbbr  Creating
 Container hbbr  Created
 Container hbbs  Creating
 Container rustdesk-api  Created
 Container hbbs  Created
 Container hbbr  Starting
 Container rustdesk-api  Starting
 Container hbbr  Started
 Container hbbs  Starting
 Container rustdesk-api  Started
 Container hbbs  Started
docker-compose up successful!

API 的使用

1. 后台管理

http://< 你的服务器 IP/ 域名 >:21114

以上地址访问 API 后台,默认用户名和密码为:admin,可以进行添加用户,设备管理等操作!

2. 客户端使用

http://< 你的服务器 IP/ 域名 >:21114

  • 打开网络设置,将如上地址,填入 API 项里,点击“应用”
  • 账户设置,点击登录,使用 API 账户登录,即可同步信息。

3. Web 客户端使用

首次登录 API 后台,会自动同步服务器等信息,web 客户端使用方法,同客户端大同小异

结束语

官方 API 是收费项目,通过这个第三方 API,我们可以很便捷的管理我们远程设备;同时,Web 端让我们随时随地,对被控电脑,进行远控操作,即使是在无法安装客户端的情况。本期视频就到这里,下期视频,鼠标教你,如何修改 RustDersk 的 ID。点个关注,防止迷路!我是鼠标,谢谢您的观看!

正文完
 0
鼠标
版权声明:本站原创文章,由 鼠标 于2024-10-14发表,共计14296字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(5 条评论)
wissen 评论达人 LV.1
2024-12-02 17:09:45 回复

你好老师,问一下,我提示占用,然后换了端口,2111X 直接全换 2112X,服务器端口也开放了,但是打不开API管理的网页,老师可以答疑一下

     中国江苏省连云港市移动
psytle 评论达人 LV.1
2025-03-29 13:40:14 回复

默认用户名和密码为:admin 不知道为啥进不去。求老师解答。

     中国湖南省长沙市电信
    a285762303 评论达人 LV.1
    2025-08-10 12:01:37 回复

    @psytle 我也跟你一样

         中国辽宁省沈阳市电信
YangTao 评论达人 LV.1
2025-06-26 14:34:03 回复

hbbs Pullinghbbr Pullingrustdesk-api Pullinghbbs Error Get “https://registry-1.docker.io/v2/”: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)hbbr Interruptedrustdesk-api InterruptedError response from daemon: Get “https://registry-1.docker.io/v2/”: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)docker-compose up failed!
编译报错 能指导一下吗?

     中国浙江省杭州市电信
a285762303 评论达人 LV.1
2025-08-10 12:02:14 回复

默认用户名和密码为:admin 不知道为啥进不去。求老师解答。

     中国辽宁省沈阳市电信