
使用 Xpra 執行遠端伺服器上的 GUI 應用程式
- Leo
- 技術宅 ( tech geek)
- 2025年8月25日
目錄
雖然 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"