自建RustDesk服务


这里有另一个很好的教程:Building Your Own Remote Desktop Solution: RustDesk Self-Hosted on Cloud with Docker (Hetzner)

使用 Docker 安装您自己的服务器

要求

您需要安装 Docker/Podman 才能将 rustdesk-server 作为 Docker 容器运行。如有疑问,请使用此指南安装 Docker,以确保它是最新的!

确保在防火墙中打开这些端口:

  • hbbs:
    • 21114 (TCP): 用于网页控制台,仅在 Pro 版本中可用。
    • 21115 (TCP): 用于 NAT 类型测试。
    • 21116 (TCP/UDP): 请注意 21116 应该同时为 TCP 和 UDP 启用。 21116/UDP 用于 ID 注册和心跳服务。21116/TCP 用于 TCP 打洞和连接服务。
    • 21118 (TCP): 用于支持网页客户端。
  • hbbr:
    • 21117 (TCP): 用于中继服务。
    • 21119 (TCP): 用于支持网页客户端。

如果您不需要网页客户端支持,可以禁用相应的端口 2111821119

Docker 示例

sudo docker image pull rustdesk/rustdesk-server
sudo docker run --name hbbs -v ./data:/root -td --net=host --restart unless-stopped rustdesk/rustdesk-server hbbs
sudo docker run --name hbbr -v ./data:/root -td --net=host --restart unless-stopped rustdesk/rustdesk-server hbbr

--net=host 仅在 Linux 上有效,这使得 hbbs/hbbr 看到真实的传入 IP 地址而不是容器 IP (172.17.0.1)。
如果 --net=host 工作正常,则不使用 -p 选项。如果在 Windows 上,请省略 sudo--net=host

如果您在您的平台上遇到连接问题,请移除 --net=host

如果您无法使用 -td 看到日志,可以通过 docker logs hbbs 查看日志。或者您可以使用 -it 运行,hbbs/hbbr 不会作为守护进程模式运行。

Docker Compose 示例

要使用这里描述的 compose.yml 运行 Docker 文件,您需要安装 Docker Compose

services:
  hbbs:
    container_name: hbbs
    image: rustdesk/rustdesk-server:latest
    command: hbbs
    volumes:
      - ./data:/root
    network_mode: "host"

    depends_on:
      - hbbr
    restart: unless-stopped

  hbbr:
    container_name: hbbr
    image: rustdesk/rustdesk-server:latest
    command: hbbr
    volumes:
      - ./data:/root
    network_mode: "host"
    restart: unless-stopped

如果您需要进行配置更改,例如设置 ALWAYS_USE_RELAY=Y,可以在 docker-compose.yml 中使用 environment

services:
  hbbs:
    container_name: hbbs
    image: rustdesk/rustdesk-server:latest
    environment:
      - ALWAYS_USE_RELAY=Y
    command: hbbs
    volumes:
      - ./data:/root
    network_mode: "host"

    depends_on:
      - hbbr
    restart: unless-stopped

  hbbr:
    container_name: hbbr
    image: rustdesk/rustdesk-server:latest
    command: hbbr
    volumes:
      - ./data:/root
    network_mode: "host"
    restart: unless-stopped

Podman Quadlet 示例

如果您想使用 Podman 作为 systemd 服务运行容器,可以使用这些示例 Podman Quadlet 配置:

[Container]
AutoUpdate=registry
Image=ghcr.io/rustdesk/rustdesk-server:latest
Exec=hbbs
Volume=/path/to/rustdesk-server/data:/root
Network=host

[Service]
Restart=always

[Install]
WantedBy=default.target

或者

[Container]
AutoUpdate=registry
Image=ghcr.io/rustdesk/rustdesk-server:latest
Exec=hbbr
Volume=/path/to/rustdesk-server/data:/root
Network=host

[Service]
Restart=always

[Install]
WantedBy=default.target

RustDesk自建服务器完整操作指南(Docker方式)

准备工作

  1. 服务器要求

    • 一台具有公网IP的Linux服务器(推荐Ubuntu 20.04/22.04,1核1GB内存即可)。
    • 带宽建议2Mbps以上,低延迟(如国内云厂商:腾讯云、阿里云)。
    • 已安装Docker和Docker Compose。
  2. 端口要求

    • hbbs(ID服务器):
      • TCP:21115(NAT类型测试)、21116(TCP打洞/连接服务)、21118(网页客户端,Pro版可选)。
      • UDP:21116(ID注册和心跳服务)。
    • hbbr(中继服务器):
      • TCP:21117(中继服务)、21119(网页客户端,Pro版可选)。
    • 注意:若不使用网页客户端,可忽略21118和21119端口。
  3. 安装Docker(若未安装):

    sudo apt update
    sudo apt install -y docker.io
    sudo systemctl start docker
    sudo systemctl enable docker

    安装Docker Compose:

    sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    sudo chmod +x /usr/local/bin/docker-compose
  4. 开放防火墙端口

    • 使用UFW(若启用):
      sudo ufw allow 21115:21118/tcp
      sudo ufw allow 21116/udp
      sudo ufw enable
    • 在云服务商(如阿里云、腾讯云)安全组中,添加规则允许上述端口的TCP和UDP流量。

