Driver FixRecommendedSound, Wi-Fi or graphics acting up? Check drivers firstFind missing or outdated drivers fast.Check DriversOctober DealsAmazon USOctober deal check: compare before you payAmazon US: current deals, useful picks and tech finds.Check DealsClean PCRecommendedOne scan can reveal what keeps slowing WindowsLook for cleanup and repair opportunities.Run Scan×
Skip to content
World desk11 min

How to Self-Host the Open edX Platform on a VPS with Tutor

A practical, security-first guide to running Open edX on a 64-bit VPS with Tutor, Docker Compose, DNS and automatic HTTPS.
Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The practical way to run Open edX on a virtual private server is to use Tutor, the open-source deployment tool from Edly. Tutor runs the platform as Docker containers, so you do not assemble every Open edX service by hand. You provision a 64-bit Linux VPS, create a non-root administrator, install Docker, Docker Compose and Python, install Tutor, point DNS records at the server, then run Tutor’s configuration and launch workflow. Tutor’s Caddy container can obtain HTTPS certificates once your hostnames resolve.

Plan the domain names, storage and memory before installing. Tutor documentation lists 4 GB RAM, two CPUs and 8 GB disk as minimums, with 8 GB RAM, four CPUs and 25 GB disk recommended. Those figures are baseline requirements, not a capacity plan for a large course catalogue or heavy enrolment.

As an Amazon Associate I earn from qualifying purchases.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

What you are deploying

Open edX is a collection of services rather than one executable. The Learning Management System (LMS) serves learners, Studio (the CMS) lets course teams author content, and micro-frontends (MFEs) provide newer learner and author experiences. Tutor packages those services, their databases and supporting components into Docker containers and supplies commands for configuration, startup and maintenance.

A VPS is a single rented server with a public network address. It is usually simpler than installing Open edX on home hardware because the server remains online in a data centre and can receive a stable DNS record. You remain responsible for operating-system updates, access control, backups, DNS and version decisions; Tutor does not remove those responsibilities.

What Tutor does and does not do

  • Tutor orchestrates Open edX containers and the supporting services they require.
  • Docker and Docker Compose provide the container runtime. The requirements page calls for Docker 24.0.5 or newer, BuildKit 0.11 or newer, and Docker Compose 2.0.0 or newer.
  • Tutor does not choose your VPS provider, register your domain, or guarantee that an old Open edX release remains compatible with a new operating system.

Before applying commands, check the current release and installation instructions at Tutor documentation. The retrieved installation text mentions Tutor 21 and the Ulmo release; those references may be dated, so pin the versions you actually test instead of copying an old tutorial unchanged.

Choose a VPS size and architecture

Tutor’s published baseline is the most defensible starting point. A community Ubuntu guide repeats the same values. An unattributed 2026 guide suggests larger testing and production machines, but it does not identify a source and should be treated as opinion rather than an official requirement.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Tier CPU Memory Disk How to use it
Tutor minimum 2 CPUs 4 GB RAM 8 GB Small evaluation or development installation; little headroom for growth.
Tutor recommended 4 CPUs 8 GB RAM 25 GB More practical baseline for a small production deployment.
Unofficial larger profile Not stated 8 GB for testing; 16 GB for production 50 GB SSD for testing; 100 GB NVMe for production Community opinion only, not a Tutor specification.

The Tutor requirements page lists AMD64 and ARM64 architectures. Select a 64-bit image and verify that your VPS provider offers the Docker versions Tutor requires. Disk consumption grows with course assets, learner uploads, logs and database backups, so leave room beyond the minimum rather than treating 8 GB as a target capacity.

Ubuntu version is a decision you must verify

The material available for this deployment names Ubuntu 22.04, 24.04 and 26.04, but it does not establish which release Tutor currently supports. Do not infer support from a community article’s title. Read the current requirements page, choose a supported LTS image, and record the image version in your deployment notes. If your chosen image is not listed, stop and resolve that compatibility question before installing Docker or Tutor.

Prepare the VPS securely

Perform the hardening steps before exposing a public web service. The community Ubuntu guide recommends taking a VPS snapshot before making changes, creating a non-root sudo user, using SSH keys, enabling UFW, and keeping ports 80 and 443 closed until Docker is configured.

Create an administrator and use key-based SSH

  1. Sign in with the provider’s initial account only long enough to create a named user:
    sudo adduser edxadmin
    sudo usermod -aG sudo edxadmin

    Choose a strong password for recovery, but use an SSH public key for routine access.

  2. Install your public key for that account using your provider’s console or the standard ssh-copy-id workflow. Test a second session as edxadmin before changing the original account.
  3. After confirming key login, disable password authentication and direct root SSH in the server’s SSH configuration, then reload the service. Keep an emergency console path available so a configuration mistake does not lock you out.

Configure the firewall

Enable UFW and allow SSH only from networks you trust when practical. Keep web ports closed while Docker and Tutor are being installed; open them when DNS and the proxy are ready.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow OpenSSH
sudo ufw enable
sudo ufw status verbose

When you are ready to serve the LMS, allow TCP ports 80 and 443:

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw status

