快轉到主要內容

瀏覽器跑Linux遠端桌面!Webtop Docker部署教學

分類   Linux系統 Self-hosting自架
標籤   Virtual Desktop Infrastructure KasmVNC Remtoe Desktop Docker
🗓️ 民國113年 甲辰年
✍ 切換正體/簡體字
目錄

利用Docker建置Linux遠端桌面,隨時隨地用瀏覽器遠端存取。

1. Webtop特點
#

LinuxServer Webtop是在Docker裡跑裝好桌面環境的Linux容器,啟動KasmVNC,讓你能從瀏覽器存取Linux桌面,音訊會自動傳輸過來。

Webtop界面針對行動裝置提供了一些便捷操作,可以方便你用客戶端的輸入法打字,也能夠使將客戶端的麥克風透傳到遠端Linux桌面,或是上傳檔案到遠端。

Webtop不是讓你存取現有Linux桌面的遠端桌面軟體,而是在Docker裡面開VNC遠端桌面,方便從瀏覽器登入桌面開始工作,因此很適合headless的Linux伺服器安裝。

KasmVNC有什麼特別的呢?先介紹點背景:KasmVNC是Kasm公司推出的現代化VNC解決方案,主打網頁原生,授權條款為GPLv2,可以獨立安裝作為VNC伺服器。雖然叫做VNC,不過他們拋棄了RFB協定以適應現代化的串流環境,除了指令跟vncserver很像以外其他地方跟傳統VNC差異很大。KasmVNC不是x11VNC那樣給一般電腦用的遠端桌面,而是設計給伺服器使用的。我個人覺得KasmVNC就是整合了各種前人方案的綜合體,也就是TigerVNC + noVNC + VirtualGL,並且比Apache Guacamole更容易安裝,瀏覽器操作十分順暢。但最賤的就是他們沒有把音訊串流技術開源出來,而是包含在他們的商業產品 Kasm Workspaces,與他們的後台管理系統整合在一起。

至於LinuxServer的Webtop專案,可以說是丐版的Kasm Workspaces吧,沒有後台管理界面,但是全開源,同樣使用KasmVNC,並包含了音訊串流技術。如果你很在意授權條款問題,沒有要管理日理萬機的多人Linux伺服器的話,用Webtop搭配 Portainer管理Docker容器就夠了,不需用到Kasm Workspaces!

2. 部署Webtop
#

根據 LinuxServer官方文件,預設的映像檔linuxserver/webtop:latest為Alpine Linux + XFCE桌面,容量很小。LinuxServer還有打包其他的發行版映像檔,我們就使用比較常見的Ubuntu + XFCE吧,名稱為linuxserver/webtop:ubuntu-xfce

如果你有自訂系統映像檔的需求,請參照官方文件的步驟用docker自行build。

撰寫docker-compose.yml如下,注意註解。由於KasmVNC可以使用客戶端輸入法打字,故不用在容器裡裝輸入法。

---
services:
  webtop:
    image: linuxserver/webtop:ubuntu-xfce # 使用Ubuntu XFCE映像檔
    container_name: webtop
    security_opt:
      - seccomp:unconfined # 新版Docker執行某些程式system call會出錯,故關閉安全機制
    environment:
      - PUID=1000 # 以一般使用者身份執行
      - PGID=1000
      - TZ=Asia/Taipei # 時區
      - LC_ALL=zh_TW.UTF-8 # 容器裡面的語言
      - DOCKER_MODS=linuxserver/mods:universal-package-install
      - INSTALL_PACKAGES=fonts-noto-cjk # 在啟動時用APT安裝中文字體
      - SUBFOLDER=/ # 網址
      - TITLE=Webtop # 網頁標題
      - CUSTOM_USER=user # 設定網頁登入帳號
      - PASSWORD= # 設定網頁登入密碼
      - DRINODE=/dev/dri/renderD128 # GPU加速,Nvidia閉源驅動不可使用DRI3
    volumes:
      - ./config:/config  # 容器資料儲存目錄
      - /var/run/docker.sock:/var/run/docker.sock # 讓容器可以存取Docker狀態
      - /home/user/Downloads/:mnt/ # 與容器共享宿主機目錄
    ports:
      - 3000:3000 # http通訊埠,用不到的話可以刪除
      - 3001:3001 # https通訊埠,有加密比較安全
    devices:
      - /dev/dri:/dev/dri # GPU加速,Nvidia閉源驅動不可使用DRI3
    shm_size: "1gb" # 容器共享RAM大小
    restart: unless-stopped

3. 連線至Webtop桌面
#

  1. 建議使用Chromium系瀏覽器,Firefox的KasmVNC支援度不太好的樣子。

  2. 啟動Docker容器,輸入https://Linux的IP:3001連線登入

  3. 點選左邊的選單,可以啟用客戶端輸入法,以及調整串流品質

  4. 上方的選單則是上傳檔案、開啟音訊串流、將客戶端的麥克風透傳給Linux桌面使用

4. Webtop容器資料儲存問題
#

請不要在容器使用APT安裝套件,因為每次容器重新啟動都是直接載入原本的映像檔,安裝的套件會消失。

只有使用者家目錄(/home)下的檔案會儲存到config Docker volume所在的目錄。

故,如果要安裝自訂程式並在重啟容器後保留,請善用LinuxServer提供的 proot-apps機制安裝程式:

proot-apps install chromium

rootless的 Flatpak也是可以考慮的選項。

參考資料
#

相關文章

有瀏覽器就能用!Kasm Workspaces,Docker架設Linux遠端桌面
分類   Linux系統 Self-hosting自架
標籤   Virtual Desktop Infrastructure KasmVNC Remote Desktop Docker
Cockpit教學:用網頁瀏覽器管理QEMU/KVM虛擬機,替代Virt Manager
分類   Linux系統 Self-hosting自架
標籤   Libvirt PCI Passthrough GPU Passthrough QEMU-KVM Podman Docker Linux
Gluetun:讓Docker容器走VPN連線,沒網路就斷線,使用教學
分類   Linux系統 Self-hosting自架
標籤   Docker VPN Torrent

留言板

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

這是Giscus留言板,需要Github帳號才能留言。支援markdown語法,若要上傳圖片請貼Imgur或Postimages。您的留言會在Github Discussions向所有人公開。

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