Docker輕松自建RustDesk服務(wù)器的實(shí)現(xiàn)步驟
RustDesk 是一款功能強(qiáng)大的開(kāi)源遠(yuǎn)程桌面軟件,讓您完全掌控自己的數(shù)據(jù)和連接。相比依賴(lài)第三方服務(wù),自建 RustDesk 服務(wù)器能顯著提升隱私性、安全性和靈活性。本文將詳細(xì)介紹如何通過(guò) Docker 和一個(gè)自動(dòng)化 Bash 腳本,在 Linux 服務(wù)器上快速部署 RustDesk 的服務(wù)端組件:hbbs(ID/注冊(cè)服務(wù)器)和 hbbr(中繼服務(wù)器)。
為什么選擇自建 RustDesk 服務(wù)器?
- 數(shù)據(jù)隱私:所有連接和元數(shù)據(jù)都存儲(chǔ)在您自己的服務(wù)器上,避免第三方訪(fǎng)問(wèn)。
- 安全性:自定義服務(wù)器安全設(shè)置,并使用私有密鑰實(shí)現(xiàn)端到端加密。
- 無(wú)限制:擺脫公共服務(wù)器的連接數(shù)或帶寬限制。
- 定制性:支持高級(jí)配置,滿(mǎn)足特定需求。
先決條件
在開(kāi)始之前,請(qǐng)確保滿(mǎn)足以下條件:
- 一臺(tái)具有公網(wǎng)靜態(tài) IP 地址的 Linux 服務(wù)器(推薦 Ubuntu、CentOS 或 Debian)。
- 服務(wù)器上已安裝 Docker(參考 Docker 官方文檔 安裝)。
- 擁有服務(wù)器的 sudo 或 root 權(quán)限。
- 熟悉基本的 Linux 命令行操作。
- 確保服務(wù)器防火墻已開(kāi)放以下端口:
- TCP:21115、21116、21117、21118
- UDP:21116、21118
andoli
部署 RustDesk 服務(wù)器需要兩個(gè)主要組件:hbbs(處理客戶(hù)端注冊(cè)和 ID 分配)以及 hbbr(處理中繼連接)。本指南提供了一個(gè) Bash 腳本,自動(dòng)化部署這兩個(gè)組件,并確保數(shù)據(jù)持久化和密鑰生成。
部署腳本
以下是一個(gè)自動(dòng)化部署 RustDesk 服務(wù)器的 Bash 腳本。它會(huì)創(chuàng)建 Docker 容器、設(shè)置數(shù)據(jù)持久化目錄,并生成和共享密鑰。
#!/bin/bash
# --- 配置 ---
# !!! 重要: 公網(wǎng)服務(wù)器 IP 地址 !!!
SERVER_IP="YOUR_SERVER_PUBLIC_IP" # 請(qǐng)?zhí)鎿Q為您的公網(wǎng) IP
# --- 服務(wù)器的密鑰參數(shù) ---
# 使用 "_" 來(lái)強(qiáng)制啟用密鑰。如果 HBBS_DATA_DIR 中存在密鑰,則使用它們,否則將生成新密鑰。
# 客戶(hù)端需要 id_ed25519.pub 中的公鑰。
KEY_PARAMETER="_" # 推薦:強(qiáng)制使用密鑰
# 用于持久化的數(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"
# --- 腳本開(kāi)始 ---
echo "RustDesk 服務(wù)器部署腳本"
echo "---------------------------------"
# 檢查 SERVER_IP 是否已配置
if [ "${SERVER_IP}" == "YOUR_SERVER_PUBLIC_IP" ] || [ -z "${SERVER_IP}" ]; then
echo "錯(cuò)誤:請(qǐng)修改腳本,將 SERVER_IP 變量設(shè)置為您的公網(wǎng) IP 地址。"
exit 1
fi
# 檢查 Docker
if ! command -v docker &> /dev/null
then
echo "錯(cuò)誤:找不到 Docker 命令。請(qǐng)先安裝 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. 啟動(dòng) HBBS (信令服務(wù)器) ---
echo "正在啟動(dòng) 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 是否已啟動(dòng)并生成密鑰
if [ ! -f "${HBBS_DATA_DIR}/id_ed25519.pub" ]; then
echo "錯(cuò)誤:HBBS 啟動(dòng)后未找到公鑰文件 ${HBBS_DATA_DIR}/id_ed25519.pub。"
echo "請(qǐng)檢查 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 已啟動(dòng),公鑰已獲取。"
echo ""
# --- 4. 啟動(dòng) HBBR (中繼服務(wù)器) ---
echo "正在啟動(dòng) 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 是否啟動(dòng)
if ! sudo docker ps --filter "name=hbbr" --filter "status=running" --format '{{.Names}}' | grep -q '^hbbr$'; then
echo "錯(cuò)誤: HBBR 容器未能成功啟動(dòng)或未處于運(yùn)行狀態(tài)。"
echo "請(qǐng)檢查 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 已啟動(dòng)。"
echo ""
# --- 部署摘要 ---
echo "--- 部署摘要 ---"
echo "RustDesk 服務(wù)器容器 (hbbs 和 hbbr) 現(xiàn)在應(yīng)該正在運(yùn)行。"
echo "您可以使用以下命令檢查它們的狀態(tài): sudo docker ps -a"
echo "您可以使用以下命令查看日志: sudo docker logs hbbs 或 sudo docker logs hbbr"
echo ""
echo "--- 客戶(hù)端配置 ---"
echo "在您的 RustDesk 客戶(hù)端中,請(qǐng)按如下配置:"
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 "如果您以后需要查找公鑰,請(qǐng)運(yùn)行: 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
- 運(yùn)行腳本:
./deploy-rustdesk.sh
- 檢查輸出:腳本會(huì)輸出部署狀態(tài)、客戶(hù)端配置信息和公鑰。
客戶(hù)端配置
部署完成后,您需要在 RustDesk 客戶(hù)端中配置以下信息:
- ID 服務(wù)器:您的服務(wù)器公網(wǎng) IP(例如
192.168.1.1)。 - 中繼服務(wù)器:同 ID 服務(wù)器的 IP 地址。
- Key (公鑰):腳本運(yùn)行后顯示的公鑰,或通過(guò)以下命令查看:
cat rustdesk_server_data/hbbs/id_ed25519.pub
注意事項(xiàng)
- 防火墻設(shè)置:確保防火墻或云服務(wù)提供商的安全組規(guī)則已開(kāi)放所需的 TCP 和 UDP 端口。
- 密鑰管理:公鑰 (
id_ed25519.pub) 必須正確配置到客戶(hù)端,否則無(wú)法連接。腳本自動(dòng)生成并顯示公鑰。 - 持久化數(shù)據(jù):數(shù)據(jù)目錄 (
rustdesk_server_data/hbbs和rustdesk_server_data/hbbr) 存儲(chǔ)密鑰和其他持久化數(shù)據(jù),確保不要誤刪。 - 日志排查:如果遇到問(wèn)題,可查看容器日志:
sudo docker logs hbbs sudo docker logs hbbr
常見(jiàn)問(wèn)題
- 連接失敗:檢查防火墻端口是否開(kāi)放,確認(rèn)客戶(hù)端的 ID 服務(wù)器、中繼服務(wù)器和公鑰是否正確。
- 容器未運(yùn)行:使用
sudo docker ps -a檢查容器狀態(tài),并查看日志以排查錯(cuò)誤。 - 密鑰丟失:密鑰存儲(chǔ)在
rustdesk_server_data/hbbs目錄下,備份該目錄以防止丟失。
到此這篇關(guān)于Docker輕松自建RustDesk服務(wù)器的文章就介紹到這了,更多相關(guān)Docker自建RustDesk服務(wù)器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Docker跨服務(wù)器通信Overlay解決方案(上)之 Consul單實(shí)例
這篇文章主要介紹了Docker跨服務(wù)器通信Overlay解決方案(上)之 Consul單實(shí)例,本文通過(guò)場(chǎng)景分析實(shí)例代碼相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-12-12
docker容器數(shù)據(jù)卷之具名掛載和匿名掛載問(wèn)題
容器數(shù)據(jù)卷就是目錄的掛載,將我們的容器的目錄掛載到宿主機(jī)上,從而實(shí)現(xiàn)打通宿主機(jī)和容器之間的文件共享功能,這篇文章主要介紹了docker容器數(shù)據(jù)卷 - 具名掛載和匿名掛載問(wèn)題,需要的朋友可以參考下2021-11-11
開(kāi)源框架?Matrix-Dendrite?搭建聊天服務(wù)器的詳細(xì)過(guò)程
Matrix?是一個(gè)開(kāi)源、可交互、去中心化的實(shí)時(shí)通信服務(wù)框架。使用?Matrix?可以搭建安全的通信服務(wù)器,配合支持?Matrix?的客戶(hù)端可以實(shí)現(xiàn)個(gè)人、團(tuán)隊(duì)間的實(shí)時(shí)聊天交互,對(duì)Matrix?Dendrite搭建聊天服務(wù)器的過(guò)程感興趣的朋友一起看看吧2022-03-03
Docker安裝MongoDB的過(guò)程(mongo.latest)
MongoDB是一種高性能、靈活的數(shù)據(jù)庫(kù),特別適合處理大量非結(jié)構(gòu)化數(shù)據(jù),它采用文檔數(shù)據(jù)模型,支持復(fù)雜的數(shù)據(jù)結(jié)構(gòu),提供類(lèi)似面向?qū)ο蟮牟樵?xún)語(yǔ)言,本文給大家介紹Docker安裝MongoDB的過(guò)程(mongo.latest),感興趣的朋友一起看看吧2024-11-11
Docker日志太多導(dǎo)致磁盤(pán)占滿(mǎn)的處理方法
這篇文章主要介紹了Docker日志太多導(dǎo)致磁盤(pán)占滿(mǎn)的處理方法,需要的朋友可以參考下2018-10-10
docker安裝prometheus和grafana的詳細(xì)過(guò)程
prometheus通過(guò)各種Exporter采集到監(jiān)控?cái)?shù)據(jù),然后存儲(chǔ)進(jìn)prometheus中,以供查詢(xún)展示,這篇文章主要介紹了docker安裝prometheus和grafana,需要的朋友可以參考下2023-02-02
群暉NAS利用Docker容器搭建KMS激活服務(wù)器實(shí)現(xiàn)激活windows系統(tǒng)和office(操作步驟)
本文跟大家分享一下如何利用群暉NAS的Docker容器套件搭建KMS服務(wù)器,并演示如何利用我們自己的KMS服務(wù)器激活Windows操作系統(tǒng)與Microsoft Office,感興趣的朋友跟隨小編一起看看吧2021-05-05
Docker部署RocketMQ的實(shí)現(xiàn)示例
本文主要介紹了Docker部署RocketMQ的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-10-10
SEATA事務(wù)服務(wù)DOCKER部署的過(guò)程詳解
這篇文章主要介紹了SEATA事務(wù)服務(wù)DOCKER部署的過(guò)程詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03

