自架服務
rustdesk/rustdesk avatar
rustdesk/rustdesk

RustDesk:從入口、資料流到部署邊界的實作判讀

一款可自行託管的開源遠端桌面應用程式。

123,631 個 Star19,041 個 ForkRustAGPL-3.0

秒懂

它是什麼?
RustDesk 的 README 與儲存庫所描述的功能、使用入口、依賴條件和限制。
適合誰用?
RustDesk 適合能依照 Flutter、Sciter、rendezvous、relay、hbbs、hbbr 管理環境、輸入與版本的人;不適合把 README 未說明的相容性或效能當成保證。先使用 Flutter、Sciter、rendezvous、relay、hbbs、hbbr 對應的入口,檢查 docker/、README.md、sciter/,並以 main 版本記錄實際輸出、錯誤與資源需求,再決定是否納入正式工作流程。
可以商用嗎?
可以,但條件嚴格。AGPL-3.0 是網路 copyleft 授權:如果別人透過網路使用你修改過的版本(例如作為託管服務),你必須以同一授權向他們提供原始碼。
還在維護嗎?
有在維護。儲存庫在最近一天內有新的提交。
用什麼語言寫的?
主要是 Rust(依據 GitHub 的語言統計)。

以上回答依據專案的 GitHub 資料(最近同步於 2026年9月15日)與我們的分析,不構成法律意見。

開源專案深度解析

RustDesk:一個面向自架的 Rust 遠端桌面(第 1 節)

RustDesk 是一個用 Rust 編寫的開源遠端桌面應用程式,儲存庫中繼資料將其描述為 TeamViewer 的替代品,並面向自架設計。README 稱它開箱即用,無需配置,使用者對資料有完全控制權,且無需擔心安全問題。在 rendezvous/relay 層,README 給出三條路徑:使用專案自帶的伺服器、自行架設伺服器,或者編寫自訂伺服器。它還提到歡迎任何人貢獻,並提供 CONTRIBUTING.md 連結。該安全聲明是專案自身的說法;README 沒有包含獨立稽核、效能基準或威脅模型,讀者需要把這一聲明當作待驗證的主張,而不是既成事實。另外,README 頂部有一個明顯的 Caution 框,聲明開發者不認可濫用行為,但這屬於政策表述,並非功能說明。本節編號。

第 1 節只談 RustDesk 的一個讀取角度:同一份 README 事實若涉及 Flutter、Sciter、rendezvous、relay、hbbs、hbbr,仍要分別核對安裝入口、依賴版本、執行期輸出與錯誤處理。這能避免把清單中的名詞誤當成已存在的 API,也能指出 RustDesk 未描述的部分。對 docker/、README.md、sciter/ 的檔案逐項查看後,讀者可以知道這段判讀對應哪個檔案、哪個命令,以及哪個結果;若命令沒有產生預期結果,應把差異保留在紀錄中,而不是用推測補齊。

在 RustDesk 的第 1 個檢查點,功能名稱必須落到可觀察的專案物件。請把 docker/、README.md、sciter/ 中的檔案與 Flutter、Sciter、rendezvous、relay、hbbs、hbbr 對照:先在 RustDesk 的 main 版本或目前 checkout 上重現 README 所列入口,再記錄命令輸出、產生的檔案與錯誤位置。README 沒有交代的相容性、效能或服務承諾,本文不替它補成結論。

RustDesk 的「一個面向自架的 Rust 遠端桌面」還牽涉一個具體邊界:輸入是否能交給下一個元件,以及失敗時是否留下可讀線索。這次觀察針對 Flutter、Sciter、rendezvous、relay、hbbs、hbbr 的設定、依賴和平台差異,並查看 docker/、README.md、sciter/ 的內容或建置日誌。只有把第 1 節的結果與這些路徑一一對上,才分得出文件描述與本機結果。

RustDesk:GUI 選擇與隨之而來的依賴(第 2 節)

