docker

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > 云和虚拟化 > docker > Docker自建RustDesk服务器

Docker轻松自建RustDesk服务器的实现步骤

作者:MUZ木

本文介绍通过Docker和自动化脚本在Linux服务器部署RustDesk的hbbs和hbbr组件,实现自建私有服务器以提升隐私、安全与灵活性,并提供客户端配置及注意事项,感兴趣的可以了解一下

RustDesk 是一款功能强大的开源远程桌面软件,让您完全掌控自己的数据和连接。相比依赖第三方服务,自建 RustDesk 服务器能显著提升隐私性、安全性和灵活性。本文将详细介绍如何通过 Docker 和一个自动化 Bash 脚本,在 Linux 服务器上快速部署 RustDesk 的服务端组件:hbbs(ID/注册服务器)和 hbbr(中继服务器)。

为什么选择自建 RustDesk 服务器?

先决条件

在开始之前,请确保满足以下条件:

andoli

部署 RustDesk 服务器需要两个主要组件:hbbs(处理客户端注册和 ID 分配)以及 hbbr(处理中继连接)。本指南提供了一个 Bash 脚本,自动化部署这两个组件,并确保数据持久化和密钥生成。

部署脚本

以下是一个自动化部署 RustDesk 服务器的 Bash 脚本。它会创建 Docker 容器、设置数据持久化目录,并生成和共享密钥。

#!/bin/bash

# --- 配置 ---
# !!! 重要: 公网服务器 IP 地址 !!!
SERVER_IP="YOUR_SERVER_PUBLIC_IP" # 请替换为您的公网 IP

# --- 服务器的密钥参数 ---
# 使用 "_" 来强制启用密钥。如果 HBBS_DATA_DIR 中存在密钥,则使用它们,否则将生成新密钥。
# 客户端需要 id_ed25519.pub 中的公钥。
KEY_PARAMETER="_" # 推荐:强制使用密钥

# 用于持久化的数据目录 (在脚本所在目录下创建)
BASE_DATA_DIR="./rustdesk_server_data"
HBBS_DATA_DIR="${BASE_DATA_DIR}/hbbs" # hbbs 的数据和密钥将存放在这里
HBBR_DATA_DIR="${BASE_DATA_DIR}/hbbr" # hbbr 的数据目录 (密钥从 HBBS_DATA_DIR 共享)

# Docker 镜像
RUSTDESK_IMAGE="rustdesk/rustdesk-server"

# --- 脚本开始 ---
echo "RustDesk 服务器部署脚本"
echo "---------------------------------"

# 检查 SERVER_IP 是否已配置
if [ "${SERVER_IP}" == "YOUR_SERVER_PUBLIC_IP" ] || [ -z "${SERVER_IP}" ]; then
    echo "错误:请修改脚本,将 SERVER_IP 变量设置为您的公网 IP 地址。"
    exit 1
fi

# 检查 Docker
if ! command -v docker &> /dev/null
then
    echo "错误:找不到 Docker 命令。请先安装 Docker。"
    exit 1
fi
echo "Docker 已找到。"
echo ""

# --- 1. 停止并移除已存在的 RustDesk 容器 ---
echo "正在停止并移除已存在的 RustDesk 容器 (hbbs, hbbr)..."
if sudo docker ps -a --format '{{.Names}}' | grep -qE '^(hbbs|hbbr)$'; then
    sudo docker stop hbbs hbbr > /dev/null 2>&1 || true
    sudo docker rm hbbs hbbr > /dev/null 2>&1 || true
    echo "已存在的 hbbs 和 hbbr 容器已停止并移除。"
else
    echo "未找到名为 hbbs 或 hbbr 的旧容器。"
fi
echo ""

# --- 2. 创建数据目录 ---
echo "服务器 IP: ${SERVER_IP}"
echo "HBBS 数据 (及密钥) 目录: ${HBBS_DATA_DIR}"
echo "HBBR 数据目录: ${HBBR_DATA_DIR}"
echo ""

echo "正在创建数据目录 (如果不存在)..."
mkdir -p "${HBBS_DATA_DIR}"
mkdir -p "${HBBR_DATA_DIR}"
echo "数据目录已确保存在。"
echo ""

