
This article provides a start-to-finish, production-ready guide demonstrating how to deploy Open edX on Ubuntu VPS. This follows the official Tutor-based deployment, which is the recommended, supported, and upgrade-safe method.
Overview
Open edX is a large, microservice-based learning management system (LMS). The only sane way to deploy it in 2026 is with Tutor, which wraps Docker, Kubernetes-style configuration, upgrades, and plugins into a single workflow.
SEE ALSO: How to Install Sakai LMS on AlmaLinux VPS
This guide covers:
- VPS requirements
- Ubuntu preparation
- Docker & Tutor installation
- Open edX initialization
- HTTPS with Letβs Encrypt
- Admin + Studio access
- Production hardening
- Upgrade strategy
How to Deploy Open edX on Ubuntu VPS
To deploy Open edX on Ubuntu VPS, follow the steps provided below:
-
VPS Requirements (Minimum & Recommended)
Minimum (testing / small schools)
- OS: Ubuntu 22.04 LTS/Ubuntu 24.04 LTS
- CPU: 2 vCPU
- RAM: 8 GB
- Disk: 50 GB SSD
- IPv4: Required
- Swap: Required
Recommended (production)
- CPU: 4 vCPU+
- RAM: 16 GB+
- Disk: 100 GB NVMe
- Bandwidth: 1 TB+
- Reverse DNS: Optional but recommended
-
Prepare Ubuntu
Update system
sudo apt update && sudo apt upgrade -y sudo reboot
Install base dependencies
sudo apt install -y \ ca-certificates \ curl \ gnupg \ lsb-release \ unzip \ software-properties-common
-
Install Docker (Required)
Add Docker repository
curl -fsSL https://get.docker.com | sudo bash
Enable Docker
sudo systemctl enable docker sudo systemctl start docker
Allow your user to run Docker
sudo usermod -aG docker $USER newgrp docker
Verify:
docker version
-
Install Docker Compose Plugin
mkdir -p ~/.docker/cli-plugins curl -SL https://github.com/docker/compose/releases/download/v2.30.3/docker-compose-linux-x86_64 \ -o ~/.docker/cli-plugins/docker-compose chmod +x ~/.docker/cli-plugins/docker-compose
Verify:
docker compose version
-
Install Tutor (Open edX Launcher)
Tutor manages images, settings, plugins, upgrades, and backups.
curl -L https://github.com/overhangio/tutor/releases/latest/download/tutor-Linux_x86_64 \ -o tutor chmod +x tutor sudo mv tutor /usr/local/bin/tutor
Verify:
tutor --version
-
Choose Your Open edX Version
List available releases:
tutor images list
Example (recommended stable):
tutor images pull olive tutor config save --set OPENEDX_RELEASE=olive
-
Initial Tutor Configuration
Run interactive setup
tutor local launch
Youβll be prompted for:
- LMS domain (e.g.
learn.example.com) - Studio domain (e.g.
studio.example.com) - Platform name
- Admin email
- Enable HTTPS (Letβs Encrypt)
- MySQL & Redis credentials (auto-generated)
This step:
- Builds images
- Generates secrets
- Starts services
- Configures Nginx
- Enables HTTPS
β³ This can take 10β25 minutes.
- LMS domain (e.g.
-
Access Your Platform
LMS (students)
https://learn.example.com
Studio (course authors)
https://studio.example.com
Default admin user
Tutor creates an admin automatically.
If needed, create another:tutor local createuser \ --username admin2 \ --email admin2@example.com \ --staff --superuser
-
Open Required Firewall Ports
If using UFW:
sudo ufw allow 22 sudo ufw allow 80 sudo ufw allow 443 sudo ufw enable
-
Enable HTTPS (If Skipped)
If HTTPS was skipped during setup:
tutor config save --set ENABLE_HTTPS=true tutor local restart
Certificates auto-renew via Letβs Encrypt.
-
Persistent Data Locations
Tutor stores data safely outside containers:
Component Path MySQL ~/.local/share/tutor/data/mysqlMongoDB ~/.local/share/tutor/data/mongodbMedia uploads ~/.local/share/tutor/data/mediaConfig ~/.local/share/tutor/config.ymlBack these up regularly.
-
Performance & Production Hardening
Enable swap (critical)
sudo fallocate -l 8G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
Tune Docker memory
echo 'vm.overcommit_memory=1' | sudo tee /etc/sysctl.d/99-openedx.conf sudo sysctl -p /etc/sysctl.d/99-openedx.conf
-
Plugins (Optional but Common)
Enable MFE (Micro-Frontend UI)
tutor plugins enable mfe tutor local restart
Enable ecommerce
tutor plugins enable ecommerce tutor local restart
List plugins:
tutor plugins list
-
Upgrading Open edX Safely
Pull new release
tutor images pull
Apply upgrade
tutor local upgrade
Zero data loss if volumes are intact.
-
Common Management Commands
Action Command Start platform tutor local startStop platform tutor local stopRestart tutor local restartLogs tutor local logs -fDjango shell tutor local run lms ./manage.py shellDB backup tutor local exec mysql mysqldump -
Troubleshooting
Containers not starting
docker ps -a tutor local logs --tail=200
Rebuild images
tutor images build openedx tutor local restart
Reset config (last resort)
tutor config save tutor local restart
Final Notes
- Tutor is mandatory for real deployments
- Never edit containers directly
- Always back up
~/.local/share/tutor - Avoid manual Docker Compose changes
- Use subdomains, not paths
Conclusion
You now know how to deploy Open edX on Ubuntu VPS.