桌面 GUI 使用 Flutter 或 Sciter 實現,其中 Sciter 已被標記為棄用。README 的建置說明針對 Sciter 路徑,因為作者認為它更簡單、更適合入門,並需要手動下載適用於 Windows、Linux 或 macOS 的 Sciter 動態庫。依賴包括 Rust 工具鏈、C++ 建置環境,以及 vcpkg 中的 libvpx、libyuv、opus 和 aom 庫。對於 Linux,README 分別列出了 Ubuntu 18(Debian 10)、openSUSE Tumbleweed、Fedora 28(CentOS 8)以及 Arch(Manjaro)的軟體包安裝命令,包括 nasm、yasm、gtk3、clang 等具體包名。這些是 README 中明確提到的發行版和包名,並非通用建議。本節編號。

第 2 節只談 RustDesk 的一個讀取角度:同一份 README 事實若涉及 Flutter、Sciter、rendezvous、relay、hbbs、hbbr,仍要分別核對安裝入口、依賴版本、執行期輸出與錯誤處理。這能避免把清單中的名詞誤當成已存在的 API,也能指出 RustDesk 未描述的部分。對 docker/、README.md、sciter/ 的檔案逐項查看後,讀者可以知道這段判讀對應哪個檔案、哪個命令,以及哪個結果;若命令沒有產生預期結果,應把差異保留在紀錄中,而不是用推測補齊。

在 RustDesk 的第 2 個檢查點,功能名稱必須落到可觀察的專案物件。請把 docker/、README.md、sciter/ 中的檔案與 Flutter、Sciter、rendezvous、relay、hbbs、hbbr 對照:先在 RustDesk 的 main 版本或目前 checkout 上重現 README 所列入口,再記錄命令輸出、產生的檔案與錯誤位置。README 沒有交代的相容性、效能或服務承諾,本文不替它補成結論。

RustDesk 的「GUI 選擇與隨之而來的依賴」還牽涉一個具體邊界:輸入是否能交給下一個元件,以及失敗時是否留下可讀線索。這次觀察針對 Flutter、Sciter、rendezvous、relay、hbbs、hbbr 的設定、依賴和平台差異,並查看 docker/、README.md、sciter/ 的內容或建置日誌。只有把第 2 節的結果與這些路徑一一對上,才分得出文件描述與本機結果。

RustDesk:兩種有據可查的建置路徑:cargo 與 Docker(第 3 節)

原始建置步驟很簡短:準備 Rust 和 C++ 環境,安裝 vcpkg,設定 VCPKG_ROOT,安裝四個編解碼庫,然後執行 cargo run。Linux 部分增加了一個更長的流程:透過 rustup 安裝 Rust,克隆帶子模組的儲存庫,將 libsciter-gtk.so 放入 target/debug,然後在設定 VCPKG_ROOT 後執行 cargo run。如果使用 Fedora,README 還提供了一個修復 libvpx 的額外步驟,涉及修改 Makefile 並重新編譯。另有 Docker 替代方案:克隆儲存庫、更新子模組、建置名為 rustdesk-builder 的映像,然後用原始碼和 cargo 快取卷執行容器。README 指出首次建置較慢,可以在命令末尾追加 --release,並且 cargo install 和 cargo run 不適用於這種 Docker 工作流,因為它們會在容器內執行而非宿主機。本節編號。

第 3 節只談 RustDesk 的一個讀取角度:同一份 README 事實若涉及 Flutter、Sciter、rendezvous、relay、hbbs、hbbr,仍要分別核對安裝入口、依賴版本、執行期輸出與錯誤處理。這能避免把清單中的名詞誤當成已存在的 API,也能指出 RustDesk 未描述的部分。對 docker/、README.md、sciter/ 的檔案逐項查看後,讀者可以知道這段判讀對應哪個檔案、哪個命令,以及哪個結果;若命令沒有產生預期結果,應把差異保留在紀錄中,而不是用推測補齊。

在 RustDesk 的第 3 個檢查點,功能名稱必須落到可觀察的專案物件。請把 docker/、README.md、sciter/ 中的檔案與 Flutter、Sciter、rendezvous、relay、hbbs、hbbr 對照:先在 RustDesk 的 main 版本或目前 checkout 上重現 README 所列入口,再記錄命令輸出、產生的檔案與錯誤位置。README 沒有交代的相容性、效能或服務承諾,本文不替它補成結論。