Take the promised VPS snapshot before major upgrades or configuration changes. A snapshot is a rollback aid, not a substitute for application-level backups that you can restore on another server.

Install the software prerequisites

Tutor’s install documentation states that you need Python 3.9 or later with pip and the libyaml development headers. The requirements page specifies Docker 24.0.5 or later, BuildKit 0.11 or later and Docker Compose 2.0.0 or later. Older mirrors that mention Docker 18.06 or Compose 1.22 are obsolete.

Install Python tooling

Use your selected Ubuntu release’s supported Python package, then verify the interpreter and pip before installing Tutor. Package names can vary by Ubuntu release; the important checks are the version, pip availability and the libyaml development package.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
python3 --version
python3 -m pip --version
sudo apt update
sudo apt install -y python3-pip python3-dev libyaml-dev

If your distribution provides a newer Python, that is acceptable as long as it meets Tutor’s current compatibility statement. A virtual environment keeps Tutor isolated from system packages; if you use one, activate it for every administrative session that runs the tutor command.

Install and verify Docker

Install Docker Engine from the instructions for your Ubuntu release, then verify the versions and that your non-root user can run Docker. Do not rely on an old blog’s installation script.

docker --version
docker compose version
docker buildx version
sudo systemctl enable --now docker
sudo usermod -aG docker edxadmin

Sign out and back in after adding the user to the Docker group, then run docker ps. The reported Docker, Compose and BuildKit versions must meet Tutor’s current requirements. If the Docker daemon is unavailable, fix that before installing Open edX; Tutor cannot start containers without it.

Install Tutor

You have two supported approaches: install the Python package with its full extras, or use the standalone binary published through Tutor’s releases. The package route fits servers where you already manage Python; the binary route avoids Python package isolation. Do not mix an unpinned binary and pip installation on the same account unless you deliberately control which executable is first in PATH.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Python package route

python3 -m pip install --user 'tutor[full]'
tutor --version

If the shell cannot find tutor, add the user-local Python bin directory to PATH and start a new shell. Record the Tutor version and the Open edX release it selects. Pin both in your change log so a later upgrade is intentional and reproducible.

Standalone binary route

Download the binary that matches your VPS architecture from the Tutor releases page, install it in a directory on PATH, and verify it with tutor --version. The exact download filename and installation command change between releases, so use the current release instructions rather than copying a historical URL.

Plan DNS and hostnames before the first launch

A production installation needs a domain you control. At minimum, plan separate names for the LMS and Studio; many deployments also reserve a hostname for the MFE. Replace the examples below with names in your own zone:

  • learn.example.com for the LMS
  • studio.example.com for Studio (the CMS)
  • apps.example.com for the MFE or other front-end entry point

Create an A record for the LMS name pointing to the VPS IPv4 address. An Edly Academy walkthrough also describes a CNAME arrangement in which additional subdomains point to the same server. Use the record types that match your DNS provider and Tutor’s current hostname settings; do not create a CNAME at a zone apex where your DNS provider forbids it.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Propagation often takes only a few minutes but is not instantaneous. Query the records from more than one network or use a DNS-checking service. The community Ubuntu 22.04 tutorial warns that its instance cannot simply be reached by visiting an IP address; treat that as a practical caution and plan to use the configured hostnames from the beginning.

Configure and launch Open edX with Tutor

Tutor’s command names and configuration prompts can change with the Open edX release. The sequence below reflects the commonly documented workflow, while the exact options should be checked against the current Tutor manual before execution.

  1. From the non-root administrator account, run Tutor’s configuration command or launch command and provide the LMS and CMS hostnames when prompted. A commonly reported command is tutor local launch; verify that syntax for your installed version.
  2. Review every generated setting, especially hostnames, email configuration, storage locations and the selected Open edX release. Abort if a hostname is misspelled; changing it later requires another configuration save and restart.
  3. Let Tutor build or pull the required Docker images. The first run can consume substantial CPU, memory and disk, so use the recommended profile if your VPS is not merely a short-lived test.
  4. When the launch completes, start the local deployment in the mode documented for your Tutor version. A typical command is tutor local start -d, but confirm the current command and service status syntax in the documentation.
  5. Inspect the container list and logs before inviting learners. Confirm that the LMS, Studio and proxy containers remain running after the initial startup.

Do not expose the platform by IP as a substitute for DNS. Tutor’s proxy and certificate workflow depend on the configured hostnames, and users need stable URLs for cookies, links and email.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Enable HTTPS

Once the A and CNAME records resolve to the VPS and Tutor is serving the configured hostnames, enable SSL through Tutor’s documented workflow. The Edly walkthrough reports that Tutor includes a Caddy container that serves traffic and generates certificates automatically, so a separate Apache or Nginx reverse proxy is normally unnecessary.

Automatic certificate issuance can fail when DNS still points elsewhere, port 80 is blocked, or a hostname is missing from the configuration. Check DNS first, verify that ports 80 and 443 reach the VPS, then rerun the current Tutor HTTPS or launch procedure. Do not request certificates repeatedly while the DNS record is incorrect; certificate authorities enforce rate limits.

