Docker輕松自建RustDesk服務(wù)器的實現(xiàn)步驟
RustDesk 是一款功能強大的開源遠程桌面軟件,讓您完全掌控自己的數(shù)據(jù)和連接。相比依賴第三方服務(wù),自建 RustDesk 服務(wù)器能顯著提升隱私性、安全性和靈活性。本文將詳細介紹如何通過 Docker 和一個自動化 Bash 腳本,在 Linux 服務(wù)器上快速部署 RustDesk 的服務(wù)端組件:hbbs(ID/注冊服務(wù)器)和 hbbr(中繼服務(wù)器)。
為什么選擇自建 RustDesk 服務(wù)器?
- 數(shù)據(jù)隱私:所有連接和元數(shù)據(jù)都存儲在您自己的服務(wù)器上,避免第三方訪問。
- 安全性:自定義服務(wù)器安全設(shè)置,并使用私有密鑰實現(xiàn)端到端加密。
- 無限制:擺脫公共服務(wù)器的連接數(shù)或帶寬限制。
- 定制性:支持高級配置,滿足特定需求。
先決條件
在開始之前,請確保滿足以下條件:
- 一臺具有公網(wǎng)靜態(tài) IP 地址的 Linux 服務(wù)器(推薦 Ubuntu、CentOS 或 Debian)。
- 服務(wù)器上已安裝 Docker(參考 Docker 官方文檔 安裝)。
- 擁有服務(wù)器的 sudo 或 root 權(quán)限。
- 熟悉基本的 Linux 命令行操作。
- 確保服務(wù)器防火墻已開放以下端口:
- TCP:21115、21116、21117、21118
- UDP:21116、21118
andoli
部署 RustDesk 服務(wù)器需要兩個主要組件:hbbs(處理客戶端注冊和 ID 分配)以及 hbbr(處理中繼連接)。本指南提供了一個 Bash 腳本,自動化部署這兩個組件,并確保數(shù)據(jù)持久化和密鑰生成。
部署腳本
以下是一個自動化部署 RustDesk 服務(wù)器的 Bash 腳本。它會創(chuàng)建 Docker 容器、設(shè)置數(shù)據(jù)持久化目錄,并生成和共享密鑰。
#!/bin/bash
# --- 配置 ---
# !!! 重要: 公網(wǎng)服務(wù)器 IP 地址 !!!
SERVER_IP="YOUR_SERVER_PUBLIC_IP" # 請?zhí)鎿Q為您的公網(wǎng) IP
# --- 服務(wù)器的密鑰參數(shù) ---
# 使用 "_" 來強制啟用密鑰。如果 HBBS_DATA_DIR 中存在密鑰,則使用它們,否則將生成新密鑰。
# 客戶端需要 id_ed25519.pub 中的公鑰。
KEY_PARAMETER="_" # 推薦:強制使用密鑰
# 用于持久化的數(shù)據(jù)目錄 (在腳本所在目錄下創(chuàng)建)
BASE_DATA_DIR="./rustdesk_server_data"
HBBS_DATA_DIR="${BASE_DATA_DIR}/hbbs" # hbbs 的數(shù)據(jù)和密鑰將存放在這里
HBBR_DATA_DIR="${BASE_DATA_DIR}/hbbr" # hbbr 的數(shù)據(jù)目錄 (密鑰從 HBBS_DATA_DIR 共享)
# Docker 鏡像
RUSTDESK_IMAGE="rustdesk/rustdesk-server"
# --- 腳本開始 ---
echo "RustDesk 服務(wù)器部署腳本"
echo "---------------------------------"
# 檢查 SERVER_IP 是否已配置
if [ "${SERVER_IP}" == "YOUR_SERVER_PUBLIC_IP" ] || [ -z "${SERVER_IP}" ]; then
echo "錯誤:請修改腳本,將 SERVER_IP 變量設(shè)置為您的公網(wǎng) 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. 創(chuàng)建數(shù)據(jù)目錄 ---
echo "服務(wù)器 IP: ${SERVER_IP}"
echo "HBBS 數(shù)據(jù) (及密鑰) 目錄: ${HBBS_DATA_DIR}"
echo "HBBR 數(shù)據(jù)目錄: ${HBBR_DATA_DIR}"
echo ""
echo "正在創(chuàng)建數(shù)據(jù)目錄 (如果不存在)..."
mkdir -p "${HBBS_DATA_DIR}"
mkdir -p "${HBBR_DATA_DIR}"
echo "數(shù)據(jù)目錄已確保存在。"
echo ""
# --- 3. 啟動 HBBS (信令服務(wù)器) ---
echo "正在啟動 HBBS (信令服務(wù)器)..."
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 (中繼服務(wù)器) ---
echo "正在啟動 HBBR (中繼服務(wù)器)..."
# 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 容器未能成功啟動或未處于運行狀態(tài)。"
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 服務(wù)器容器 (hbbs 和 hbbr) 現(xiàn)在應(yīng)該正在運行。"
echo "您可以使用以下命令檢查它們的狀態(tài): sudo docker ps -a"
echo "您可以使用以下命令查看日志: sudo docker logs hbbs 或 sudo docker logs hbbr"
echo ""
echo "--- 客戶端配置 ---"
echo "在您的 RustDesk 客戶端中,請按如下配置:"
echo " ID 服務(wù)器: ${SERVER_IP}"
echo " 中繼服務(wù)器: ${SERVER_IP}"
echo " Key (公鑰): ${PUBLIC_KEY}"
echo ""
echo "重要提示: 'Key' 是由 hbbs 生成的公鑰文件的內(nèi)容。"
echo "它已從以下位置讀取: ${HBBS_DATA_DIR}/id_ed25519.pub"
echo ""
echo "如果您以后需要查找公鑰,請運行: cat ${HBBS_DATA_DIR}/id_ed25519.pub"
echo "腳本執(zhí)行完畢。"
使用方法
- 保存腳本:將上述腳本保存為
deploy-rustdesk.sh。 - 修改公網(wǎng) IP:將腳本中的
SERVER_IP="YOUR_SERVER_PUBLIC_IP"替換為您的服務(wù)器公網(wǎng) IP 地址。 - 賦予執(zhí)行權(quán)限:
chmod +x deploy-rustdesk.sh
- 運行腳本:
./deploy-rustdesk.sh
- 檢查輸出:腳本會輸出部署狀態(tài)、客戶端配置信息和公鑰。
客戶端配置
部署完成后,您需要在 RustDesk 客戶端中配置以下信息:
- ID 服務(wù)器:您的服務(wù)器公網(wǎng) IP(例如
192.168.1.1)。 - 中繼服務(wù)器:同 ID 服務(wù)器的 IP 地址。
- Key (公鑰):腳本運行后顯示的公鑰,或通過以下命令查看:
cat rustdesk_server_data/hbbs/id_ed25519.pub
注意事項
- 防火墻設(shè)置:確保防火墻或云服務(wù)提供商的安全組規(guī)則已開放所需的 TCP 和 UDP 端口。
- 密鑰管理:公鑰 (
id_ed25519.pub) 必須正確配置到客戶端,否則無法連接。腳本自動生成并顯示公鑰。 - 持久化數(shù)據(jù):數(shù)據(jù)目錄 (
rustdesk_server_data/hbbs和rustdesk_server_data/hbbr) 存儲密鑰和其他持久化數(shù)據(jù),確保不要誤刪。 - 日志排查:如果遇到問題,可查看容器日志:
sudo docker logs hbbs sudo docker logs hbbr
常見問題
- 連接失敗:檢查防火墻端口是否開放,確認客戶端的 ID 服務(wù)器、中繼服務(wù)器和公鑰是否正確。
- 容器未運行:使用
sudo docker ps -a檢查容器狀態(tài),并查看日志以排查錯誤。 - 密鑰丟失:密鑰存儲在
rustdesk_server_data/hbbs目錄下,備份該目錄以防止丟失。
到此這篇關(guān)于Docker輕松自建RustDesk服務(wù)器的文章就介紹到這了,更多相關(guān)Docker自建RustDesk服務(wù)器內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 如何使用寶塔部署RustDesk中繼服務(wù)器
- docker部署RustDesk自建服務(wù)器的小結(jié)
- Docker 部署開源遠程桌面工具RustDesk的使用
- docker自建rustdesk-server遠程桌面的解決方案
- docker部署rustdesk遠程控制服務(wù)器的實現(xiàn)
- Ubuntu18.04本地化部署Rustdesk服務(wù)器的詳細過程
- RustDesk?Server服務(wù)器搭建教程含api服務(wù)器和webclient服務(wù)器
- 教你使用RustDesk?搭建一個自己的遠程桌面中繼服務(wù)器
- CentOS服務(wù)器+Win客戶端安裝部署遠程控制RustDesk教程
相關(guān)文章
Skywalking?Docker單機環(huán)境搭建過程
這篇文章主要介紹了Skywalking?Docker單機環(huán)境搭建,本次搭建是基于MySQL進行持久化,因此需要提前準備好一個MySQL容器,需要的朋友可以參考下2024-02-02
idea?連接遠程?docker?并部署項目到?docker的過程
這篇文章主要介紹了idea連接遠程docker并部署項目到docker,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-10-10
centos7使用yum實現(xiàn)快速安裝Docker環(huán)境
這篇文章主要為大家詳細介紹了centos7使用yum實現(xiàn)快速安裝Docker環(huán)境的詳細教程,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2025-04-04
解決docker報錯:docker:invalid?reference?format.
在導(dǎo)入鏡像的時候出現(xiàn)問題:invalid reference format,這里總結(jié)下,這篇文章主要給大家介紹了關(guān)于解決docker報錯:docker:invalid?reference?format的相關(guān)資料,需要的朋友可以參考下2024-01-01
Linux搭建Docker環(huán)境的詳細過程(最新推薦)
Docker從17.03版本之后分為CE(Community Edition: 社區(qū)版)和EE(Enterprise Edition: 企業(yè)版),相對于社區(qū)版本,企業(yè)版本強調(diào)安全性,但需付費使用,這里我們使用社區(qū)版本即可,這篇文章給大家介紹Linux搭建Docker環(huán)境的詳細過程,感興趣的朋友一起看看吧2025-04-04

