Skip to content

Add lightweight kasmproxy container and HPC dependencies#23

Open
mattshax wants to merge 15 commits intomainfrom
feature/kasmproxy-and-hpc-deps
Open

Add lightweight kasmproxy container and HPC dependencies#23
mattshax wants to merge 15 commits intomainfrom
feature/kasmproxy-and-hpc-deps

Conversation

@mattshax
Copy link
Copy Markdown
Member

@mattshax mattshax commented Feb 5, 2026

Summary

  • Add kasmproxy: lightweight nginx proxy container (~25MB vs ~2GB full container)
  • Add HPC/CAE software dependencies (csh, ksh, 32-bit libs, pstack)
  • Switch base image from Ubuntu 24.04 to 22.04 for compatibility
  • Add configurable VNC_RESOLUTION (default 1920x1080)

Changes

New Files

  • Docker-proxy.sh - Build/push script for kasmproxy container
  • Dockerfile.proxy - Minimal nginx:alpine based container
  • files/run_nginx_proxy.sh - Standalone proxy for host KasmVNC

Modified Files

  • Dockerfile - Added HPC deps, switched to 22.04, added shells
  • README.md - Updated features, added proxy docs
  • USAGE.md - Added proxy-only mode documentation
  • files/run_kasm_nginx.sh - Configurable VNC_RESOLUTION

Container Images

Both pushed to Docker Hub:

  • parallelworks/kasmvnc:latest - Full desktop (~2GB)
  • parallelworks/kasmproxy:latest - Proxy only (~25MB)

Test Plan

  • Build and push kasmvnc container
  • Build and push kasmproxy container
  • Test proxy mode with host KasmVNC
  • Test full container with Enroot

Features:
- Add kasmproxy: lightweight nginx proxy container (~25MB vs ~2GB)
  - Alpine-based for minimal footprint
  - Proxies to existing KasmVNC on host
  - Supports BASE_PATH for reverse proxy routing
- Add HPC/CAE software dependencies (csh, ksh, 32-bit libs, pstack)
- Switch base image from Ubuntu 24.04 to 22.04 for compatibility
- Add configurable VNC_RESOLUTION (default 1920x1080)

Build scripts:
- Docker-proxy.sh: Build/push kasmproxy container
- Dockerfile.proxy: Minimal nginx:alpine based container

Proxy improvements:
- run_nginx_proxy.sh: Standalone proxy for host KasmVNC
- Include root "/" proxy for KasmVNC assets/websockets
- Better error handling and debug output
- Ubuntu 24.04 handles missing D-Bus more gracefully for Cinnamon
- kasmproxy: Switch from nginx:alpine to ubuntu:24.04 to fix Enroot nvidia hook issues
- kasmvnc: Revert from 22.04 to 24.04
- XFCE is lighter weight and works without system D-Bus
- Better compatibility with all container runtimes (Enroot, Singularity)
- Removed Cinnamon, muffin, nemo, gnome-terminal packages
- Added XFCE extras: ristretto, screenshooter, taskmanager, thunar-archive-plugin
- Added Arc-Dark theme and Papirus icons
- Simplified xstartup script (no complex fallback chain needed)
- Smaller image size (~500MB-1GB reduction)
- Singularity-proxy.sh for building lightweight proxy SIF
- Updated documentation for Singularity proxy usage
- Configure Adwaita-dark GTK theme and window decorations
- Set Adwaita icon theme
- Apply dark teal solid background color (RGB: 27, 42, 53)
- Theme settings applied both via xfconf XML and runtime xfconf-query
- Dynamically detect monitor name from xfconf at runtime
- VNC creates dynamic monitor names (not always "monitorscreen")
- Remove any cached last-image property to ensure solid color
- Increase sleep to 3s to ensure xfconf is fully available
- New color: RGB(25, 45, 30) = #192d1e
- New Dockerfile.rocky9 based on Rocky Linux 9
- Uses EPEL and CRB repositories for additional packages
- XFCE desktop with Adwaita-dark theme
- KasmVNC 1.4.0 using Oracle 9 RPM (RHEL 9 compatible)
- Docker-rocky9.sh build script for Docker
- Singularity-rocky9.sh build script for Singularity/Apptainer
- Same HPC dependencies as Ubuntu version (tcsh, ksh, gdb, etc.)
- Add Rocky Linux 9 container information
- Fix enroot Docker Hub URLs (use docker://parallelworks/... not docker.io/)
- Add shared installation instructions for HPC clusters
- Update included applications list for XFCE
- Add VNC_RESOLUTION environment variable docs
- Add troubleshooting for enroot JSON error
- Update file structure to include Rocky 9 files
- Rename Dockerfile to Dockerfile.ubuntu
- Rename Docker.sh to Docker-ubuntu.sh
- Rename Singularity.sh to Singularity-ubuntu.sh
- Update registry path to parallelworks/kasmvnc-ubuntu
- Update Enroot.sh defaults to kasmvnc-ubuntu
- Update all documentation with new naming convention
- Container naming now follows pattern: kasmvnc-{os}
  - kasmvnc-ubuntu (Ubuntu 24.04)
  - kasmvnc-rocky9 (Rocky Linux 9)
  - kasmproxy (lightweight proxy)
Remove polkit autostart entries (xfce-polkit and polkit-gnome) that
cause an annoying authentication popup on VNC session startup since
there is no proper polkit backend in containers.
Launch an optional user-specified command in the VNC desktop session
after services are ready, enabling custom app startup on container boot.
- Consolidate all 32 Cadence Virtuoso required packages in Rocky 9
  Dockerfile with --skip-broken to handle unavailable packages
- Save full host environment in entrypoint to /tmp/env.sh so
  Singularity/Enroot host vars propagate to VNC desktop sessions
- Source /tmp/env.sh, /etc/environment, and ~/.bashrc in xstartup
  so desktop apps inherit user PATH, license servers, modules, etc.
- Use login shell for STARTUP_COMMAND to pick up user environment
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant