I needed a desktop environment to use a certain application on my small Linux VPS. X11 forwarding over SSH was the first thing that came to mind, but I decided to see what else was out there. I’m glad I did, as it led me to the Webtop project.
The Webtop project offers full desktop environments (based on Alpine, Ubuntu, Fedora, and Arch) that you can access right from your web browser. With a simple Docker container, we can launch a Desktop environment with VNC on our server. And even better, we can pair it with Tailscale so that nothing is exposed to the public internet.
Here is an example docker-compose.yml file with Debian and XFCE which I run on Raspberry Pi at home. I prefer to explicitly define the IP and Port binds, especially when running on a publicly available server. Note the local and Tailscale IPs in this case.
---
services:
webtop:
image: lscr.io/linuxserver/webtop:debian-xfce
container_name: webtop
environment:
- PUID=1000
- PGID=1000
- TZ=America/Los_Angeles
- SUBFOLDER=/
- TITLE=Webtop
- SELKIES_MANUAL_WIDTH=1920
- SELKIES_MANUAL_HEIGHT=1080
- MAX_RESOLUTION=1920x1080
volumes:
- ./webtop_data:/config
ports:
- 192.168.X.X:3000:3000
- 192.168.X.X:3001:3001
- 100.X.X.X:3000:3000
- 100.X.X.X:3001:3001
shm_size: "1gb"
restart: unless-stopped
Lastly, pointing your browser to the appropriate IP or host on port 3001 will drop you inside the desktop environment. Enjoy!