Validate the finished deployment

  • Open the LMS hostname over HTTPS and confirm that the certificate name matches it.
  • Open the Studio hostname and sign in with an administrator account created through the documented Tutor workflow.
  • Create a test course, enroll a test learner and verify that navigation, static assets and video or file uploads work.
  • Reboot the VPS and confirm that Docker starts and Tutor’s containers return to the expected state.
  • Check disk usage, memory pressure and container logs after the first course import. A server that meets the minimum specification at idle may still run out of memory during image builds or content processing.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Operating the server after launch

Backups and rollback

Keep provider snapshots before upgrades, but also schedule exports or backups of the Open edX databases and course media according to your recovery objectives. Test restoring a backup on a separate VPS; an untested archive is not a recovery plan.

Version pinning and upgrades

Write down the Ubuntu image, Docker Engine, Compose, Tutor and Open edX versions that passed your acceptance checks. Review the current Tutor requirements before upgrading any one component. Upgrade in a staging VPS first, take a fresh snapshot, and keep a documented rollback path.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Resource monitoring

Monitor RAM, swap, CPU, disk usage and Docker volumes. Memory is the tightest constraint in the published profiles. If the system starts killing containers, stop new builds, inspect logs, add capacity or move to a larger VPS, and then repeat the health checks rather than repeatedly restarting services.

Common failure branches

Tutor command is missing

The package may have been installed into a user-local bin directory that is not on PATH, or you may be using a different user from the one that installed it. Run python3 -m pip show tutor, locate the user-local bin path, add it to PATH, and verify tutor --version again.

Docker permission or daemon errors

Ensure the Docker service is running and that your session was reopened after adding the account to the Docker group. Use sudo docker ps only as a diagnostic; running the whole deployment as root defeats the account separation you established.

Certificate generation fails

Check that every configured hostname resolves publicly to the VPS, that TCP 80 and 443 are allowed, and that no second proxy is intercepting those ports. Correct DNS or firewall rules before repeating the certificate request.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Containers stop during launch

Inspect Tutor and Docker logs, then compare memory and disk usage with the selected hardware tier. A machine at the minimum profile may need more headroom for image builds, databases and uploaded media. Do not delete volumes or reset the installation until you have confirmed that backups exist.

VPS versus other hosting choices

Choice Advantages Responsibilities and limits
VPS Public address, predictable uptime and straightforward DNS. You administer the OS, Docker, Tutor, backups, firewall and upgrades; resources are limited by the plan.
Home server Hardware is under your control and there is no recurring VPS rental. Requires reliable power, upstream bandwidth, router configuration and a way to provide stable DNS; these prerequisites are outside the Tutor requirements.
Dedicated hardware More CPU, RAM and disk headroom for large deployments. Higher operational cost and full responsibility for networking, replacement hardware and physical recovery.

For a first self-hosted installation, a VPS with the recommended Tutor profile, a controlled domain and a tested snapshot is the least complicated path. Increase resources when measured workload, not guesswork, shows that the baseline is insufficient.

Pre-launch checklist

  • 64-bit AMD64 or ARM64 VPS selected.
  • Supported Ubuntu release confirmed in the current Tutor requirements.
  • Non-root sudo user created and SSH key login tested.
  • UFW enabled; SSH restricted; ports 80 and 443 opened only when ready.
  • Docker, BuildKit and Compose versions meet current Tutor requirements.
  • Python 3.9 or newer, pip and libyaml development headers installed.
  • Tutor installation method chosen, version recorded and executable verified.
  • LMS, Studio and MFE hostnames planned.
  • DNS records resolve to the VPS before certificate issuance.
  • VPS snapshot and a separate backup plan prepared.
  • Open edX and Tutor versions pinned and tested.

Bottom line

Tutor turns Open edX self-hosting into a repeatable Docker deployment, but success depends on the surrounding administration: choose a supported Ubuntu image, provide enough memory and disk, secure SSH and the firewall, configure DNS before HTTPS, and verify every version against the current Tutor documentation. Treat the minimum hardware as an evaluation floor, keep a rollback path, and test the LMS and Studio on their real domain names before opening enrolment.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Leave a Reply

Your email address will not be published. Required fields are marked *

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

More from the Wire

  1. World desk4 min
    How to Spot an AI Voice Scam Before Sending MoneyDon’t rely on how a caller sounds. Pause, call back through a known number, and verify the emergency with another trusted person before sending money.
  2. Mountain View desk4 min
    Google’s SynthID Detector: How to Check AI-Generated Images, Video and AudioGoogle’s SynthID Detector looks for an embedded watermark in supported images, video and audio. Here is what its results do—and do not—show.
  3. Redmond desk20 min
    How to create a link to File or Folder in Windows 11Windows 11 gives you several ways to point to a file or folder without moving or duplicating it. You can create a desktop shortcut,…
Recommended PC Tool
Recommended PC Tool
Crashes, No Sound, or Screen Glitches?Free driver scan
Windows Errors? Fix Them Before They SpreadFree repair scan

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.