Add lightweight kasmproxy container and HPC dependencies#23
Open
Add lightweight kasmproxy container and HPC dependencies#23
Conversation
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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
kasmproxy: lightweight nginx proxy container (~25MB vs ~2GB full container)Changes
New Files
Docker-proxy.sh- Build/push script for kasmproxy containerDockerfile.proxy- Minimal nginx:alpine based containerfiles/run_nginx_proxy.sh- Standalone proxy for host KasmVNCModified Files
Dockerfile- Added HPC deps, switched to 22.04, added shellsREADME.md- Updated features, added proxy docsUSAGE.md- Added proxy-only mode documentationfiles/run_kasm_nginx.sh- Configurable VNC_RESOLUTIONContainer Images
Both pushed to Docker Hub:
parallelworks/kasmvnc:latest- Full desktop (~2GB)parallelworks/kasmproxy:latest- Proxy only (~25MB)Test Plan