This repository contains the complete Open OnDemand (OOD) deployment configuration for the Eureka HPC cluster (University of Alberta / PAICE). The structure mirrors the filesystem layout of a deployed OOD installation.
eureka-ood/ # Repository root
├── .git/ # Git version control
├── LICENSE # MIT License
├── README.md # Project overview
├── CONFIGURATION.md # This configuration guide
├── REQUIREMENTS.md # System requirements
├── REPOSITORY_STRUCTURE.md # Detailed structure documentation
│
├── etc/ # System configuration files
│ ├── motd # System-wide Message of the Day
│ ├── sudoers.d/
│ │ └── create-ice-xdg # XDG runtime setup permissions
│ ├── ood/ # Open OnDemand configuration
│ │ └── config/
│ │ ├── ood_portal.yml # Main OOD portal configuration
│ │ ├── nginx_stage.yml # PUN environment variables
│ │ ├── ood_portal.sha256sum # Apache config checksum
│ │ ├── clusters.d/
│ │ │ └── eureka.yml # Eureka cluster definition (create on deploy if not vendored)
│ │ ├── ondemand.d/
│ │ │ └── ondemand.yml # Dashboard customization
│ │ ├── locales/ # Internationalization
│ │ │ ├── en-CA.yml # English (Canada) translations
│ │ │ └── fr-CA.yml # French (Canada) translations
│ │ └── apps/ # Application configurations
│ │ ├── dashboard/ # Dashboard customizations
│ │ │ ├── initializers/ # Auto-generated Ruby modules
│ │ │ │ ├── paice_cluster_info.rb # SLURM partition info
│ │ │ │ ├── paice_gpu_info.rb # GPU configuration
│ │ │ │ └── paice_app_versions.rb # Software versions
│ │ │ └── views/ # Dashboard view customizations
│ │ │ └── layouts/ # Layout templates
│ │ │ ├── _footer.html.erb # Footer template
│ │ │ └── nav/ # Navigation components
│ │ │ └── _logo.html.erb # Logo template
│ │ └── shell/
│ │ └── env # Shell app security settings
│ └── ansible/ # Ansible automation for compute / OOD hosts
│ └── playbooks/ # Playbooks (desktop env, Chrome, OOD server deploy)
│ ├── 40-install-desktop-env.yamls # Desktop environment setup
│ ├── 41-install-chrome.yaml # Google Chrome installation
│ └── 78-deploy-ood-server.yaml # OOD portal server deployment (optional)
│
├── opt/ # Optional software and scripts
│ └── ood/
│ ├── cron/ # Automated configuration generators
│ │ ├── gen_cluster_rb.sh # Generate cluster info from SLURM
│ │ ├── gen_gpu_rb.sh # Discover GPU configuration
│ │ └── gen_app_rb.sh # Query environment modules
│ └── scripts/ # OOD integration scripts
│ └── ood_pun_oidc_email.sh # OIDC email claim handler
│
├── usr/ # User utilities
│ └── local/
│ └── bin/
│ └── create-ice.sh # XDG runtime setup script
│
├── var/ # Variable data
│ └── www/ # Web applications
│ └── ood/
│ ├── apps/ # Interactive applications
│ │ └── sys/ # System applications
│ │ ├── jupyter_app/ # JupyterLab server
│ │ ├── rstudio_server_app/ # RStudio Server
│ │ ├── vs_code_html_app/ # VS Code Server
│ │ ├── matlab_app/ # MATLAB environment
│ │ ├── paraview_app/ # Scientific visualization
│ │ ├── blender_app/ # 3D modeling
│ │ ├── qgis_app/ # Geographic information system
│ │ ├── afni_app/ # fMRI data analysis
│ │ ├── vmd_app/ # Molecular visualization
│ │ ├── octave_app/ # GNU Octave
│ │ ├── openrefine_app/ # OpenRefine
│ │ ├── desktop_expert/ # Remote desktop
│ │ ├── shell/ # Terminal access
│ │ └── myjobs/ # Job management
│ ├── templates/ # Form parameter templates
│ │ ├── form_params # Common form parameters
│ │ ├── form_params_cpu # CPU-focused parameters
│ │ ├── form_params_env # Environment parameters
│ │ └── job_params # SLURM job parameters
│ └── public/ # Static assets
│ ├── ualberta/ # University of Alberta branding
│ │ ├── logo.png # UofA logo
│ │ ├── branding.css # Custom styling
│ │ └── favicon.ico # Site favicon
│ ├── amii/ # AMII branding
│ │ └── amii-logo.png # AMII logo
│ └── drac/ # DRAC branding
│ └── drac_banner.png # DRAC banner
│
└── kube/ # Kubernetes infrastructure (optional)
└── redis.yaml # Redis deployment for session management
-
ood_portal.yml- Main OOD portal configuration- Apache virtual host settings and SSL configuration
- OIDC authentication settings
- Session management and logging configuration
-
nginx_stage.yml- Nginx stage configuration- Custom environment variables for PUN (Per-User Nginx)
- MOTD (Message of the Day) integration
- Locale settings (en-CA, fr-CA)
-
clusters.d/eureka.yml- Eureka cluster definition- SLURM job scheduler configuration
- Login node settings and host allowlist
- Job submission and resource management
-
apps/dashboard/- Dashboard customizationsinitializers/- Ruby modules for dynamic cluster infopaice_cluster_info.rb- Auto-generated cluster metadatapaice_gpu_info.rb- Auto-generated GPU informationpaice_app_versions.rb- Auto-generated application versions
views/layouts/- Dashboard view customizations_footer.html.erb- Footer template with brandingnav/_logo.html.erb- Navigation logo template
-
apps/shell/env- Shell application environment- SSH host allowlist for compute node access
- Security and access control settings
-
locales/- Internationalizationen-CA.yml- English (Canada) translationsfr-CA.yml- French (Canada) translations
-
ondemand.d/ondemand.yml- Dashboard configuration- Custom branding and styling (Eureka HPC Cluster theme)
- Help menu with external links (Alliance docs, support, tools)
- Pinned applications configuration (shell, myjobs, desktop, dev tools)
- Dashboard layout and widgets
- Globus file transfer endpoints (
/home,/project,/scratch)
-
ondemand.d/motd- Message of the Day for dashboard- Welcome message for Eureka platform
- Support contact information
-
40-install-desktop-env.yamls- Desktop Environment Setup- Installs multiple desktop environments (GNOME, XFCE, MATE, LXQt)
- Configures VirtualGL for GPU acceleration
- Sets up X11 utilities and desktop applications
- Includes file managers, terminals, and system tools
- Runs
vglserver_configto finalize VirtualGL setup
-
41-install-chrome.yaml- Google Chrome Installation- Installs Google Chrome from internal APT repository
- Provides web browser access for remote desktop sessions
- Enables web-based applications and tools
-
78-deploy-ood-server.yaml- OOD portal server deployment (optional)- Use when provisioning the web front-end host; complements compute-node playbooks
Pre-configured interactive applications:
jupyter_app/- JupyterLab server for interactive computingrstudio_server_app/- RStudio Server for R developmentvs_code_html_app/- VS Code Server for web-based developmentopenrefine_app/- OpenRefine data wrangling (CVMFS modules)
matlab_app/- MATLAB numerical computing environmentoctave_app/- GNU Octave open-source numerical computing
paraview_app/- Scientific visualization and data analysisvmd_app/- Molecular visualization and analysisblender_app/- 3D modeling, animation, and renderingqgis_app/- Geographic information system (GIS)afni_app/- fMRI data visualization and analysis
desktop_expert/- Remote desktop environment
myjobs/- Job management and monitoring interface
Each application contains:
manifest.yml- Application metadata and descriptionform.yml.erb- User interface form configurationsubmit.yml.erb- Job submission and SLURM integrationtemplate/- Application-specific templates and scriptsicon.png- Application icon (most apps)form.js- Client-side form validation and behavior
Additional files for specific applications:
info.html.erb- Additional information page (MATLAB, VMD)view.html.erb- Custom application view (Jupyter, RStudio, VS Code)template/after.sh.erb- Post-launch scripts (Jupyter, RStudio, VS Code)template/assets/- Application-specific assets (Jupyter: Python/Julia logos)template/desktops/- Desktop environment scripts (VNC apps)
Reusable template components for application forms:
form_params- Common form parameters shared across applicationsform_params_cpu- CPU-focused application form parametersform_params_env- Environment-specific form parametersjob_params- SLURM job submission parameter templates
ualberta/- University of Alberta brandinglogo.png- U of A logobranding.css- Custom stylingfavicon.ico- Site favicon
amii/- AMII brandingamii-logo.png- AMII logo
drac/- Digital Research Alliance of Canada brandingdrac_banner.png- DRAC banner
ood_pun_oidc_email.sh- OIDC email claim handler- Saves user's OIDC email to
~/ondemand/oidc_email.txt - Called by Apache during user authentication
- Saves user's OIDC email to
-
gen_gpu_rb.sh- Auto-generates GPU information from SLURM- Queries
scontrol show nodefor GPU types and counts - Updates
paice_gpu_info.rbwith current cluster GPU configuration
- Queries
-
gen_cluster_rb.sh- Generates cluster partition information- Extracts SLURM partition names and resource limits
- Updates
paice_cluster_info.rbwith current cluster configuration
-
gen_app_rb.sh- Updates application version information- Queries environment modules for available software versions
- Updates
paice_app_versions.rbwith current application versions
motd- Message of the Day- Welcome message for Eureka cluster
- Support contact information and portal links
create-ice.sh- XDG runtime directory setup for compute nodes- Creates
/tmp/.ICE-unixdirectory for X11 forwarding - Sets up XDG runtime symlinks for user sessions
- Creates
create-ice-xdg- Sudoers entry for XDG runtime setup- Allows all users to run
create-ice.shwithout password
- Allows all users to run
redis.yaml- Redis deployment for OOD session management- Namespace:
redis-systemfor isolation - Secret: Password-protected Redis authentication
- StatefulSet: Persistent storage with NFS backend
- MetalLB: Load balancer configuration for external access
- Namespace: