使用 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"
標籤 :
分享 :

相關文章

使用 OpenSSH 替沒有固定 IP 的本地主機 (WSL2) 建立反向 TCP 遠端通道 (Ngrok 免費替代)

使用 OpenSSH 替沒有固定 IP 的本地主機 (WSL2) 建立反向 TCP 遠端通道 (Ngrok 免費替代)

若我們希望將本地主機的服務,例如 ssh 伺服器供外部連線,但我們又沒有固定 IP 時,我們可以使用 OpenSSH 建立反向 TCP 遠端通道,讓外部主機可以透過這個通道連線到我們的本地主機。

閱讀更多
如何解決 git ssh key permission denied (publickey) 的錯誤

如何解決 git ssh key permission denied (publickey) 的錯誤

最近在設定 git ssh-key 時發生了 Permission denied (publickey) 的問題。雖然網路上有很多相關的解決方案,但是都沒有解決我的問題。因此在這邊紀錄一下我遇到的問題及解決方案。 已經確認 .ssh 資料夾裡面已經有 key 了,也在 GitHub 上正確設定了,在其他電腦運作都沒問題。但是在這台電腦上卻一直出現 Permission denied (publickey) 的錯誤。

閱讀更多
如何配置多個 git ssh keys 並依照專案動態切換 git config

如何配置多個 git ssh keys 並依照專案動態切換 git config

我有時候會在公司的電腦開發自己的專案,也會在家裡的電腦開發公司的專案,這時候就會遇到一個問題,就是公司的 Git 用的是公司的帳號,而自己的專案用的是自己的帳號,這時候就需要配置多個 Git SSH Key 並依照專案設置不同的 Git Config。

閱讀更多