使用 Xpra 執行遠端伺服器上的 GUI 應用程式

使用 Xpra 執行遠端伺服器上的 GUI 應用程式

目錄

雖然 VNC 或 RDP 可以用來遠端存取 GUI 應用程式,但它們通常需要完整的桌面環境,消耗大量系統資源與頻寬,容易出現延遲與畫質不佳的問題。相比之下,Xpra 是一個更輕量級的解決方案,能讓你在遠端伺服器上執行單一 GUI 應用程式,並將畫面顯示在本地機器或瀏覽器中,無需整個桌面環境。

快速開始

以下將介紹如何在 Ubuntu/Debian 伺服器上安裝與啟動 Xpra ,並透過 SSH 隧道安全地將應用程式畫面轉發到本地端。

1. 在伺服器上安裝 Xpra

sudo apt update
sudo apt install xpra

2. 啟動 Xpra 伺服器並綁定 GUI 應用程式

請根據需求設定顯示器號碼、應用程式與本地端口:

DISPLAY=:100           # 指定顯示器號碼 (建議 :100 或更高)
GUI_APP=gedit          # 你要執行的 GUI 應用程式
DISPLAY_PORT=10000     # 本地端口 (可自訂)
xpra start $DISPLAY --start=$GUI_APP --bind-tcp=0.0.0.0:$DISPLAY_PORT --html=on

3. 建立 SSH 隧道連接

由於 Xpra 在伺服器上建立的端口會是在本地網路中,為了安全的在遠端存取,我們需要透過 SSH 隧道將該端口轉發到公網: (可以參考中華電信固定 IP 的申請及設定 免費取得公網 IP)

DISPLAY_PORT=10000     # 本地端口 (需與上面設定相同)
USER=<user-name>       # 伺服器使用者名稱,用於 SSH 連線
HOST=<ip-address>      # 伺服器 IP 位址或域名,用於 SSH 連線
SSH_PORT=22            # SSH 連接埠 (預設 22)
ssh -L $DISPLAY_PORT:localhost:$DISPLAY_PORT $USER@$HOST -p $SSH_PORT

在本地端瀏覽器存取

打開瀏覽器,輸入 http://localhost:10000(或你設定的端口),即可直接操作遠端的 GUI 應用程式。

常用管理指令

若已啟動 Xpra 會話,可用下列指令管理:

xpra stop $DISPLAY      # 停止會話
xpra restart $DISPLAY   # 重新啟動會話
xpra info $DISPLAY      # 查詢會話狀態
xpra list               # 列出所有會話

進階用法:直接用 Xpra 客戶端連線

上述方法每次都需要登入伺服器啟動 xpra 後再建立 SSH 隧道,較為繁瑣,所以我通常會在本地端安裝 Xpra 客戶端 ,然後直接用 Xpra 連線到遠端伺服器。

在本地安裝 Xpra 後,使用以下指令直接連線:

xpra start ssh:$USER@$HOST:$DISPLAY --ssh="ssh -p $SSH_PORT" --start-child=$GUI_APP --html=on

這樣 Xpra 會自動處理 SSH 連線與轉發,無需手動設置隧道。結束時可以使用以下指令來停止會話:

xpra stop ssh:$USER@$HOST:$DISPLAY --ssh="ssh -p $SSH_PORT"

相關文章

極致輕薄、超強續航!LG gram 14 吋連續使用 21.5 小時大挑戰 - 外出工作的最佳選擇!

極致輕薄、超強續航!LG gram 14 吋連續使用 21.5 小時大挑戰 - 外出工作的最佳選擇!

這次我要和大家分享一下我的新筆記本電腦 - LG gram 14 吋。在大學筆電壽終正寢後,我開始研究市面上的筆記本電腦,尋找最適合我的需求。這次我設定了一些挑

閱讀更多
小米水離子吹風機 H500:女性的福音 - 冷熱風交替

小米水離子吹風機 H500:女性的福音 - 冷熱風交替

家中的吹風機壞掉後,我開始尋找一款能夠提升生活質感的吹風機。在這次的探索中,我發現了一款名為小米水離子吹風機 H500 的產品。這款吹風機不僅具有獨特

閱讀更多
誒!原來 Git 還能這樣用!?

誒!原來 Git 還能這樣用!?

Git 除了常見的 git init、git clone、git add、git commit、git push 等指令外,還有許多不常見但非常實用的指令可以使用。 本篇就

閱讀更多