Add a Ubuntu Desktop app — a full Linux desktop streamed to the browser — as a concrete, shippable catalog entry. This is the deliverable spun out of the KasmVNC research umbrella (#32); see that issue for the broader "is Kasm possible in Hola" analysis.
Image
linuxserver/webtop with an Ubuntu flavor (ubuntu-xfce recommended; ubuntu-kde/ubuntu-mate as alternatives). It uses Kasm's KasmVNC and serves HTTP on :3000, so it routes through Hola's http://-only router today (no server change) and Traefik gives the browser HTTPS at https://<name>.<base>.
Hola packaging notes
- Pinned image,
expose: 3000 only (no host ports), data under ${HOLA_APP_DATA} (/config = the user home).
shm_size: "1gb" (2gb for heavier use) — required for browsers/desktops.
- Possibly
security_opt: [seccomp=unconfined] for GUI apps on older kernels — test first; don't relax if unneeded.
- KasmVNC uses websockets — Traefik passes them.
- Do not enable the image's optional Docker-in-Docker (
--privileged).
- Ingress: service on
3000.
Auth — mandatory gate
Ships no auth by default and includes passwordless sudo (root in the container), so:
Desktop-specific caveats (document in the README)
- Single-tenant, persistent — one shared desktop per install (not per-user disposable sessions; that's unique to full Kasm Workspaces).
- System changes outside
/config don't survive a container recreate (e.g. on hola update) — apt installs into the base image are lost. Persist under /config or ship a derived image.
Multi-instance
The core use case is running several desktops for different tasks (research.<base>, build.<base>, …). Hola is single-install-per-app today, so this app should declare multiInstance: true once that lands — tracked in try-hola/hola#246. Ship this app and #246 together for the intended experience.
How to add it (see repo README)
./bin/create-package.sh ubuntu-desktop → edit src/ubuntu-desktop/src/{compose.yaml,manifest.json} (expose: 3000, shm_size, auth.mode: forward-auth, multiInstance: true).
- Add
icons/ubuntu-desktop.svg.
./bin/push-oci-package.sh ubuntu-desktop then ./bin/build-catalog.sh.
Acceptance
Umbrella/research: #32. Multi-instance dependency: try-hola/hola#246.
🤖 Generated with Claude Code
Add a Ubuntu Desktop app — a full Linux desktop streamed to the browser — as a concrete, shippable catalog entry. This is the deliverable spun out of the KasmVNC research umbrella (#32); see that issue for the broader "is Kasm possible in Hola" analysis.
Image
linuxserver/webtopwith an Ubuntu flavor (ubuntu-xfcerecommended;ubuntu-kde/ubuntu-mateas alternatives). It uses Kasm's KasmVNC and serves HTTP on:3000, so it routes through Hola'shttp://-only router today (no server change) and Traefik gives the browser HTTPS athttps://<name>.<base>.Hola packaging notes
expose: 3000only (no host ports), data under${HOLA_APP_DATA}(/config= the user home).shm_size: "1gb"(2gb for heavier use) — required for browsers/desktops.security_opt: [seccomp=unconfined]for GUI apps on older kernels — test first; don't relax if unneeded.--privileged).3000.Auth — mandatory gate
Ships no auth by default and includes passwordless
sudo(root in the container), so:auth.mode: forward-authis required; restrict tohola-adminswhere possible.Desktop-specific caveats (document in the README)
/configdon't survive a container recreate (e.g. onhola update) —apt installs into the base image are lost. Persist under/configor ship a derived image.Multi-instance
The core use case is running several desktops for different tasks (
research.<base>,build.<base>, …). Hola is single-install-per-app today, so this app should declaremultiInstance: trueonce that lands — tracked in try-hola/hola#246. Ship this app and #246 together for the intended experience.How to add it (see repo README)
./bin/create-package.sh ubuntu-desktop→ editsrc/ubuntu-desktop/src/{compose.yaml,manifest.json}(expose: 3000,shm_size,auth.mode: forward-auth,multiInstance: true).icons/ubuntu-desktop.svg../bin/push-oci-package.sh ubuntu-desktopthen./bin/build-catalog.sh.Acceptance
https://<name>.<base>, reachable only through the Authentik forward-auth gate, the streamed desktop + clipboard work over websockets, and/configpersists across a restart.Umbrella/research: #32. Multi-instance dependency: try-hola/hola#246.
🤖 Generated with Claude Code