首頁 > 軟體

Webtops——瀏覽器中運行Linux桌面

2021-05-14 11:00:10

容器的大流行讓很多東西虛擬化、容器化變成了現實。很多人還希望更多,想在容器中跑整個OS,將容器當虛擬機器用。一般來說這個想法不是推薦的做法,但並非是無法實現。今天蟲蟲就給大家介紹一個項目Webtops,通過它可以讓使用者在其Web瀏覽器中運行Linux桌面以容器化方式部署。

概述

Webtops項目和一般的短小精悍,單一功能Docker哲學背道而馳,但是要實現功能就必須如此。該項目需要在容器中運行以下的服務:

Guacamole Server:Apache基金會下的無客戶端一個遠端桌面閘道器。這是實現Web(瀏覽器)訪問遠端桌面的關鍵。

xrdp Server:提供使用RDP(Microsoft遠端桌面協議)的遠端計算機的圖形登入。xrdp接受來自各種平臺RDP客戶端的連線,包括reeRDP,rdesktop,NeutrinoRDP和Microsoft遠端桌面客戶端。

Pulseaudio:一個跨平臺的、可通過網路工作的聲音服務。

Custom nodejs frontend:

Webtops項目可以做到:

畫素渲染的完美解析度

基本的視窗管理器

音訊支援

使用RDP協議

剪貼簿支援

螢幕鍵盤支援

遠端檔案上傳/下載管理

Webtops設計時候考慮了容器化,以構建基本映象的設計理念進行了開發,所以支援應用擴展,可以輕鬆地將任何Linux GUI應用程式嵌入進來。在桌面環境中,使用者可以通過需求安裝特定的軟體包並根據需要自定義。

安裝部署

由於基於容器化部署,安裝非常簡單,直接一個docker命令就可以完成部署:

docker run -d

--name=webtop

-e PUID=1000

-e PGID=1000

-e TZ=Europe/London

-p 3000:3000

-v /path/to/data:/config

--shm-size="1gb"

--restart unless-stopped

ghcr.io/linuxserver/webtop

然後通過瀏覽器訪問:localhost:3000,就可以訪問,這是Alpine XFCE桌面環境:

螢幕的左側是一個箭頭,該箭頭可以用來擴展某些內建的遠端互動功能的選單,也可以使用ctrl + alt + shift組合鍵開啟和關閉此選單:

在彈出選單中,可以啟動檔案瀏覽器,彈出式軟鍵盤(手機或者觸控板用)以及將剪貼簿。

檔案瀏覽器中,直接實現使用者當前系統和遠端系統的檔案上傳下載和其他一些操作。

使用者當前剪貼簿中的內容,先複製到該剪貼簿框中,後續才能在遠端機器中使用。

偏好設定

目前除了Alpine外也支援Ubuntu,支援的桌面系統包括:

XFCE

KDE

MATE

i3

Openbox

IceWM

訪問認證

預設情況下,映象啟用abc使用者,無需認證就可以訪問。abc使用者預設密碼也是 abc。如果要更改此密碼並在訪問介面時啟用身份驗證,需要通過在伺服器上執行:

docker exec -it webtop passwd abc

然後通過localhost:3000/?login=true訪問

預設會開啟xrdp登入管理器,可以在其中輸入使用者名和密碼。

更新

如前已經說過容器化的Linux桌面環境實際上與經典Docker哲學相悖,因此強烈建議不要使用通過Docker來處理映象來更新。可以使用作業系統的包管理更新系統

對於Alpine用apk:

sudo apk upgrade

Ubuntu則使用apt:

sudo apt-get update && sudo apt-get dist-upgrade –y

自定義

編譯映象

為了讓基礎映象中嵌入所需的的APP,比如要新增Firefox容器時候示例Dockerfile:

FROM lsiobase/rdesktop-web:alpine

RUN

echo "**** install packages ****" &&

apk add --no-cache

firefox-esr &&

echo "**** cleanup ****" &&

rm -rf

/tmp/*

# add local files

COPY /root /

# ports and volumes

EXPOSE 3000

VOLUME /config

除了安裝應用程式外,還需要在啟動檔案中/root/defaults/autostart新增firefox的啟動點。

就是這樣,當容器啟動後, Firefox將在基本的Openbox gui中啟動:

還有一個LibreOffice應用的Dockerfile檔案如下:

FROM lsiobase/rdesktop-web:alpine

# set version label

ARG BUILD_DATE

ARG VERSION

ARG LIBREOFFICE_VERSION

LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DATE}"

LABEL maintainer="thelamer"

RUN

echo "**** install packages ****" &&

apk add --no-cache --virtual=build-dependencies

curl &&

if [ -z ${LIBREOFFICE_VERSION+x} ]; then

LIBREOFFICE_VERSION=$(curl -sL " dl-cdn.alpinelinux.org/alpine/v3.13/community/x86_64/APKINDEX.tar.gz" | tar -xz -C /tmp

&& awk '/^P:libreoffice$/,/V:/' /tmp/APKINDEX | sed -n 2p | sed 's/^V://');

fi &&

apk add --no-cache

libreoffice==${LIBREOFFICE_VERSION}

tint2 &&

echo "**** openbox tweaks ****" &&

sed -i

's/NLMC/NLIMC/g'

/etc/xdg/openbox/rc.xml &&

echo "**** cleanup ****" &&

apk del --purge

build-dependencies &&

rm -rf

/tmp/*

# add local files

COPY /root /

# ports and volumes

EXPOSE 3000

VOLUME /config

自啟動

預設只有當用戶登入Web介面時才會啟動桌面應用程式,如果需要在容器啟動時運行應用程式,則需要設定環境變數:

-e GUIAUTOSTART=true

如果使用者將預設容器中的密碼更改為abc,還需要設定密碼選項以確保應用程式自動啟動:

-e PASSWORD=yourpassword

總結

Webtops項目,給了我們一個下容器中運行Linux桌面的選擇,可以做一個演示、臨時系統中使用,當然更多的使用場景還需要大家去嘗試探索,由於是基於容器部署,非常便捷,嘗試也幾乎沒有任何的成本。


IT145.com E-mail:sddin#qq.com