跳至正文
老丹的足迹 —— 代码写给机器,游记写给自己,感悟写给时间
老丹的足迹 老丹的足迹
老丹的足迹 老丹的足迹
  • 首页
  • 示例页面
  • 首页
  • 示例页面
老丹的足迹 老丹的足迹
老丹的足迹 老丹的足迹
  • 首页
  • 示例页面
  • 首页
  • 示例页面

在 Ubuntu 24.04 上部署 RustDesk 服务端完整指南

RustDesk 是一款开源的远程桌面软件,通过自建服务器,你可以完全掌控自己的数据,无需依赖第三方服务。本文将详细介绍如何在 Ubuntu 24.04 系统上使用 Docker 部署 RustDesk 服务端。

一、准备工作

1.1 服务器要求

部署 RustDesk 服务端对硬件要求不高。根据官方文档和社区实践,最低配置足以满足个人或小型团队使用需求:

项目最低配置推荐配置
CPU1核2核
内存1GB2GB
磁盘10GB20GB+
系统Ubuntu 24.04 LTSUbuntu 24.04 LTS

说明:RustDesk 官方表示,其公共 ID 服务器部署在 2核/4GB 的 VPS 上,可服务超过 100 万个终端。对于个人使用,1核1GB 的配置已完全足够。

1.2 需要开放的端口

RustDesk 服务端由两个核心组件构成,需要开放以下端口:

端口协议服务组件用途
21115TCPhbbsNAT 类型测试
21116TCPhbbsID 注册服务
21116UDPhbbs心跳检测与 P2P 打洞
21117TCPhbbr中继转发服务
21118TCPhbbsWeb 客户端支持
21119TCPhbbrWeb 客户端支持

⚠️ 特别重要:21116 端口必须同时开放 TCP 和 UDP,否则 P2P 直连功能将无法正常工作。

如果服务器启用了 UFW 防火墙,可以执行以下命令开放端口:

sudo ufw allow 21115:21119/tcp
sudo ufw allow 21116/udp
sudo ufw reload

如果使用云服务器(如腾讯云、阿里云、Azure 等),还需要在云服务商的控制台安全组中添加入站规则,放行上述端口。

二、安装 Docker 和 Docker Compose

Docker 是部署 RustDesk 服务端最便捷的方式。在 Ubuntu 24.04 上,执行以下命令安装:

# 安装 Docker
curl -fsSL https://get.docker.com | sh

# 安装 Docker Compose 插件
sudo apt install -y docker-compose-plugin

# 验证安装
docker --version
docker compose version

如果看到版本号输出,说明安装成功。

三、部署 RustDesk 服务端

3.1 创建服务目录

# 创建工作目录
mkdir -p /opt/rustdesk
cd /opt/rustdesk

3.2 创建 docker-compose.yml 文件

使用 network_mode: "host" 模式可以简化网络配置,让容器直接使用宿主机的网络栈。这种方式配置简单,且能确保 P2P 打洞功能正常工作。

nano docker-compose.yml

将以下内容粘贴到文件中:

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

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

保存文件(按 Ctrl+X,然后 Y,再按 Enter)。

关于镜像说明:如果需要指定中继服务器地址,可以在 command: hbbs 后添加 -r 你的服务器IP:21117 参数。不指定时,服务会自动检测。

3.3 启动服务

docker compose up -d

该命令会从 Docker Hub 拉取镜像并启动两个容器。首次启动可能需要等待几分钟。

3.4 验证服务状态

# 查看容器运行状态
docker compose ps

# 查看所有 Docker 容器
docker ps

正常情况下,应该看到 hbbs 和 hbbr 两个容器的状态均为 Up。

查看服务日志确认无错误:

docker compose logs hbbs
docker compose logs hbbr

3.5 获取连接密钥(Key)

服务启动后,会在 ./data 目录下自动生成加密密钥文件。客户端连接时需要用到这个 Key。

cat /opt/rustdesk/data/id_ed25519.pub

命令会输出一串字符,例如:

bWI7czjxxxxxxxxxxxxxxxa6NBPKjG2UvxjIKaxxxxx=

请将这串 Key 完整保存下来,后续配置每台客户端都要用到。

四、服务管理命令

部署完成后,可以通过以下命令管理 RustDesk 服务:

cd /opt/rustdesk

# 启动服务
docker compose up -d

# 停止服务
docker compose down

# 重启服务
docker compose restart

# 查看状态
docker compose ps

# 实时查看日志
docker compose logs -f

五、客户端配置

