Deploying OpenOLAT
Introduction
OpenOLAT (Online Learning And Training) is a web-based open-source learning management system (LMS) developed at the University of Zurich. Used by universities, schools, and corporations worldwide, OpenOLAT provides a comprehensive platform for course management, content delivery, and assessment.
Built with Java and designed for scalability, OpenOLAT supports large-scale deployments with thousands of concurrent users. The platform emphasizes ease of use for both course authors and learners while providing powerful tools for complex learning scenarios.
Key features of OpenOLAT include:
- Course Authoring: Visual course editor with drag-and-drop building blocks
- Learning Paths: Structured learning sequences with prerequisites
- Assessment Tools: Tests, assignments, portfolios, and peer review
- Content Types: Videos, documents, SCORM packages, and HTML5 content
- Collaborative Learning: Forums, wikis, blogs, and group workspaces
- Virtual Classrooms: Integration with BigBlueButton and other video tools
- ePortfolio: Student portfolios for competency demonstration
- Curriculum Management: Program and curriculum organization
- Reporting: Learning analytics and progress tracking
- Certification: Certificates and badges for course completion
- LDAP/SSO: Enterprise authentication integration
- Mobile Apps: iOS and Android applications
This guide walks through deploying OpenOLAT on Klutch.sh using Docker.
Why Deploy OpenOLAT on Klutch.sh
Deploying OpenOLAT on Klutch.sh provides scalable e-learning infrastructure:
Scalable Learning: Handle growing student populations with scalable resources.
Persistent Storage: Store courses, user data, and content with persistent volumes.
HTTPS by Default: Secure access to learning content with automatic SSL certificates.
Custom Domains: Use your institution’s domain for professional branding.
Global Access: Students can access courses from anywhere.
Prerequisites
Before deploying OpenOLAT on Klutch.sh, ensure you have:
- A Klutch.sh account
- A GitHub account with a repository for your deployment
- A PostgreSQL database instance
- Adequate resources for Java application (4GB+ RAM recommended)
Deploying OpenOLAT on Klutch.sh
Set Up PostgreSQL Database
Deploy a PostgreSQL database on Klutch.sh or use an external database service.
Create Your Dockerfile
Create a Dockerfile in your repository:
FROM tomcat:9-jdk17
# Download OpenOLATWORKDIR /tmpRUN wget https://www.openolat.com/releases/openolat_1810.war -O openolat.war
# Deploy to TomcatRUN mkdir -p /opt/openolat && \ unzip openolat.war -d /usr/local/tomcat/webapps/olat
# Create data directoriesRUN mkdir -p /opt/openolat/olatdata
# Configure memory settingsENV JAVA_OPTS="-Xmx2g -Xms1g"
EXPOSE 8080
CMD ["catalina.sh", "run"]Configure OpenOLAT
Create olat.local.properties with your configuration:
db.source=postgresqldb.host=your-database-hostdb.name=openolatdb.user=openolatdb.pass=your-passwordPush to GitHub
Commit and push your Dockerfile to your GitHub repository.
Create a New Project on Klutch.sh
Navigate to the Klutch.sh dashboard and create a new project.
Create and Configure the App
Create a new app and connect it to your GitHub repository.
Configure HTTP Traffic
Set the traffic type to HTTP with an internal port of 8080.
Allocate Resources
OpenOLAT requires adequate memory:
| Users | Recommended Memory |
|---|---|
| < 100 | 4 GB |
| 100-500 | 8 GB |
| 500+ | 16+ GB |
Attach Persistent Volumes
Add persistent storage:
| Mount Path | Recommended Size | Purpose |
|---|---|---|
/opt/openolat/olatdata | 100+ GB | User data and content |
Set Environment Variables
Configure your deployment:
| Variable | Description |
|---|---|
JAVA_OPTS | JVM memory settings |
DB_HOST | Database hostname |
DB_PASSWORD | Database password |
Deploy Your Application
Click Deploy to build and launch your OpenOLAT instance.
Complete Setup
Access your deployment and complete initial configuration. Create admin accounts and configure system settings.