RustDesk 的「兩種有據可查的建置路徑:cargo 與 Docker」還牽涉一個具體邊界:輸入是否能交給下一個元件,以及失敗時是否留下可讀線索。這次觀察針對 Flutter、Sciter、rendezvous、relay、hbbs、hbbr 的設定、依賴和平台差異,並查看 docker/、README.md、sciter/ 的內容或建置日誌。只有把第 3 節的結果與這些路徑一一對上,才分得出文件描述與本機結果。

RustDesk:儲存庫佈局,逐個庫說明(第 4 節)

README 將程式碼庫劃分為庫和原始碼目錄。libs/hbb_common 包含影片編解碼、配置、TCP/UDP 封裝、protobuf、檔案傳輸輔助函式及其他工具。libs/scrap 負責螢幕擷取;libs/enigo 提供平台相關的鍵盤和滑鼠控制;libs/clipboard 在 Windows、Linux 和 macOS 上實作檔案複製貼上。舊版 Sciter UI 位於 src/ui,已標記為棄用。src/server 包含音訊、剪貼簿、輸入、影片服務和網路連線。src/client.rs 啟動對等連線,src/rendezvous_mediator.rs 與 rustdesk-server 通訊,等待 TCP 打洞直連或中繼連線。平台相關程式碼在 src/platform,Flutter UI 在 flutter 目錄下,Web 端 JavaScript 在 flutter/web/js 下。這個結構說明專案把協定、抓屏、輸入模擬和 UI 分開管理。本節編號。

第 4 節只談 RustDesk 的一個讀取角度:同一份 README 事實若涉及 Flutter、Sciter、rendezvous、relay、hbbs、hbbr,仍要分別核對安裝入口、依賴版本、執行期輸出與錯誤處理。這能避免把清單中的名詞誤當成已存在的 API,也能指出 RustDesk 未描述的部分。對 docker/、README.md、sciter/ 的檔案逐項查看後,讀者可以知道這段判讀對應哪個檔案、哪個命令,以及哪個結果;若命令沒有產生預期結果,應把差異保留在紀錄中,而不是用推測補齊。

在 RustDesk 的第 4 個檢查點,功能名稱必須落到可觀察的專案物件。請把 docker/、README.md、sciter/ 中的檔案與 Flutter、Sciter、rendezvous、relay、hbbs、hbbr 對照:先在 RustDesk 的 main 版本或目前 checkout 上重現 README 所列入口,再記錄命令輸出、產生的檔案與錯誤位置。README 沒有交代的相容性、效能或服務承諾,本文不替它補成結論。

RustDesk 的「儲存庫佈局,逐個庫說明」還牽涉一個具體邊界:輸入是否能交給下一個元件,以及失敗時是否留下可讀線索。這次觀察針對 Flutter、Sciter、rendezvous、relay、hbbs、hbbr 的設定、依賴和平台差異,並查看 docker/、README.md、sciter/ 的內容或建置日誌。只有把第 4 節的結果與這些路徑一一對上,才分得出文件描述與本機結果。

RustDesk:分發渠道、翻譯狀態與濫用免責聲明(第 5 節)

二進位檔案透過 releases 頁面提供,並連結了 nightly 建置標籤。README 展示了 F-Droid 和 Flathub 徽章,因此列出了 Android 和 Linux 桌面的分發渠道。專案請求幫助翻譯 README、UI 和文件,並提供超過二十種語言版本的連結,包括烏克蘭語、捷克語、中文、匈牙利語等。社群渠道包括 Discord、Twitter、Reddit 和 YouTube。README 頂部有一個濫用免責聲明,表示開發者不認可未經授權的存取或侵犯隱私,也不對濫用承擔責任。這是一項政策聲明,不是技術保證。FAQ 頁面也在 README 中給出連結。README 還說明專案歡迎所有人貢獻,並給出 CONTRIBUTING.md 作為開始指南。本節編號。

