快轉到主要內容

透過LinuxServer.io打包的Docker映像檔,將桌面程式轉成網頁版,透過瀏覽器即可使用

· 民國114年乙巳年
·
切換繁體/簡體
分類   Linux系統 Self-hosting自架
標籤   Docker Remote Desktop VNC
目錄

簡單將桌面程式轉成網頁版,透過瀏覽器就能使用。

在這裡Ivon討論如何透過LinuxServer.io打包的Docker映像檔,將桌面應用程式容器化,使之能方便遠端存取。

1. 動機
#

傳統桌面應用程式正在式微,網頁應用正在崛起,不如這樣說吧,對想要玩self-hosted的人來說,最直接與遠端服務互動的方式就是透過網頁版界面,這種方法就不需要專門的客戶端與之交互,如此一來這些self-hosted的方案就會比傳統桌面程式要來得靈活。

譬如Kavitacalibre的比較。calibre雖是強大的書籍管理軟體,但是它只能在有圖形環境的桌面系統使用,簡單來說就是你的電腦要接上螢幕才能用啦,雖然calibre有搭配VNC打包的Docker版本,但用起來不流暢。假若我們要部署服務到headless Linux伺服器或者NAS上,桌面程式的方案就比不上網頁為主的Kavita方便了。不過,Kavita功能還是不如calibre豐富。

一般會想啊不就用遠端桌面解決?但我這裡是強調,沒有接上顯示器的Linux環境,怎麼辦?

Docker既然跑在Linux系統上,其實還有折衷的辦法讓傳統桌面應用程式能在headless的環境跑起來,也就是透過Docker跑headless的X11伺服器(Wayland未可知),再搭配KasmVNC這類的網頁遠端桌面方案,將桌面應用程式一瞬轉成可以遠端存取的瀏覽器應用。

通常會想到要用x11docker這類方案自幹一個Docker映像檔吧?幸運的是我們不需要自己寫Dockerfile,已經有人幫忙做好了。像LinuxServer.io團隊就把許多熱門應用程式打包成Docker映像檔了。諸如Google Chrome、GIMP、digiKam、calibre、LibreOffice、qBittorrent、VSCode等程式都能夠透過Docker遠端存取。LinuxServer.io團隊是採用KasmVNC的基礎映像檔建置的,因此每個應用程式容器除了VNC之外,還有傳輸檔案與音訊的功能。

LinuxServer.io還有制定一套環境變數的「規範」,讓使用者能輕鬆調整每個應用程式映像檔的內容。比方說使用DOCKER_MODS的環境變數即可在容器內安裝中文字型套件,不用rebuild docker image也能套用變更。

這跟遠端桌面不太一樣,而是一個個應用程式單獨執行,用容器隔離每個應用程式之間的資料,不直接存取整個系統的資源。效能與安全性更好的同時,還能夠透過docker volume的方式實現應用程式沙盒化,也就是說應用程式預設是讀不到宿主機全部資源的,而是只能讀取docker volume掛載的路徑。

另一種更進階的方案,便是基於Docker的遠端桌面工作階段,實現此方案的有WebTop以及Kasm Workspace。比虛擬機啟動還要快速。使用者在隨時可拋棄的Docker X11桌面環境工作。

但這裡我不多談,我主要談論的是一個Docker容器一個桌面應用程式的方案。

2. 部署LinuxServer.io的應用程式,以calibre為例
#

LinuxServer.io官網有打包程式的列表。

通常LinuxServer.io的應用程式會發布在Docker Hub,每個應用程式的頁面都有詳細的文件解說,操作大同小異。

如果有想要打包的程式可以到官方論壇求助

以書籍管理程式calibre為例,我有寫一篇講解這個:部署calibre Docker。從裡面能夠了解到LinuxServer.io打包的應用程式長什麼樣子。你會發現docker-compose的環境變數都十分類似。

3. 使用DockerMods即時修改映像檔內容
#

根據LinuxServer.io的文件,他們提供多種通用的「Docker Mods」,能夠用統一的規範,修改各個Docker映像檔內容,又不需要重新建置映像檔。

DockerMods通常已經含在LinuxServer.io發表的應用程式Docker映像檔裡面,不用另外pull。

比如,Package Install這個模組能夠在每次Docker容器啟動之後,即時呼叫容器裡面的套件管理器安裝指定套件。

具體來說,我們能用這個解決多語言支援的問題。LinuxServer.io打包的應用程式大部份是英文的,所以映像檔裡面沒有中文字型,中文字會無法顯示。這個時候只要裝上對應字型套件就行了。

以calibre的docker-compose為例,假設映像檔是基於Debian建置,加入以下環境變數,設定容器語言為正體中文,指示容器啟動後安裝Noto Fonts CJK字型即可。

services:
  calibre:
    image: lscr.io/linuxserver/calibre:latest
    container_name: calibre
    environment:
      - DOCKER_MODS=linuxserver/mods:universal-package-install
      - INSTALL_PACKAGES=fonts-noto-cjk
      - PUID=1000
      - PGID=1000
      - TZ=Asia/Taipei
      - LC_ALL=zh_TW.UTF-8

相關文章

KasmVNC用法,透過瀏覽器VNC遠端連線到Linux桌面
分類   Linux系統 Self-hosting自架
標籤   KasmVNC Remote Desktop VNC VirtualGL
瀏覽器跑Linux遠端桌面!Webtop Docker部署教學
分類   Linux系統 Self-hosting自架
標籤   VDI KasmVNC Remote Desktop Docker
有瀏覽器就能用!Kasm Workspaces,Docker架設Linux遠端桌面
分類   Linux系統 Self-hosting自架
標籤   VDI KasmVNC Remote Desktop Docker

此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。

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