快轉到主要內容

Cloudflare Tunnel跑網頁版VNC,瀏覽器遠端連線到Linux桌面

· 民國113年甲辰年
· ·
分類   Linux系統 Self-hosting自架
標籤   Cloudflare VNC
目錄

Cloudflare Tunnel這款服務能將你的本機服務暴露到公開網路,讓你用自訂網域存取內網的服務。它除了轉發HTTP的流量之外也支援TCP協定。故,我們可以透過這個服務,建立網頁版的VNC連線畫面。

這樣客戶端連VPN都不需要,只需要一個瀏覽器,便能夠存取遠端Linux的桌面。

說到網頁版的VNC方案,我們有KasmVNCnoVNC這類方案,為何還要用Cloudflare Tunnel呢?

它的價值就在於把不支援瀏覽器的VNC轉換成網頁版本,例如TigerVNC或TightVNC,讓你能沿用現有的配置。並且Cloudflare Tunnel能結合Cloudflare Zero Trust,在登入VNC之前再加一層強力驗證,讓VNC密碼更難被暴力破解。

1. 設定VNC服務
#

我以Ubuntu + XFCE桌面為例子

請先安裝TigerVNC,設定好Systemd系統服務。VNC通訊埠設定5901。

由於Cloudflare Tunnel的網頁界面無法調整VNC的連線品質,可能產生畫面撕裂。建議在伺服器端就先設定降低頻寬的措施,例如指定1280x720以下的低解析度,防止延遲過高。

此外,目前Cloudflare Tunnel不支援音訊串流。

2. 設定Cloudflare Tunnel
#

  1. 安裝cloudflared服務,將其與個人網域連結。

  2. 修改cloudflared設定檔,設定監聽TCP 5901

tunnel: "填入Tunnel的UUID"

ingress:

- hostname: vnc.example.com # 連線到自訂網域的vnc子網域
  service: tcp://localhost:5901 # 監聽VNC通訊埠

- service: http_status:404
  1. 啟動Cloudflared服務
sudo systemctl start cloudflared
  1. 在Cloudflare後台編輯網域的DNS紀錄,新增一筆CNAME紀錄,新增一個子網域vnc,後面填寫<Cloudflare Tunnel的UUID>.cfargotunnel.com

  2. 前往Cloudflare Zero Trust,點選Access → 新增應用程式 → Self-hosted,新增應用程式,指向vnc子網域,原則設定Email登入。

  3. 瀏覽器轉譯勾選VNC

  4. 前往https://vnc.example.com。這樣登入前要先輸入一次E-mail驗證碼,再輸入VNC密碼,才會看到遠端Linux的桌面。

參考資料
#

相關文章

Cloudflare Tunnel教學,從外網安全地存取內網的Linux伺服器
分類   Linux系統 Self-hosting自架
標籤   Cloudflare
KasmVNC用法,透過網頁VNC遠端Linux遠端桌面
分類   Linux系統 Self-hosting自架
標籤   KasmVNC Remote Desktop VNC VirtualGL
VNC + PulseAudio,串流播放Linux遠端桌面的音訊
分類   Linux系統 Self-hosting自架
標籤   VNC PulseAudio PipeWire

留言板

此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。要討論程式碼請用Giscus,匿名討論請用Disqus。

這是Disqus留言板,您可能會看到Disqus強制投放的廣告。為防止垃圾內容,有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。若要上傳圖片請善用圖床網站。