docker自建rustdesk-server遠(yuǎn)程桌面的解決方案
rustdesk簡介
RustDesk 是一款可以平替 TeamViewer 的開源軟件,旨在提供安全便捷的自建方案。
RustDesk 是一款功能齊全的遠(yuǎn)程桌面應(yīng)用,具有以下特性:
- 支持 Windows、macOS、Linux、iOS、Android、Web 等多個平臺。
- 支持 VP8 / VP9 / AV1 軟件編解碼器和 H264 / H265 硬件編解碼器。
- 完全掌控數(shù)據(jù),輕松自建。
- P2P 連接,端到端加密。
- 在 Windows 上可以非管理員不安裝運行,根據(jù)需要在本地或遠(yuǎn)程提升權(quán)限。
- 我們崇尚簡單,盡一切可能讓它簡單。
官方網(wǎng)站:https://rustdesk.com/zh/
項目地址:https://github.com/rustdesk/rustdesk
RustDesk 架構(gòu)
RustDesk 采用了經(jīng)典的客戶端-服務(wù)器模型,其中涉及三個主要組件:RustDesk 客戶端、RustDesk 服務(wù)器和 ID Server。
- RustDesk 客戶端:運行在你的設(shè)備上(Windows,macOS,Linux,Android, iPhone)用于連接兩個設(shè)備的軟件,它負(fù)責(zé)監(jiān)聽來自客戶端的連接請求,并在建立連接后向客戶端發(fā)送屏幕更新和接收輸入事件。
- RustDesk 中繼服務(wù)器(Relay Server):運行在服務(wù)器上,充當(dāng)客戶端之間的橋梁,轉(zhuǎn)發(fā)來自一方的數(shù)據(jù)包到另一方。在某些環(huán)境中(如經(jīng)過 NAT 出網(wǎng))設(shè)備之間無法進行 P2P 連接,可以用服務(wù)器來中轉(zhuǎn)
- ID 服務(wù)器(ID Server):運行在服務(wù)器上,用于維護客戶端及中繼服務(wù)器的連接信息,促進設(shè)備之間建立 P2P 連接。
在RustDesk的服務(wù)器端部署中,hbbr
和 hbbs
是兩個重要的組件,分別用于不同的功能:
- hbbs - 代表
RustDesk ID / Rendezvous Server
,RustDesk ID注冊服務(wù)器,用于分配和注冊ID;hbbs
是RustDesk的中介服務(wù)器(Broker Server),用于管理和協(xié)調(diào)客戶端連接。它幫助客戶端找到并建立P2P連接。hbbs
負(fù)責(zé)維護客戶端的在線狀態(tài),并處理連接請求。當(dāng)客戶端A希望連接客戶端B時,它會向hbbs
發(fā)送請求,hbbs
會幫助它們建立連接。 - hbbr -代表
RustDesk Relay Server
,RustDesk 中繼服務(wù)器,如果P2P無法連接,會使用hbbr進行流量中繼。hbbr
是RustDesk的中繼服務(wù)器(Relay Server),用于在兩臺客戶端之間進行連接中繼。它允許無法直接建立P2P連接的客戶端通過中繼服務(wù)器進行通信。當(dāng)客戶端A和客戶端B之間無法建立直接連接時,它們會通過hbbr
中繼服務(wù)器進行數(shù)據(jù)傳輸。 - rustdesk-utils - RustDesk 命令行工具
P2P直連說明:
- RustDesk 首先嘗試建立直接 P2P 連接,如果 P2P 失敗,將使用中繼服務(wù)器。
- 確認(rèn)連接方式,首先連接到遠(yuǎn)程主機,可以將鼠標(biāo)移動到工具欄圖標(biāo)(綠色圖標(biāo)),將顯示它是直接連接還是通過中繼服務(wù)器連接。
使用端口說明:
序號 | 服務(wù) | 端口 | 協(xié)議 | 用途 | 是否可選 |
---|---|---|---|---|---|
1 | hbbs | 21114 | TCP | 用于 Web 控制臺API,僅在專業(yè)版中可用 | 可選 |
2 | hbbs | 21115 | TCP | NAT類型測試 | 必選 |
3 | hbbs | 21116 | TCP/UDP | UDP用于ID注冊和心跳服務(wù),TCP用于TCP打洞和連接服務(wù) | 必選 |
4 | hbbr | 21117 | TCP | 用于Relay服務(wù) | 必選 |
5 | hbbs | 21118 | TCP | 用于支持Web客戶端 | 可選 |
6 | hbbr | 21119 | TCP | 用于支持Web客戶端 | 可選 |
部署rustdesk-server
rustdesk支持自行搭建屬于你的RustDesk服務(wù)器,所有的一切都是免費且開源的。所謂自建服務(wù)器,也就是自建 ID Server 和 Relay Server。
整體部署架構(gòu)如下:
官方文檔:https://github.com/rustdesk/rustdesk-server/blob/master/README-ZH.md
前置部署要求
前置要求:
- 準(zhǔn)備一臺公網(wǎng)linux服務(wù)器,并綁定公網(wǎng)IP地址,以阿里云輕量應(yīng)用服務(wù)器為例,操作系統(tǒng)為Ubuntu 22.04。
- 服務(wù)器已安裝
docker
和docker-compose
工具
1、登錄阿里云控制臺,配置防火墻規(guī)則,開通以下端口
端口放通說明:
放通TCP端口21115
、21116
、21117
、21118
、21119
放通UDP端口21116
2、登錄阿里云控制臺,配置域名解析(可選):
配置一條A記錄,將rustdesk-server公網(wǎng)IP地址解析到rustdesk.example.com
域名(需自行準(zhǔn)備域名并進行備案)。
部署rustdesk-server
配置主機名
hostnamectl set-hostname rustdesk-server
創(chuàng)建部署目錄
mkdir -p /data/rustdesk/composecd /data/rustdesk/compose
創(chuàng)建docker-compose文件
root@rustdesk-server:/data/rustdesk/compose# vim docker-compose.yaml services: hbbs: container_name: hbbs image: rustdesk/rustdesk-server:1.1.11 command: hbbs environment: - "RELAY=hbbr:21117" - "ENCRYPTED_ONLY=1" ports: - 21115:21115 - 21116:21116 - 21116:21116/udp - 21118:21118 volumes: - /data/rustdesk/root:/root networks: - rustdesk-net depends_on: - hbbr restart: unless-stopped hbbr: container_name: hbbr image: rustdesk/rustdesk-server:1.1.11 command: hbbr ports: - 21117:21117 - 21119:21119 volumes: - /data/rustdesk/root:/root networks: - rustdesk-net restart: unless-stopped networks: rustdesk-net: external: false
主要參數(shù)說明:
- 環(huán)境變量
RELAY
:指定hbbr 服務(wù)的地址和端口,由于使用同一個docker network,可以通過容器名稱hbbr
連接 - 環(huán)境變量
ENCRYPTED_ONLY
:啟用加密連接并使用key驗證,防止其他獲取地址的客戶端非法連接
執(zhí)行以下命令運行容器
root@rustdesk-server:/data/rustdesk/compose# docker-compose up -d [+] Building 0.0s (0/0) docker:default [+] Running 3/3 ? Network compose_rustdesk-net Created 0.1s ? Container hbbr Started 0.1s ? Container hbbs Started
查看運行的兩個容器hbbr
和hbbs
root@rustdesk-server:/data/rustdesk/compose# docker-compose ps NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS hbbr rustdesk/rustdesk-server:1.1.11 "hbbr" hbbr 44 seconds ago Up 43 seconds 0.0.0.0:21117->21117/tcp, :::21117->21117/tcp, 0.0.0.0:21119->21119/tcp, :::21119->21119/tcp hbbs rustdesk/rustdesk-server:1.1.11 "hbbs" hbbs 44 seconds ago Up 42 seconds 0.0.0.0:21115-21116->21115-21116/tcp, :::21115-21116->21115-21116/tcp, 0.0.0.0:21118->21118/tcp, :::21118->21118/tcp, 0.0.0.0:21116->21116/udp, :::21116->21116/udp root@rustdesk-server:/data/rustdesk/compose#
查看主機當(dāng)前目錄結(jié)構(gòu)
root@rustdesk-server:~# apt install -y tree root@rustdesk-server:~# tree /data/rustdesk/ /data/rustdesk/ ├── compose │ └── docker-compose.yaml └── root ├── db_v2.sqlite3 ├── db_v2.sqlite3-shm ├── db_v2.sqlite3-wal ├── id_ed25519 └── id_ed25519.pub 2 directories, 6 files root@rustdesk-server:~#
連接驗證
服務(wù)端搭建好后,在要連接的兩個客戶端設(shè)備上都下載 RustDesk 客戶端。
下載地址是:https://github.com/rustdesk/rustdesk/releases
在rustdesk-server上獲取默認(rèn)生成的公鑰key
root@rustdesk-server:~# cat /data/rustdesk/root/id_ed25519.pub G2yFoE+0pWWqXAHM174TXbsoUqJB1brHKOxZhEKv7hA=
首先找到 RustDesk 客戶端的 設(shè)置
-> ID/中繼服務(wù)器
,然后輸入如下三個信息
- ID 服務(wù)器:
rustdesk.example.com:21116
,默認(rèn)端口為21116
時可以省略端口配置 - 中級服務(wù)器:
rustdesk.example.com:21117
,默認(rèn)端口為21117
時可以省略端口配置 - Key:填寫部署服務(wù)默認(rèn)生成的
id_ed25519.pub
文件中的內(nèi)容
示例配置如下:
所有客戶端必須都完成相應(yīng)配置,配置完成后連接測試:
1、中繼連接測試
連接成功后鼠標(biāo)指針放在左上角綠色圖標(biāo)處,顯示通過加密中繼連接,說明兩臺機器位于不同網(wǎng)絡(luò),無法通過P2P直連,要經(jīng)過阿里云rustdesk-server中繼連接。
2、直連連接測試
如果位于同一網(wǎng)絡(luò)的兩臺客戶端互聯(lián),由于中間不存在NAT設(shè)備和防火墻,將顯示兩臺客戶端為加密直連,無需經(jīng)過中繼:
到此這篇關(guān)于docker自建rustdesk-server遠(yuǎn)程桌面的文章就介紹到這了,更多相關(guān)docker自建rustdesk-server內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
項目訪問使用docker bridge網(wǎng)絡(luò)模式(端口映射)配置過程
這篇文章主要介紹了項目訪問使用docker bridge網(wǎng)絡(luò)模式(端口映射)配置過程,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2025-03-03docker容器間跨宿主機通信-基于overlay的實現(xiàn)方法
這篇文章主要介紹了docker容器間跨宿主機通信-基于overlay的實現(xiàn)方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-02-02windows壞境下docker使用phpmyamin的權(quán)限問題解決
這篇文章主要為大家介紹了windows壞境下docker使用phpmyamin發(fā)生的權(quán)限問題解決分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-12-12Docker部署ELK7.3.0日志收集服務(wù)最佳實踐
這篇文章主要介紹了Docker部署ELK7.3.0日志收集服務(wù)最佳實踐,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10docker網(wǎng)絡(luò)及部署集群和打包鏡像問題
這篇文章主要介紹了docker網(wǎng)絡(luò)及部署集群和打包鏡像問題,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-08-08使用Nexus創(chuàng)建Docker倉庫的方法步驟
這篇文章主要介紹了使用Nexus創(chuàng)建Docker倉庫的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12Ubuntu15.10安裝docker和docker-compose教程
這篇文章主要介紹了Ubuntu15.10安裝docker和docker-compose的教程,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2017-03-03