Merge pull request #88 from linuxserver/s6v3-alpine-i3

This commit is contained in:
Adam 2022-10-24 13:52:38 +01:00 committed by GitHub
commit 0abd021da0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 167 additions and 30 deletions

View File

@ -18,7 +18,7 @@ jobs:
fi fi
echo "**** External trigger running off of alpine-i3 branch. To disable this trigger, set a Github secret named \"PAUSE_EXTERNAL_TRIGGER_WEBTOP_ALPINE_I3\". ****" echo "**** External trigger running off of alpine-i3 branch. To disable this trigger, set a Github secret named \"PAUSE_EXTERNAL_TRIGGER_WEBTOP_ALPINE_I3\". ****"
echo "**** Retrieving external version ****" echo "**** Retrieving external version ****"
EXT_RELEASE=$(curl -sL "http://dl-cdn.alpinelinux.org/alpine/v3.14/community/x86_64/APKINDEX.tar.gz" | tar -xz -C /tmp \ EXT_RELEASE=$(curl -sL "http://dl-cdn.alpinelinux.org/alpine/v3.16/community/x86_64/APKINDEX.tar.gz" | tar -xz -C /tmp \
&& awk '/^P:'"i3wm"'$/,/V:/' /tmp/APKINDEX | sed -n 2p | sed 's/^V://') && awk '/^P:'"i3wm"'$/,/V:/' /tmp/APKINDEX | sed -n 2p | sed 's/^V://')
if [ -z "${EXT_RELEASE}" ] || [ "${EXT_RELEASE}" == "null" ]; then if [ -z "${EXT_RELEASE}" ] || [ "${EXT_RELEASE}" == "null" ]; then
echo "**** Can't retrieve external version, exiting ****" echo "**** Can't retrieve external version, exiting ****"

View File

@ -1,4 +1,4 @@
FROM lsiobase/rdesktop-web:alpine FROM ghcr.io/linuxserver/baseimage-rdesktop-web:3.16
# set version label # set version label
ARG BUILD_DATE ARG BUILD_DATE
@ -7,11 +7,10 @@ ARG I3_VERSION
LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DATE}" LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DATE}"
LABEL maintainer="thelamer" LABEL maintainer="thelamer"
RUN \ RUN \
echo "**** install packages ****" && \ echo "**** install packages ****" && \
apk add --no-cache \ apk add --no-cache \
firefox-esr \ firefox \
i3status \ i3status \
i3wm && \ i3wm && \
echo "**** cleanup ****" && \ echo "**** cleanup ****" && \
@ -23,4 +22,5 @@ COPY /root /
# ports and volumes # ports and volumes
EXPOSE 3000 EXPOSE 3000
VOLUME /config VOLUME /config

View File

@ -1,4 +1,4 @@
FROM lsiobase/rdesktop-web:arm64v8-alpine FROM ghcr.io/linuxserver/baseimage-rdesktop-web:arm64v8-3.16
# set version label # set version label
ARG BUILD_DATE ARG BUILD_DATE
@ -7,11 +7,10 @@ ARG I3_VERSION
LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DATE}" LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DATE}"
LABEL maintainer="thelamer" LABEL maintainer="thelamer"
RUN \ RUN \
echo "**** install packages ****" && \ echo "**** install packages ****" && \
apk add --no-cache \ apk add --no-cache \
firefox-esr \ firefox \
i3status \ i3status \
i3wm && \ i3wm && \
echo "**** cleanup ****" && \ echo "**** cleanup ****" && \
@ -23,4 +22,5 @@ COPY /root /
# ports and volumes # ports and volumes
EXPOSE 3000 EXPOSE 3000
VOLUME /config VOLUME /config

View File

@ -1,4 +1,4 @@
FROM lsiobase/rdesktop-web:arm32v7-alpine FROM ghcr.io/linuxserver/baseimage-rdesktop-web:arm32v7-3.16
# set version label # set version label
ARG BUILD_DATE ARG BUILD_DATE
@ -7,11 +7,10 @@ ARG I3_VERSION
LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DATE}" LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DATE}"
LABEL maintainer="thelamer" LABEL maintainer="thelamer"
RUN \ RUN \
echo "**** install packages ****" && \ echo "**** install packages ****" && \
apk add --no-cache \ apk add --no-cache \
firefox-esr \ firefox \
i3status \ i3status \
i3wm && \ i3wm && \
echo "**** cleanup ****" && \ echo "**** cleanup ****" && \
@ -23,4 +22,5 @@ COPY /root /
# ports and volumes # ports and volumes
EXPOSE 3000 EXPOSE 3000
VOLUME /config VOLUME /config