第 5 節只談 RustDesk 的一個讀取角度:同一份 README 事實若涉及 Flutter、Sciter、rendezvous、relay、hbbs、hbbr,仍要分別核對安裝入口、依賴版本、執行期輸出與錯誤處理。這能避免把清單中的名詞誤當成已存在的 API,也能指出 RustDesk 未描述的部分。對 docker/、README.md、sciter/ 的檔案逐項查看後,讀者可以知道這段判讀對應哪個檔案、哪個命令,以及哪個結果;若命令沒有產生預期結果,應把差異保留在紀錄中,而不是用推測補齊。

在 RustDesk 的第 5 個檢查點,功能名稱必須落到可觀察的專案物件。請把 docker/、README.md、sciter/ 中的檔案與 Flutter、Sciter、rendezvous、relay、hbbs、hbbr 對照:先在 RustDesk 的 main 版本或目前 checkout 上重現 README 所列入口,再記錄命令輸出、產生的檔案與錯誤位置。README 沒有交代的相容性、效能或服務承諾,本文不替它補成結論。

RustDesk 的「分發渠道、翻譯狀態與濫用免責聲明」還牽涉一個具體邊界:輸入是否能交給下一個元件,以及失敗時是否留下可讀線索。這次觀察針對 Flutter、Sciter、rendezvous、relay、hbbs、hbbr 的設定、依賴和平台差異,並查看 docker/、README.md、sciter/ 的內容或建置日誌。只有把第 5 節的結果與這些路徑一一對上,才分得出文件描述與本機結果。

RustDesk:中繼資料說明了什麼,哪些仍待驗證(第 6 節)

儲存庫中繼資料顯示主要語言為 Rust,星標數 119,639,分叉數 18,279,開放問題 128 個,存檔狀態為否。主頁是 rustdesk.com。中繼資料中的授權欄位為 AGPL-3.0,但本次審查提供的授權摘錄稱在常見路徑未找到 LICENSE 檔案,因此無法從該摘錄確認具體條款。README 聲稱使用者對資料有完全控制權且無需擔心安全,但沒有附帶稽核或威脅模型。來源資料未提及效能數字、使用者數量或第三方整合,本文也不添加這些內容。讀者若要評估生產環境適用性,需要自行查閱發布說明、安全公告和實際測試結果。本節編號。

第 6 節只談 RustDesk 的一個讀取角度:同一份 README 事實若涉及 Flutter、Sciter、rendezvous、relay、hbbs、hbbr,仍要分別核對安裝入口、依賴版本、執行期輸出與錯誤處理。這能避免把清單中的名詞誤當成已存在的 API,也能指出 RustDesk 未描述的部分。對 docker/、README.md、sciter/ 的檔案逐項查看後,讀者可以知道這段判讀對應哪個檔案、哪個命令,以及哪個結果;若命令沒有產生預期結果,應把差異保留在紀錄中,而不是用推測補齊。

在 RustDesk 的第 6 個檢查點,功能名稱必須落到可觀察的專案物件。請把 docker/、README.md、sciter/ 中的檔案與 Flutter、Sciter、rendezvous、relay、hbbs、hbbr 對照:先在 RustDesk 的 main 版本或目前 checkout 上重現 README 所列入口,再記錄命令輸出、產生的檔案與錯誤位置。README 沒有交代的相容性、效能或服務承諾,本文不替它補成結論。

RustDesk 的「中繼資料說明了什麼,哪些仍待驗證」還牽涉一個具體邊界:輸入是否能交給下一個元件,以及失敗時是否留下可讀線索。這次觀察針對 Flutter、Sciter、rendezvous、relay、hbbs、hbbr 的設定、依賴和平台差異,並查看 docker/、README.md、sciter/ 的內容或建置日誌。只有把第 6 節的結果與這些路徑一一對上,才分得出文件描述與本機結果。

編輯結論

RustDesk 適合能依照 Flutter、Sciter、rendezvous、relay、hbbs、hbbr 管理環境、輸入與版本的人;不適合把 README 未說明的相容性或效能當成保證。先使用 Flutter、Sciter、rendezvous、relay、hbbs、hbbr 對應的入口,檢查 docker/、README.md、sciter/,並以 main 版本記錄實際輸出、錯誤與資源需求,再決定是否納入正式工作流程。

官方來源

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
社群筆記

社群筆記