文章目录

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