12
Jenkinsfile vendored
View File

@ -25,8 +25,8 @@ pipeline {
DEV_DOCKERHUB_IMAGE = 'lsiodev/webtop' DEV_DOCKERHUB_IMAGE = 'lsiodev/webtop'
PR_DOCKERHUB_IMAGE = 'lspipepr/webtop' PR_DOCKERHUB_IMAGE = 'lspipepr/webtop'
DIST_IMAGE = 'alpine' DIST_IMAGE = 'alpine'
DIST_TAG = '3.14' DIST_TAG = '3.16'
DIST_REPO = 'http://dl-cdn.alpinelinux.org/alpine/v3.14/community/' DIST_REPO = 'http://dl-cdn.alpinelinux.org/alpine/v3.16/community/'
DIST_REPO_PACKAGES = 'i3wm' DIST_REPO_PACKAGES = 'i3wm'
MULTIARCH = 'true' MULTIARCH = 'true'
CI = 'true' CI = 'true'
@ -458,7 +458,7 @@ pipeline {
--label \"org.opencontainers.image.licenses=GPL-3.0-only\" \ --label \"org.opencontainers.image.licenses=GPL-3.0-only\" \
--label \"org.opencontainers.image.ref.name=${COMMIT_SHA}\" \ --label \"org.opencontainers.image.ref.name=${COMMIT_SHA}\" \
--label \"org.opencontainers.image.title=Webtop\" \ --label \"org.opencontainers.image.title=Webtop\" \
--label \"org.opencontainers.image.description=[Webtop](https://github.com/linuxserver/docker-webtop) - Alpine and Ubuntu based containers containing full desktop environments in officially supported flavors accessible via any modern web browser. \" \ --label \"org.opencontainers.image.description=[Webtop](https://github.com/linuxserver/docker-webtop) - Alpine, Ubuntu, Fedora, and Arch based containers containing full desktop environments in officially supported flavors accessible via any modern web browser. \" \
--no-cache --pull -t ${IMAGE}:${META_TAG} \ --no-cache --pull -t ${IMAGE}:${META_TAG} \
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ." --build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ."
} }
@ -488,7 +488,7 @@ pipeline {
--label \"org.opencontainers.image.licenses=GPL-3.0-only\" \ --label \"org.opencontainers.image.licenses=GPL-3.0-only\" \
--label \"org.opencontainers.image.ref.name=${COMMIT_SHA}\" \ --label \"org.opencontainers.image.ref.name=${COMMIT_SHA}\" \
--label \"org.opencontainers.image.title=Webtop\" \ --label \"org.opencontainers.image.title=Webtop\" \
--label \"org.opencontainers.image.description=[Webtop](https://github.com/linuxserver/docker-webtop) - Alpine and Ubuntu based containers containing full desktop environments in officially supported flavors accessible via any modern web browser. \" \ --label \"org.opencontainers.image.description=[Webtop](https://github.com/linuxserver/docker-webtop) - Alpine, Ubuntu, Fedora, and Arch based containers containing full desktop environments in officially supported flavors accessible via any modern web browser. \" \
--no-cache --pull -t ${IMAGE}:amd64-${META_TAG} \ --no-cache --pull -t ${IMAGE}:amd64-${META_TAG} \
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ." --build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ."
} }
@ -515,7 +515,7 @@ pipeline {
--label \"org.opencontainers.image.licenses=GPL-3.0-only\" \ --label \"org.opencontainers.image.licenses=GPL-3.0-only\" \
--label \"org.opencontainers.image.ref.name=${COMMIT_SHA}\" \ --label \"org.opencontainers.image.ref.name=${COMMIT_SHA}\" \
--label \"org.opencontainers.image.title=Webtop\" \ --label \"org.opencontainers.image.title=Webtop\" \
--label \"org.opencontainers.image.description=[Webtop](https://github.com/linuxserver/docker-webtop) - Alpine and Ubuntu based containers containing full desktop environments in officially supported flavors accessible via any modern web browser. \" \ --label \"org.opencontainers.image.description=[Webtop](https://github.com/linuxserver/docker-webtop) - Alpine, Ubuntu, Fedora, and Arch based containers containing full desktop environments in officially supported flavors accessible via any modern web browser. \" \
--no-cache --pull -f Dockerfile.armhf -t ${IMAGE}:arm32v7-${META_TAG} \ --no-cache --pull -f Dockerfile.armhf -t ${IMAGE}:arm32v7-${META_TAG} \
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ." --build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ."
sh "docker tag ${IMAGE}:arm32v7-${META_TAG} ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER}" sh "docker tag ${IMAGE}:arm32v7-${META_TAG} ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER}"
@ -549,7 +549,7 @@ pipeline {
--label \"org.opencontainers.image.licenses=GPL-3.0-only\" \ --label \"org.opencontainers.image.licenses=GPL-3.0-only\" \
--label \"org.opencontainers.image.ref.name=${COMMIT_SHA}\" \ --label \"org.opencontainers.image.ref.name=${COMMIT_SHA}\" \
--label \"org.opencontainers.image.title=Webtop\" \ --label \"org.opencontainers.image.title=Webtop\" \
--label \"org.opencontainers.image.description=[Webtop](https://github.com/linuxserver/docker-webtop) - Alpine and Ubuntu based containers containing full desktop environments in officially supported flavors accessible via any modern web browser. \" \ --label \"org.opencontainers.image.description=[Webtop](https://github.com/linuxserver/docker-webtop) - Alpine, Ubuntu, Fedora, and Arch based containers containing full desktop environments in officially supported flavors accessible via any modern web browser. \" \
--no-cache --pull -f Dockerfile.aarch64 -t ${IMAGE}:arm64v8-${META_TAG} \ --no-cache --pull -f Dockerfile.aarch64 -t ${IMAGE}:arm64v8-${META_TAG} \
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ." --build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ."
sh "docker tag ${IMAGE}:arm64v8-${META_TAG} ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}" sh "docker tag ${IMAGE}:arm64v8-${META_TAG} ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}"

View File

@ -40,7 +40,7 @@ Find us at:
[![Jenkins Build](https://img.shields.io/jenkins/build?labelColor=555555&logoColor=ffffff&style=for-the-badge&jobUrl=https%3A%2F%2Fci.linuxserver.io%2Fjob%2FDocker-Pipeline-Builders%2Fjob%2Fdocker-webtop%2Fjob%2Falpine-i3%2F&logo=jenkins)](https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-webtop/job/alpine-i3/) [![Jenkins Build](https://img.shields.io/jenkins/build?labelColor=555555&logoColor=ffffff&style=for-the-badge&jobUrl=https%3A%2F%2Fci.linuxserver.io%2Fjob%2FDocker-Pipeline-Builders%2Fjob%2Fdocker-webtop%2Fjob%2Falpine-i3%2F&logo=jenkins)](https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-webtop/job/alpine-i3/)
[![LSIO CI](https://img.shields.io/badge/dynamic/yaml?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=CI&query=CI&url=https%3A%2F%2Fci-tests.linuxserver.io%2Flinuxserver%2Fwebtop%2Flatest%2Fci-status.yml)](https://ci-tests.linuxserver.io/linuxserver/webtop/latest/index.html) [![LSIO CI](https://img.shields.io/badge/dynamic/yaml?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=CI&query=CI&url=https%3A%2F%2Fci-tests.linuxserver.io%2Flinuxserver%2Fwebtop%2Flatest%2Fci-status.yml)](https://ci-tests.linuxserver.io/linuxserver/webtop/latest/index.html)
[Webtop](https://github.com/linuxserver/docker-webtop) - Alpine and Ubuntu based containers containing full desktop environments in officially supported flavors accessible via any modern web browser. [Webtop](https://github.com/linuxserver/docker-webtop) - Alpine, Ubuntu, Fedora, and Arch based containers containing full desktop environments in officially supported flavors accessible via any modern web browser.
[![webtop](https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/webtop-logo.png)](https://github.com/linuxserver/docker-webtop) [![webtop](https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/webtop-logo.png)](https://github.com/linuxserver/docker-webtop)
@ -66,16 +66,28 @@ This image provides various versions that are available via tags. Please read th
| :----: | :----: |--- | | :----: | :----: |--- |
| latest | ✅ | XFCE Alpine | | latest | ✅ | XFCE Alpine |
| ubuntu-xfce | ✅ | XFCE Ubuntu | | ubuntu-xfce | ✅ | XFCE Ubuntu |
| fedora-xfce | ✅ | XFCE Fedora |
| arch-xfce | ✅ | XFCE Arch |
| alpine-kde | ✅ | KDE Alpine | | alpine-kde | ✅ | KDE Alpine |
| ubuntu-kde | ✅ | KDE Ubuntu | | ubuntu-kde | ✅ | KDE Ubuntu |
| fedora-kde | ✅ | KDE Fedora |
| arch-kde | ✅ | KDE Arch |
| alpine-mate | ✅ | MATE Alpine | | alpine-mate | ✅ | MATE Alpine |
| ubuntu-mate | ✅ | MATE Ubuntu | | ubuntu-mate | ✅ | MATE Ubuntu |
| fedora-mate | ✅ | MATE Fedora |
| arch-mate | ✅ | MATE Arch |
| alpine-i3 | ✅ | i3 Alpine | | alpine-i3 | ✅ | i3 Alpine |
| ubuntu-i3 | ✅ | i3 Ubuntu | | ubuntu-i3 | ✅ | i3 Ubuntu |
| fedora-i3 | ✅ | i3 Fedora |
| arch-i3 | ✅ | i3 Arch |
| alpine-openbox | ✅ | Openbox Alpine | | alpine-openbox | ✅ | Openbox Alpine |
| ubuntu-openbox | ✅ | Openbox Ubuntu | | ubuntu-openbox | ✅ | Openbox Ubuntu |
| fedora-openbox | ✅ | Openbox Fedora |
| arch-openbox | ✅ | Openbox Arch |
| alpine-icewm | ✅ | IceWM Alpine | | alpine-icewm | ✅ | IceWM Alpine |
| ubuntu-icewm | ✅ | IceWM Ubuntu | | ubuntu-icewm | ✅ | IceWM Ubuntu |
| fedora-icewm | ✅ | IceWM Fedora |
| arch-icewm | ✅ | IceWM Arch |
## Application Setup ## Application Setup
@ -87,11 +99,32 @@ By default the user/pass is abc/abc, if you change your password or want to logi
* http://yourhost:3000/?login=true * http://yourhost:3000/?login=true
You can access advanced features of the Guacamole remote desktop using ctrl+alt+shift enabling you to use remote copy/paste or an onscreen keyboard. You can also force login on the '/' path without this parameter by passing the environment variable `-e AUTO_LOGIN=false`.
**Unlike our other containers these Desktops are not designed to be upgraded by Docker, you will keep your home directoy but anything you installed system level will be lost if you upgrade an existing container. To keep packages up to date instead use Ubuntu's own apt program or Alpine's apk program** You can access advanced features of the Guacamole remote desktop using ctrl+alt+shift enabling you to use remote copy/paste, an onscreen keyboard, or a baked in file manager. This can also be accessed by clicking the small circle on the left side of the screen.
**The KDE and i3 flavors for Ubuntu need to be run in privileged mode to function properly** **Modern GUI desktop apps (including some flavors terminals) have issues with the latest Docker and syscall compatibility, you can use Docker with the `--security-opt seccomp=unconfined` setting to allow these syscalls or try [podman](https://podman.io/) as they have updated their codebase to support them**
**Unlike our other containers these Desktops are not designed to be upgraded by Docker, you will keep your home directoy but anything you installed system level will be lost if you upgrade an existing container. To keep packages up to date instead use Ubuntu's own apt, Alpine's apk, Fedora's dnf, or Arch's pacman program**
#### Keyboard Layouts
This should match the layout on the computer you are accessing the container from.
The keyboard layouts available for use are:
* da-dk-qwerty- Danish keyboard
* de-ch-qwertz- Swiss German keyboard (qwertz)
* de-de-qwertz- German keyboard (qwertz) - **OSK available**
* en-gb-qwerty- English (UK) keyboard
* en-us-qwerty- English (US) keyboard - **OSK available** **DEFAULT**
* es-es-qwerty- Spanish keyboard - **OSK available**
* fr-ch-qwertz- Swiss French keyboard (qwertz)
* fr-fr-azerty- French keyboard (azerty) - **OSK available**
* it-it-qwerty- Italian keyboard - **OSK available**
* ja-jp-qwerty- Japanese keyboard
* pt-br-qwerty- Portuguese Brazilian keyboard
* sv-se-qwerty- Swedish keyboard
* tr-tr-qwerty- Turkish-Q keyboard
If you ever lose your password you can always reset it by execing into the container as root: If you ever lose your password you can always reset it by execing into the container as root:
``` ```
@ -100,6 +133,28 @@ docker exec -it webtop passwd abc
By default we perform all logic for the abc user and we reccomend using that user only in the container, but new users can be added as long as there is a `startwm.sh` executable script in their home directory. By default we perform all logic for the abc user and we reccomend using that user only in the container, but new users can be added as long as there is a `startwm.sh` executable script in their home directory.
All of these containers are configured with passwordless sudo, we make no efforts to secure or harden these containers and we do not reccomend ever publishing their ports to the public Internet. All of these containers are configured with passwordless sudo, we make no efforts to secure or harden these containers and we do not reccomend ever publishing their ports to the public Internet.
## Hardware Acceleration (Ubuntu Container Only)
Many desktop application will need access to a GPU to function properly and even some Desktop Environments have compisitor effects that will not function without a GPU. This is not a hard requirement and all base images will function without a video device mounted into the container.
### Intel/ATI/AMD
To leverage hardware acceleration you will need to mount /dev/dri video device inside of the conainer.
```
--device=/dev/dri:/dev/dri
```
We will automatically ensure the abc user inside of the container has the proper permissions to access this device.
### Nvidia
Hardware acceleration users for Nvidia will need to install the container runtime provided by Nvidia on their host, instructions can be found here:
https://github.com/NVIDIA/nvidia-docker
We automatically add the necessary environment variable that will utilise all the features available on a GPU on the host. Once nvidia-docker is installed on your host you will need to re/create the docker container with the nvidia container runtime `--runtime=nvidia` and add an environment variable `-e NVIDIA_VISIBLE_DEVICES=all` (can also be set to a specific gpu's UUID, this can be discovered by running `nvidia-smi --query-gpu=gpu_name,gpu_uuid --format=csv` ). NVIDIA automatically mounts the GPU and drivers from your host into the container.
### Arm Devices
Best effort is made to install tools to allow mounting in /dev/dri on Arm devices. In most cases if /dev/dri exists on the host it should just work. If running a Raspberry Pi 4 be sure to enable `dtoverlay=vc4-fkms-v3d` in your usercfg.txt.
## Usage ## Usage
Here are some example snippets to help you get started creating a container. Here are some example snippets to help you get started creating a container.
@ -113,16 +168,22 @@ services:
webtop: webtop:
image: lscr.io/linuxserver/webtop:alpine-i3 image: lscr.io/linuxserver/webtop:alpine-i3
container_name: webtop container_name: webtop
privileged: true #optional security_opt:
- seccomp:unconfined #optional
environment: environment:
- PUID=1000 - PUID=1000
- PGID=1000 - PGID=1000
- TZ=Europe/London - TZ=Europe/London
- SUBFOLDER=/ #optional
- KEYBOARD=en-us-qwerty #optional
- TITLE=Webtop #optional
volumes: volumes:
- /path/to/data:/config - /path/to/data:/config
- /var/run/docker.sock:/var/run/docker.sock #optional - /var/run/docker.sock:/var/run/docker.sock #optional
ports: ports:
- 3000:3000 - 3000:3000
devices:
- /dev/dri:/dev/dri #optional
shm_size: "1gb" #optional shm_size: "1gb" #optional
restart: unless-stopped restart: unless-stopped
``` ```
@ -132,13 +193,17 @@ services:
```bash ```bash
docker run -d \ docker run -d \
--name=webtop \ --name=webtop \
--privileged `#optional` \ --security-opt seccomp=unconfined `#optional` \
-e PUID=1000 \ -e PUID=1000 \
-e PGID=1000 \ -e PGID=1000 \
-e TZ=Europe/London \ -e TZ=Europe/London \
-e SUBFOLDER=/ `#optional` \
-e KEYBOARD=en-us-qwerty `#optional` \
-e TITLE=Webtop `#optional` \
-p 3000:3000 \ -p 3000:3000 \
-v /path/to/data:/config \ -v /path/to/data:/config \
-v /var/run/docker.sock:/var/run/docker.sock `#optional` \ -v /var/run/docker.sock:/var/run/docker.sock `#optional` \
--device /dev/dri:/dev/dri `#optional` \
--shm-size="1gb" `#optional` \ --shm-size="1gb" `#optional` \
--restart unless-stopped \ --restart unless-stopped \
lscr.io/linuxserver/webtop:alpine-i3 lscr.io/linuxserver/webtop:alpine-i3
@ -154,9 +219,14 @@ Container images are configured using parameters passed at runtime (such as thos
| `-e PUID=1000` | for UserID - see below for explanation | | `-e PUID=1000` | for UserID - see below for explanation |
| `-e PGID=1000` | for GroupID - see below for explanation | | `-e PGID=1000` | for GroupID - see below for explanation |
| `-e TZ=Europe/London` | Specify a timezone to use EG Europe/London | | `-e TZ=Europe/London` | Specify a timezone to use EG Europe/London |
| `-e SUBFOLDER=/` | Specify a subfolder to use with reverse proxies, IE `/subfolder/` |
| `-e KEYBOARD=en-us-qwerty` | See the keyboard layouts section for more information and options. |
| `-e TITLE=Webtop` | String which will be used as page/tab title in the web browser. |
| `-v /config` | abc users home directory | | `-v /config` | abc users home directory |
| `-v /var/run/docker.sock` | Docker Socket on the system, if you want to use Docker in the container | | `-v /var/run/docker.sock` | Docker Socket on the system, if you want to use Docker in the container |
| `--device /dev/dri` | Add this for GL support (Linux hosts only) |
| `--shm-size=` | We set this to 1 gig to prevent modern web browsers from crashing | | `--shm-size=` | We set this to 1 gig to prevent modern web browsers from crashing |
| `--security-opt seccomp=unconfined` | For Docker Engine only, many modern gui apps need this to function on older hosts as syscalls are unknown to Docker. |
## Environment variables from files (Docker secrets) ## Environment variables from files (Docker secrets)
@ -267,4 +337,5 @@ Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64
## Versions ## Versions
* **21.10.22:** - Rebase to Alpine 3.16, migrate to s6v3.
* **20.04.21:** - Initial release. * **20.04.21:** - Initial release.

View File

@ -15,8 +15,8 @@ repo_vars:
- DEV_DOCKERHUB_IMAGE = 'lsiodev/webtop' - DEV_DOCKERHUB_IMAGE = 'lsiodev/webtop'
- PR_DOCKERHUB_IMAGE = 'lspipepr/webtop' - PR_DOCKERHUB_IMAGE = 'lspipepr/webtop'
- DIST_IMAGE = 'alpine' - DIST_IMAGE = 'alpine'
- DIST_TAG = '3.14' - DIST_TAG = '3.16'
- DIST_REPO = 'http://dl-cdn.alpinelinux.org/alpine/v3.14/community/' - DIST_REPO = 'http://dl-cdn.alpinelinux.org/alpine/v3.16/community/'
- DIST_REPO_PACKAGES = 'i3wm' - DIST_REPO_PACKAGES = 'i3wm'
- MULTIARCH = 'true' - MULTIARCH = 'true'
- CI = 'true' - CI = 'true'

View File

@ -5,7 +5,7 @@ project_name: webtop
project_url: "https://github.com/linuxserver/docker-webtop" project_url: "https://github.com/linuxserver/docker-webtop"
project_logo: "https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/webtop-logo.png" project_logo: "https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/webtop-logo.png"
project_blurb: | project_blurb: |
[{{ project_name|capitalize }}]({{ project_url }}) - Alpine and Ubuntu based containers containing full desktop environments in officially supported flavors accessible via any modern web browser. [{{ project_name|capitalize }}]({{ project_url }}) - Alpine, Ubuntu, Fedora, and Arch based containers containing full desktop environments in officially supported flavors accessible via any modern web browser.
project_lsio_github_repo_url: "https://github.com/linuxserver/docker-{{ project_name }}" project_lsio_github_repo_url: "https://github.com/linuxserver/docker-{{ project_name }}"
# supported architectures # supported architectures
@ -19,19 +19,30 @@ development_versions: true
development_versions_items: development_versions_items:
- { tag: "latest", desc: "XFCE Alpine" } - { tag: "latest", desc: "XFCE Alpine" }
- { tag: "ubuntu-xfce", desc: "XFCE Ubuntu" } - { tag: "ubuntu-xfce", desc: "XFCE Ubuntu" }
- { tag: "fedora-xfce", desc: "XFCE Fedora" }
- { tag: "arch-xfce", desc: "XFCE Arch" }
- { tag: "alpine-kde", desc: "KDE Alpine" } - { tag: "alpine-kde", desc: "KDE Alpine" }
- { tag: "ubuntu-kde", desc: "KDE Ubuntu" } - { tag: "ubuntu-kde", desc: "KDE Ubuntu" }
- { tag: "fedora-kde", desc: "KDE Fedora" }
- { tag: "arch-kde", desc: "KDE Arch" }
- { tag: "alpine-mate", desc: "MATE Alpine" } - { tag: "alpine-mate", desc: "MATE Alpine" }
- { tag: "ubuntu-mate", desc: "MATE Ubuntu" } - { tag: "ubuntu-mate", desc: "MATE Ubuntu" }
- { tag: "fedora-mate", desc: "MATE Fedora" }
- { tag: "arch-mate", desc: "MATE Arch" }
- { tag: "alpine-i3", desc: "i3 Alpine" } - { tag: "alpine-i3", desc: "i3 Alpine" }
- { tag: "ubuntu-i3", desc: "i3 Ubuntu" } - { tag: "ubuntu-i3", desc: "i3 Ubuntu" }
- { tag: "fedora-i3", desc: "i3 Fedora" }
- { tag: "arch-i3", desc: "i3 Arch" }
- { tag: "alpine-openbox", desc: "Openbox Alpine" } - { tag: "alpine-openbox", desc: "Openbox Alpine" }
- { tag: "ubuntu-openbox", desc: "Openbox Ubuntu" } - { tag: "ubuntu-openbox", desc: "Openbox Ubuntu" }
- { tag: "fedora-openbox", desc: "Openbox Fedora" }
- { tag: "arch-openbox", desc: "Openbox Arch" }
- { tag: "alpine-icewm", desc: "IceWM Alpine" } - { tag: "alpine-icewm", desc: "IceWM Alpine" }
- { tag: "ubuntu-icewm", desc: "IceWM Ubuntu" } - { tag: "ubuntu-icewm", desc: "IceWM Ubuntu" }
- { tag: "fedora-icewm", desc: "IceWM Fedora" }
- { tag: "arch-icewm", desc: "IceWM Arch" }
# container parameters # container parameters
privileged: "optional"
param_container_name: "{{ project_name }}" param_container_name: "{{ project_name }}"
param_usage_include_vols: true param_usage_include_vols: true
param_volumes: param_volumes:
@ -43,11 +54,22 @@ param_usage_include_env: true
param_env_vars: param_env_vars:
- { env_var: "TZ", env_value: "Europe/London", desc: "Specify a timezone to use EG Europe/London"} - { env_var: "TZ", env_value: "Europe/London", desc: "Specify a timezone to use EG Europe/London"}
# optional variables # optional variables
opt_param_usage_include_env: true
opt_param_env_vars:
- { env_var: "SUBFOLDER", env_value: "/", desc: "Specify a subfolder to use with reverse proxies, IE `/subfolder/`"}
- { env_var: "KEYBOARD", env_value: "en-us-qwerty", desc: "See the keyboard layouts section for more information and options."}
- { env_var: "TITLE", env_value: "Webtop", desc: "String which will be used as page/tab title in the web browser." }
opt_param_usage_include_vols: true opt_param_usage_include_vols: true
opt_param_volumes: opt_param_volumes:
- { vol_path: "/var/run/docker.sock", vol_host_path: "/var/run/docker.sock", desc: "Docker Socket on the system, if you want to use Docker in the container" } - { vol_path: "/var/run/docker.sock", vol_host_path: "/var/run/docker.sock", desc: "Docker Socket on the system, if you want to use Docker in the container" }
opt_custom_params: opt_custom_params:
- { name: "shm-size", name_compose: "shm_size", value: "1gb",desc: "We set this to 1 gig to prevent modern web browsers from crashing" } - { name: "shm-size", name_compose: "shm_size", value: "1gb",desc: "We set this to 1 gig to prevent modern web browsers from crashing" }
opt_security_opt_param: true
opt_security_opt_param_vars:
- { run_var: "seccomp=unconfined", compose_var: "seccomp:unconfined", desc: "For Docker Engine only, many modern gui apps need this to function on older hosts as syscalls are unknown to Docker." }
opt_param_device_map: true
opt_param_devices:
- { device_path: "/dev/dri", device_host_path: "/dev/dri", desc: "Add this for GL support (Linux hosts only)" }
# application setup block # application setup block
app_setup_block_enabled: true app_setup_block_enabled: true
@ -60,19 +82,63 @@ app_setup_block: |
* http://yourhost:3000/?login=true * http://yourhost:3000/?login=true
You can access advanced features of the Guacamole remote desktop using ctrl+alt+shift enabling you to use remote copy/paste or an onscreen keyboard. You can also force login on the '/' path without this parameter by passing the environment variable `-e AUTO_LOGIN=false`.
**Unlike our other containers these Desktops are not designed to be upgraded by Docker, you will keep your home directoy but anything you installed system level will be lost if you upgrade an existing container. To keep packages up to date instead use Ubuntu's own apt program or Alpine's apk program** You can access advanced features of the Guacamole remote desktop using ctrl+alt+shift enabling you to use remote copy/paste, an onscreen keyboard, or a baked in file manager. This can also be accessed by clicking the small circle on the left side of the screen.
**The KDE and i3 flavors for Ubuntu need to be run in privileged mode to function properly** **Modern GUI desktop apps (including some flavors terminals) have issues with the latest Docker and syscall compatibility, you can use Docker with the `--security-opt seccomp=unconfined` setting to allow these syscalls or try [podman](https://podman.io/) as they have updated their codebase to support them**
**Unlike our other containers these Desktops are not designed to be upgraded by Docker, you will keep your home directoy but anything you installed system level will be lost if you upgrade an existing container. To keep packages up to date instead use Ubuntu's own apt, Alpine's apk, Fedora's dnf, or Arch's pacman program**
#### Keyboard Layouts
This should match the layout on the computer you are accessing the container from.
The keyboard layouts available for use are:
* da-dk-qwerty- Danish keyboard
* de-ch-qwertz- Swiss German keyboard (qwertz)
* de-de-qwertz- German keyboard (qwertz) - **OSK available**
* en-gb-qwerty- English (UK) keyboard
* en-us-qwerty- English (US) keyboard - **OSK available** **DEFAULT**
* es-es-qwerty- Spanish keyboard - **OSK available**
* fr-ch-qwertz- Swiss French keyboard (qwertz)
* fr-fr-azerty- French keyboard (azerty) - **OSK available**
* it-it-qwerty- Italian keyboard - **OSK available**
* ja-jp-qwerty- Japanese keyboard
* pt-br-qwerty- Portuguese Brazilian keyboard
* sv-se-qwerty- Swedish keyboard
* tr-tr-qwerty- Turkish-Q keyboard
If you ever lose your password you can always reset it by execing into the container as root: If you ever lose your password you can always reset it by execing into the container as root:
``` ```
docker exec -it webtop passwd abc docker exec -it webtop passwd abc
``` ```
By default we perform all logic for the abc user and we reccomend using that user only in the container, but new users can be added as long as there is a `startwm.sh` executable script in their home directory. By default we perform all logic for the abc user and we reccomend using that user only in the container, but new users can be added as long as there is a `startwm.sh` executable script in their home directory.
All of these containers are configured with passwordless sudo, we make no efforts to secure or harden these containers and we do not reccomend ever publishing their ports to the public Internet. All of these containers are configured with passwordless sudo, we make no efforts to secure or harden these containers and we do not reccomend ever publishing their ports to the public Internet.
## Hardware Acceleration (Ubuntu Container Only)
Many desktop application will need access to a GPU to function properly and even some Desktop Environments have compisitor effects that will not function without a GPU. This is not a hard requirement and all base images will function without a video device mounted into the container.
### Intel/ATI/AMD
To leverage hardware acceleration you will need to mount /dev/dri video device inside of the conainer.
```
--device=/dev/dri:/dev/dri
```
We will automatically ensure the abc user inside of the container has the proper permissions to access this device.
### Nvidia
Hardware acceleration users for Nvidia will need to install the container runtime provided by Nvidia on their host, instructions can be found here:
https://github.com/NVIDIA/nvidia-docker
We automatically add the necessary environment variable that will utilise all the features available on a GPU on the host. Once nvidia-docker is installed on your host you will need to re/create the docker container with the nvidia container runtime `--runtime=nvidia` and add an environment variable `-e NVIDIA_VISIBLE_DEVICES=all` (can also be set to a specific gpu's UUID, this can be discovered by running `nvidia-smi --query-gpu=gpu_name,gpu_uuid --format=csv` ). NVIDIA automatically mounts the GPU and drivers from your host into the container.
### Arm Devices
Best effort is made to install tools to allow mounting in /dev/dri on Arm devices. In most cases if /dev/dri exists on the host it should just work. If running a Raspberry Pi 4 be sure to enable `dtoverlay=vc4-fkms-v3d` in your usercfg.txt.
# changelog # changelog
changelogs: changelogs:
- { date: "21.10.22:", desc: "Rebase i3 to Alpine 3.16, migrate to s6v3." }
- { date: "20.04.21:", desc: "Initial release." } - { date: "20.04.21:", desc: "Initial release." }