...
πŸš€ how to deploy open edx on ubuntu vps
Learn how to deploy open edx on ubuntu vps!

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:

  1. VPS Requirements (Minimum & Recommended)

    Minimum (testing / small schools)

    Recommended (production)

    • CPU: 4 vCPU+
    • RAM: 16 GB+
    • Disk: 100 GB NVMe
    • Bandwidth: 1 TB+
    • Reverse DNS: Optional but recommended
  2. 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
    
  3. 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
    
  4. 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
    
  5. 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
    
  6. 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
    
  7. 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.

  8. Access Your Platform

    LMS (students)

    https://learn.example.com
    

    Access open edx site from browser

    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
    
  9. Open Required Firewall Ports

    If using UFW:

    sudo ufw allow 22
    sudo ufw allow 80
    sudo ufw allow 443
    sudo ufw enable
    
  10. 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.

  11. Persistent Data Locations

    Tutor stores data safely outside containers:

    Component Path
    MySQL ~/.local/share/tutor/data/mysql
    MongoDB ~/.local/share/tutor/data/mongodb
    Media uploads ~/.local/share/tutor/data/media
    Config ~/.local/share/tutor/config.yml

    Back these up regularly.

  12. 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
    
  13. 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
    
  14. Upgrading Open edX Safely

    Pull new release

    tutor images pull
    

    Apply upgrade

    tutor local upgrade
    

    Zero data loss if volumes are intact.

  15. Common Management Commands

    Action Command
    Start platform tutor local start
    Stop platform tutor local stop
    Restart tutor local restart
    Logs tutor local logs -f
    Django shell tutor local run lms ./manage.py shell
    DB backup tutor local exec mysql mysqldump
  16. 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.

Avatar of editorial staff

Editorial Staff

Rad Web Hosting is a leading provider of web hosting, Cloud VPS, and Dedicated Servers in Dallas, TX.
lg