文章目录

Toggle

  • RustDesk API完整包安装
  • 安装RustDesk集成RustDesk API
  • 访问控制台操作
  • 客户端连接测试
  • 使用WEB界面连接

RustDesk API完整包安装

RustDesk优点

以下优点大部分是RustDesk专业版才有的~

PC端API

  • 个人版API
  • 登录
  • 地址簿
  • 群组
  • 授权登录

支持github, google 和 OIDC 登录,

支持web后台授权登录

支持LDAP(AD和OpenLDAP已测试), 如果API Server配置了LDAP

  • i18n

Web Admin

  • 用户管理
  • 设备管理
  • 地址簿管理
  • 标签管理
  • 群组管理
  • Oauth 管理
  • 配置LDAP, 配置文件或者环境变量
  • 登录日志
  • 链接日志
  • 文件传输日志
  • 快速使用web client
  • i18n
  • 通过 web client 分享给游客
  • server控制(一些官方的简单的指令 WIKI)

Web Client

  • 自动获取API server
  • 自动获取ID服务器和KEY
  • 自动获取地址簿
  • 游客通过临时分享链接直接远程到设备

CLI

  • 重置管理员密码

项目地址https://github.com/lejianwen/rustdesk-api

官方建议如下

搭配lejianwen/rustdesk-server使用更佳。

lejianwen/rustdesk-serverfork自RustDesk Server官方仓库
  • 解决了使用API链接超时问题
  • 可以强制登录后才能发起链接
  • 支持客户端websocket

安装RustDesk集成RustDesk API

之前我尝试过只安装RustDesk并且单独安装RustDesk API,发现不太行,客户会出现网络问题,如果个人使用还想要控制台,建议直接使用我的方式进行安装

rustdesk-api 给出了解决办法,我这里不折腾了,想折腾可参考下放文档进行解决

https://github.com/lejianwen/rustdesk-api/issues/92

创建PVC存储卷,默认我放在tools命名空间下,需要修改可自行替换

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: rustdesk-data-pvc
  namespace: tools
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 50Gi
  storageClassName: dsm7-nfs-client

创建PVC,创建完毕请及时检查PVC是否为绑定状态

root@k8s-master-01:~/rustdesk-api# kubectl apply -f pvc.yaml
persistentvolumeclaim/rustdesk-data-pvc created
root@k8s-master-01:~/rustdesk-api# kubectl get pvc -n tools|grep ru
rustdesk-data-pvc                     Bound    pvc-2dfcdc29-526b-416b-a692-e10ff51b23a2   50Gi       RWO            dsm7-nfs-client   <unset>                 10s

查看k8s节点信息

root@k8s-master-01:~/rustdesk-api# kubectl get node -o wide
NAME            STATUS   ROLES           AGE    VERSION   INTERNAL-IP     EXTERNAL-IP   OS-IMAGE       KERNEL-VERSION      CONTAINER-RUNTIME
k8s-master-01   Ready    control-plane   134d   v1.29.9   192.168.21.10   <none>        Ubuntu 24.10   6.11.0-29-generic   containerd://1.7.27
k8s-master-02   Ready    control-plane   134d   v1.29.9   192.168.21.11   <none>        Ubuntu 24.10   6.11.0-29-generic   containerd://1.7.27
k8s-master-03   Ready    control-plane   134d   v1.29.9   192.168.21.12   <none>        Ubuntu 24.10   6.11.0-29-generic   containerd://1.7.27
k8s-node-01     Ready    <none>          134d   v1.29.9   192.168.21.13   <none>        Ubuntu 24.10   6.11.0-29-generic   containerd://1.7.27
k8s-node-02     Ready    <none>          134d   v1.29.9   192.168.21.14   <none>        Ubuntu 24.10   6.11.0-29-generic   containerd://1.7.27
k8s-node-03     Ready    <none>          134d   v1.29.9   192.168.21.15   <none>        Ubuntu 24.10   6.11.0-29-generic   containerd://1.7.27

创建Deployment,以下是需要配置的端口映射,因为容器NodePort只能使用30000以上端口,所以需要端口调整,下面所有变量均为NodePort 端口号

  • 21114:30114/TCP #API服务器
  • 21115:30115/TCP
  • 21116:30116/TCP #ID服务器地址
  • 21116:30116/UDP #ID服务器地址
  • 21117:31117/TCP #中继服务器地址
  • 21118:30118/UDP
  • 21119:30119/TCP #websocket端口
  • 连接IP我使用k8s-node-01的IP地址,NodePorter写任意集群IP都可以

1763016471527.png

apiVersion: apps/v1
kind: Deployment
metadata:
  name: rustdesk-server
  namespace: tools