5.1 下载客户端

从 RustDesk 官网 下载对应操作系统的客户端:

  • Windows:下载 .exe 安装包
  • macOS:下载 .dmg 文件
  • Linux:下载 .deb 或 .AppImage
  • 移动端:从应用商店下载

5.2 配置客户端连接到自建服务器

在所有需要远程控制的电脑上,按以下步骤配置:

  1. 打开 RustDesk 客户端
  2. 点击右上角的 设置 图标(⚙️)
  3. 进入 网络 选项卡
  4. 填写以下信息:
配置项填写内容
ID服务器你的服务器公网 IP 或域名
中继服务器你的服务器公网 IP 或域名
Key第三步获取的那一串密钥
  1. 点击 应用,客户端会自动重启

5.3 设置固定密码(推荐)

为了方便无人值守访问,建议为每台电脑设置永久密码:

  1. 打开客户端 → 设置 → 安全
  2. 勾选 “设定永久密码”
  3. 输入并确认密码
  4. 点击 确定

六、开始使用

所有客户端配置完成后,即可开始互相远程控制:

  1. 在任意一台电脑上打开 RustDesk
  2. 在 “输入远程 ID” 栏中输入目标电脑的 ID(每台电脑界面上显示的 9 位数字)
  3. 点击 连接
  4. 输入目标电脑的密码

连接成功后,将鼠标放在左上角的连接状态图标上,会显示当前连接模式:

  • “加密直连” → P2P 直连,速度最快,数据不经过服务器
  • “加密中继” → 走中继服务器,数据通过你的服务器转发

七、常见问题排查

7.1 客户端无法连接

可能原因:

  • 防火墙未开放所需端口
  • 21116 UDP 端口未开放,导致 P2P 打洞失败
  • Key 输入错误(注意前后不要有空格)

排查方法:

# 检查端口是否正常监听
sudo netstat -tulnp | grep 211

# 查看服务日志
docker compose logs hbbs
docker compose logs hbbr

7.2 连接速度慢

如果连接走的是中继模式而非 P2P 直连,说明 NAT 穿透失败。请检查:

  • 云服务器安全组是否开放了 21116 UDP 端口
  • 客户端的网络环境是否支持 UDP 通信

7.3 更新服务端

cd /opt/rustdesk
docker compose pull
docker compose up -d

八、安全建议

  1. 定期更新:关注 RustDesk 官方发布,及时更新服务端和客户端以修复安全漏洞
  2. 最小权限原则:仅在防火墙开放必需的端口,不要暴露不必要的服务
  3. 使用强密钥:服务端自动生成的密钥安全性较高,无需额外修改
  4. 备份配置:定期备份 /opt/rustdesk/data 目录,包含密钥等重要数据
作者

老丹

关注我
其他文章
上一个

Ubuntu中wireguard与wireguard-tools软件包详解

下一个

RustDesk 完全指南:从实现原理到版本选择

关于博主

    老丹是一名C/C++后台开发工程师,信奉“无抽象不设计,无性能不生产”。

  • 技术栈:Modern C++、Linux环境编程、多线程/并发、网络编程等。
  • 信条:能用constexpr解决的问题绝不拖到运行时,能靠RAII避免的泄漏绝不写析构。
  • 正在填坑:从解封装到渲染的C++全链路实现,正在驯服FFmpeg与H.264/H.265。
  • 输出原则:这里的每一段代码都经过-Wall -Wextra -Werror -O2的洗礼。

近期文章

  • Linux系统的安全基石:深入理解可插拔认证模块(PAM) 2026年7月27日
  • vsftpd 完全指南:从核心原理到Docker容器化部署 2026年7月27日
  • 互联网的”导航”安全卫士:深入解读DNSSEC 2026年7月27日
  • Ubuntu DNS 配置完全指南 2026年7月27日
  • 在 Ubuntu 中使用 Certbot 的操作指南 2026年7月27日

文章分类

  • C/C++开发 (13)
  • Docker容器 (3)
  • Linux工具包 (10)
  • Linux服务配置 (33)
  • Linux系统 (10)
  • OpenWrt路由 (2)
  • Shell脚本 (3)
  • 安防技术 (4)
  • 数据安全 (30)
  • 网络协议 (17)
  • 计算机理论 (22)
联系我们:📍 地址:中国·广东省深圳市   |   ✉️ 邮箱:support@tanglinux.com   |   💬 QQ:870866607
版权所有:老丹的足迹粤ICP备2026061170号-1       公安备案图标 粤公网安备44030002013274号