Linux containers with full desktop environments accessible trough a web browser.
These desktops are currently available.
To setup the container, you can use the docker cli, or docker compose. Don't forget to change the image tag to your desired desktop variant!
docker-compose (recommended)
---
services:
webtop:
image: ghcr.io/tibor309/webtop:ubuntu-cinnamon
container_name: webtop
security_opt:
- seccomp:unconfined #optional
environment:
- PUID=1000
- PGID=1000
- TZ=Etc/UTC
- SUBFOLDER=/ #optional
- TITLE=Webtop #optional
volumes:
- /path/to/data:/config
- /var/run/docker.sock:/var/run/docker.sock #optional
ports:
- 3000:3000
- 3001:3001
devices:
- /dev/dri:/dev/dri #optional
shm_size: "1gb" #optional
restart: unless-stopped
docker run -d \
--name=webtop \
--security-opt seccomp=unconfined `#optional` \
-e PUID=1000 \
-e PGID=1000 \
-e TZ=Etc/UTC \
-e SUBFOLDER=/ `#optional` \
-e TITLE=Webtop `#optional` \
-p 3000:3000 \
-p 3001:3001 \
-v /path/to/data:/config \
-v /var/run/docker.sock:/var/run/docker.sock `#optional` \
--device /dev/dri:/dev/dri `#optional` \
--shm-size="1gb" `#optional` \
--restart unless-stopped \
ghcr.io/tibor309/webtop:ubuntu-cinnamon
This container is based on the linuxserver.io kasmvnc base image, so you can use their mods and additional configs if you want.
Parameter | Function |
---|---|
-p 3000 |
Web Desktop GUI |
-p 3001 |
Web Desktop GUI HTTPS |
-e PUID=1000 |
For UserID |
-e PGID=1000 |
For GroupID |
-e TZ=Etc/UTC |
Specify a timezone to use, see this list. |
-e SUBFOLDER=/ |
Specify a subfolder to use with reverse proxies, IE /subfolder/ |
-e TITLE=Webtop |
String which will be used as page/tab title in the web browser. |
-v /config |
abc user's home directory, stores local files and settings |
-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 |
--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. |
To access the container, navigate to the ip address for your machine with the port you provided at the setup.