Skip to main content
RustDesk · Docker · Cloudflare Tunnel · Self-Hosted · Remote Desktop

專案概述

本專案以社群版映像檔 lejianwen/rustdesk-server-s6 建構自託管遠端桌面基礎設施。該映像以 s6-overlay 把 hbbs(信號伺服器)、hbbr(中繼伺服器)與 Go 語言實作的 Web API 管理後台打包成單一容器,配合一個 cloudflared 容器共享網路,Web Console 透過 Cloudflare Tunnel(Zero Trust)對外曝露,RustDesk 用戶端則直連主機 21115-21117 埠。無裝置數量限制,MIT 授權免費使用。

核心功能

  • 單一容器整合 hbbs + hbbr + Web API(不需分別管理三個 container)
  • Web Console 透過 Cloudflare Tunnel 曝露,主機不對 Web Console 開放入站埠
  • RustDesk 用戶端直連走 21115-21117,不繞 Tunnel(延遲最低)
  • 使用者管理、裝置管理、地址簿/群組、登入日誌、連線日誌、OIDC/LDAP 登入、Web Client、強制登入(MUST_LOGIN=Y
  • 無裝置數量限制,MIT 授權

配置比較

專案架構

兩個容器(rustdesk-s6、cloudflared)共享同一網路命名空間(network_mode: service:rustdesk),cloudflared 直接存取 localhost:21114,不需額外 expose 埠號給外部。

快速開始

1

複製 repo 並設定環境變數

.env 中填入兩個必要值:CLOUDFLARE_TUNNEL_TOKEN(從 Cloudflare Zero Trust Dashboard 建立 Tunnel 取得)與 RUSTDESK_API_JWT_KEY(自訂隨機字串)。
2

啟動服務

3

取得伺服器公鑰

這串公鑰要填進 RustDesk 用戶端的「Key」欄位。也可在 Container Manager 的容器日誌頁看到。
4

首次登入 Web Console

瀏覽器開 https://rustdesk-console.example.com(你在 Cloudflare Tunnel 設的 hostname)。預設帳號 admin,初始密碼從容器日誌取得:
登入後立刻修改密碼。
5

設定 RustDesk 用戶端

ID/中繼伺服器只填域名,不加 http:// 或 port。

注意事項

docker-compose.yml.env 內的 PROXY_ENABLETRUST_PROXY 等網路參數直接影響防爆破封鎖和真實攻擊者 IP 辨識,在不完全了解底層機制的情況下請保持預設設定。.env 含 Tunnel Token 與 JWT Key,不要提交版本控制。data/server/id_ed25519 是私鑰,絕不外洩;公鑰(id_ed25519.pub)才是配發給用戶端的部分。

實際應用面

實驗室成員遠端存取實驗室工作站,不依賴商業遠端桌面服務,連線記錄留在自管伺服器。管理員透過 Web Console 管理使用者帳號與裝置,強制登入模式(MUST_LOGIN=Y)確保未登入帳號無法建立連線。

相關連結