# --- 3. 启动 HBBS (信令服务器) ---
echo "正在启动 HBBS (信令服务器)..."
sudo docker run -d \
  --name hbbs \
  -p 21115:21115 \
  -p 21116:21116 \
  -p 21116:21116/udp \
  -v "${HBBS_DATA_DIR}":/root \
  --restart unless-stopped \
  "${RUSTDESK_IMAGE}" \
  hbbs -k "${KEY_PARAMETER}" -r "${SERVER_IP}"

echo "正在等待 HBBS 初始化 (约 5 秒)..."
sleep 5

# 检查 hbbs 是否已启动并生成密钥
if [ ! -f "${HBBS_DATA_DIR}/id_ed25519.pub" ]; then
    echo "错误:HBBS 启动后未找到公钥文件 ${HBBS_DATA_DIR}/id_ed25519.pub。"
    echo "请检查 HBBS 日志: sudo docker logs hbbs"
    sudo docker logs hbbs
    echo "正在清理失败的 HBBS 容器..."
    sudo docker stop hbbs > /dev/null 2>&1 || true
    sudo docker rm hbbs > /dev/null 2>&1 || true
    exit 1
fi
PUBLIC_KEY=$(cat "${HBBS_DATA_DIR}/id_ed25519.pub")
echo "HBBS 已启动,公钥已获取。"
echo ""

# --- 4. 启动 HBBR (中继服务器) ---
echo "正在启动 HBBR (中继服务器)..."
# HBBR 挂载 HBBS_DATA_DIR 以共享由 HBBS 生成的密钥
sudo docker run -d \
  --name hbbr \
  -p 21117:21117 \
  -p 21118:21118 \
  -p 21118:21118/udp \
  -v "${HBBS_DATA_DIR}":/root \
  --restart unless-stopped \
  "${RUSTDESK_IMAGE}" \
  hbbr -k "${KEY_PARAMETER}"

echo "正在等待 HBBR 初始化 (约 3 秒)..."
sleep 3

# 检查 hbbr 是否启动
if ! sudo docker ps --filter "name=hbbr" --filter "status=running" --format '{{.Names}}' | grep -q '^hbbr$'; then
    echo "错误: HBBR 容器未能成功启动或未处于运行状态。"
    echo "请检查 HBBR 日志: sudo docker logs hbbr"
    sudo docker logs hbbr
    echo "正在清理 HBBS 和 HBBR 容器..."
    sudo docker stop hbbs hbbr > /dev/null 2>&1 || true
    sudo docker rm hbbs hbbr > /dev/null 2>&1 || true
    exit 1
fi
echo "HBBR 已启动。"
echo ""

# --- 部署摘要 ---
echo "--- 部署摘要 ---"
echo "RustDesk 服务器容器 (hbbs 和 hbbr) 现在应该正在运行。"
echo "您可以使用以下命令检查它们的状态: sudo docker ps -a"
echo "您可以使用以下命令查看日志: sudo docker logs hbbs  或  sudo docker logs hbbr"
echo ""
echo "--- 客户端配置 ---"
echo "在您的 RustDesk 客户端中,请按如下配置:"
echo "  ID 服务器: ${SERVER_IP}"
echo "  中继服务器: ${SERVER_IP}"
echo "  Key (公钥): ${PUBLIC_KEY}"
echo ""
echo "重要提示: 'Key' 是由 hbbs 生成的公钥文件的内容。"
echo "它已从以下位置读取: ${HBBS_DATA_DIR}/id_ed25519.pub"
echo ""
echo "如果您以后需要查找公钥,请运行: cat ${HBBS_DATA_DIR}/id_ed25519.pub"
echo "脚本执行完毕。"

使用方法

  1. 保存脚本:将上述脚本保存为 deploy-rustdesk.sh
  2. 修改公网 IP:将脚本中的 SERVER_IP="YOUR_SERVER_PUBLIC_IP" 替换为您的服务器公网 IP 地址。
  3. 赋予执行权限
    chmod +x deploy-rustdesk.sh
    
  4. 运行脚本
    ./deploy-rustdesk.sh
    
  5. 检查输出:脚本会输出部署状态、客户端配置信息和公钥。

客户端配置

部署完成后,您需要在 RustDesk 客户端中配置以下信息:

注意事项

常见问题

到此这篇关于Docker轻松自建RustDesk服务器的文章就介绍到这了,更多相关Docker自建RustDesk服务器内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

您可能感兴趣的文章:
阅读全文