步骤一:部署RustDesk服务器

  1. 拉取RustDesk服务器镜像

    sudo docker image pull rustdesk/rustdesk-server
  2. 创建Docker Compose配置文件
    创建工作目录并编辑docker-compose.yml

    mkdir rustdesk
    cd rustdesk
    nano docker-compose.yml

    粘贴以下内容:

    services:
      hbbs:
        container_name: hbbs
        image: rustdesk/rustdesk-server:latest
        command: hbbs -r <your_server_ip>:21117
        volumes:
          - ./data:/root
        network_mode: "host"
        depends_on:
          - hbbr
        restart: unless-stopped
      hbbr:
        container_name: hbbr
        image: rustdesk/rustdesk-server:latest
        command: hbbr
        volumes:
          - ./data:/root
        network_mode: "host"
        restart: unless-stopped
    • <your_server_ip>替换为服务器公网IP或域名。
    • 说明
      • network_mode: "host"使容器使用主机网络,确保hbbs/hbbr接收真实IP地址(仅Linux支持)。
      • 若需强制加密,可在command后添加-k _(如hbbs -r <your_server_ip>:21117 -k _)。
      • 若需强制中继连接,添加环境变量:
        environment:
          - ALWAYS_USE_RELAY=Y
  3. 启动服务

    sudo docker compose up -d
    • 这将启动hbbs(ID服务器)和hbbr(中继服务器)。
    • 数据(如公钥)保存在./data目录。
  4. 验证服务运行

    sudo docker ps

    确保hbbshbbr容器状态为Up
    查看日志以排查问题:

    sudo docker logs hbbs
    sudo docker logs hbbr
  5. 获取公钥(Key)
    服务启动后,查看./data/id_ed25519.pub中的公钥:

    cat ./data/id_ed25519.pub

    记录公钥(如C6bJn7...50nCK3y4=),用于客户端配置。


步骤二:配置RustDesk客户端

  1. 下载客户端
    从RustDesk官方GitHub下载客户端(支持Windows、macOS、Linux流的RustDesk客户端Linux、Android、iOS):https://github.com/rustdesk/rustdesk/releases。

  2. 配置客户端

    • 打开RustDesk客户端,点击ID旁边的菜单([⋮]),选择“网络”。
    • 解锁设置(需要管理员权限)。
    • 输入以下信息:
      • ID服务器<your_server_ip>:21116
      • 中继服务器<your_server_ip>:21117(可留空,自动推导)。
      • 密钥(Key):输入步骤一中的公钥。
    • 点击“应用”保存。
  3. 验证连接

    • 在主界面输入远程设备ID,尝试连接。
    • 状态栏显示“就绪”表示配置成功。
    • 连接成功后,绿色图标显示P2P或中继状态。

步骤三:测试与优化

  1. 测试连接

    • 使用另一台设备的RustDesk客户端,输入ID进行连接测试。
    • 若连接失败,检查:
      • 防火墙/安全组是否开放必要端口。
      • 客户端配置的IP和密钥是否正确。
      • 日志(docker logs hbbs/hbbr)是否有错误。
  2. 优化建议

    • 带宽:办公用途约需100Kbps,高清画面需1-3Mbps,建议服务器带宽≥3Mbps。
    • 画质:在客户端降低分辨率/帧率以减少带宽占用。
    • 加密:启用-k _强制密钥认证,提高安全性。
    • 域名:使用域名替换IP,提高灵活性。
    • 日志查看:若需调试,使用docker logs命令查看服务日志。
  3. 连接问题处理

    • --net=host导致问题,移除network_mode: "host",改用端口映射:
      ports:
        - 21115:21115
        - 21116:21116
        - 21116:21116/udp
        - 21118:21118
      hbbr服务中添加:
      ports:
        - 21117:21117
        - 21119:21119

常见问题

  1. 无法连接

    • 确认端口21115-21119(TCP)和21116(UDP)已开放。
    • 检查公钥是否正确。
    • 确保hbbshbbr服务正常运行。
  2. 延迟高

    • 选择低延迟的服务器(如本地云厂商)。
    • 降低客户端画质设置。
  3. 安全性

    • RustDesk使用端到端加密(TLS 1.3),中继服务器无法解密数据。
    • 强制密钥(-k _)可防止未授权访问。
  4. 日志查看

    • 使用docker logs hbbsdocker logs hbbr检查服务状态。


文章作者: kukuqi666
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 kukuqi666 !
评论
  目录