spec:
  replicas: 1
  selector:
    matchLabels:
      app: rustdesk-server
  template:
    metadata:
      labels:
        app: rustdesk-server
    spec:
      containers:
      - name: rustdesk-server
        image: lejianwen/rustdesk-server-s6:latest
        ports:
        - containerPort: 21114
          name: api-port
        - containerPort: 21115
          name: cli-port
        - containerPort: 21116
          name: id-tcp
        - containerPort: 21116
          protocol: UDP
          name: id-udp
        - containerPort: 21117
          name: relay-tcp
        - containerPort: 21118
          name: relay-udp
        - containerPort: 21119
          name: web-port
        env:
        - name: RELAY
          value: "192.168.21.13:21117" # 这里需要填写宿主机的IP地址
        - name: ENCRYPTED_ONLY
          value: "1"
        - name: MUST_LOGIN
          value: "Y"
        - name: TZ
          value: "Asia/Shanghai"
        - name: RUSTDESK_API_RUSTDESK_ID_SERVER
          value: "192.168.21.13:30116" # 这里需要填写宿主机的IP地址
        - name: RUSTDESK_API_RUSTDESK_RELAY_SERVER
          value: "192.168.21.13:30117" # 这里需要填写宿主机的IP地址
        - name: RUSTDESK_API_RUSTDESK_API_SERVER
          value: "http://192.168.21.13:30114" # 这里需要填写宿主机的IP地址
        - name: RUSTDESK_API_KEY_FILE
          value: "/data/id_ed25519.pub"
        - name: RUSTDESK_API_JWT_KEY
          value: "0mtxRhCoAwaN" # 请确保这是一个安全的密钥
        volumeMounts:
        - name: rustdesk-data
          mountPath: /data
        - name: rustdesk-data
          mountPath: /app/data
          subPath: app_data
      volumes:
      - name: rustdesk-data
        persistentVolumeClaim:
          claimName: rustdesk-data-pvc

创建后检查Pod状态

root@k8s-master-01:~/rustdesk-api# kubectl get pod -n tools -o wide|grep ru
rustdesk-server-598f4cc79-s2bjz           1/1     Running   0                49s     192.168.21.13   k8s-node-01     <none>           <none>

验证Pod以及SVC状态

root@k8s-master-01:~/rustdesk-api# kubectl get svc,pod -n tools|grep ru
service/rustdesk-server-nodeport                                     NodePort    10.96.1.154   <none>        21114:30114/TCP,21115:30115/TCP,21116:30116/TCP,21116:30116/UDP,21117:31117/TCP,21118:30118/UDP,21119:30119/TCP   8s
pod/rustdesk-server-598f4cc79-s2bjz          1/1     Running   0                63s

端口映射后如下

21114:30114/TCP   #API服务器
21115:30115/TCP
21116:30116/TCP  #ID服务器地址
21116:30116/UDP  #ID服务器地址
21117:31117/TCP  #中继服务器地址
21118:30118/UDP
21119:30119/TCP  #websocket端口

如果没有公网IP,也可以使用FRP进行代理映射

1763020254615.png

访问控制台操作

首先重置管理员密码

root@k8s-master-01:~/rustdesk-api# kubectl exec -it -n tools  rustdesk-server-8469c45d4f-hblwd sh

/app # ./apimain reset-admin-pwd admin123   #将admin用户密码重置为admin123
[2025-11-13 15:04:04] [INFO] reset password success!  (/home/runner/work/rustdesk-api/rustdesk-api/cmd/apimain.go:68 main.init.func3)
/app #

访问Node IP:30114端口

  • 默认用户名admin
  • 默认密码刚刚已经重置,密码为admin123

1763020298574.png

客户端需要使用Key,下面进入到容器中查看Key

root@k8s-master-01:~# kubectl exec -it -n tools rustdesk-server-8469c45d4f-hblwd sh

/app # cat /data/id_ed25519.pub
133hbXCrrhny123fslhJCvQCIeTDfw21311hjM=/app #

我这里提供软件包下载,可使用下放地址直接下载,或者官方下载也可以

https://esxi-dsm.frps.cn/s/8f98c0efe5d149fa81

客户端连接测试

首先客户端需要配置

1763020442691.png

1763020423464.png

配置完毕后需要确认RustDesk为就绪状态

这里配置文件已经优化,不登录时会不允许连接ID,所以ID泄露也不影响

1763020493523.png

首先我们不登录时,使用ID进行连接

1763020710924.png

提示连接拒绝

1763020720280.png

接下来登录服务

登录需要两边都登录,否则依旧无法连接

1763020787649.png

登录完毕后在API Web界面就可以看到连接信息

将需要远程的地址添加到地址簿中

1763020930333.png

添加完毕后刷新地址簿

1763020992200.png

再次连接尝试

1763021006355.png

验证完毕

1763021051914.png

使用WEB界面连接

登录到WEB Admin地址中

使用网页需要将30119映射出来

选择Web Client

1763021147817.png

输入密码

1763021266321.png

1763021255065.png

1763021294290.png