Recommended Free Tools
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.
Antihost offers Linux VPS plans with full root access, unlimited traffic on a 1 Gbps port and a 14-day free trial.
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.
The Tool Desk
Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →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.
#1 Best Overall
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.
| 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
- Sign in with the provider’s initial account only long enough to create a named user:
sudo adduser edxadmin sudo usermod -aG sudo edxadminChoose a strong password for recovery, but use an SSH public key for routine access.
- Install your public key for that account using your provider’s console or the standard
ssh-copy-idworkflow. Test a second session asedxadminbefore changing the original account. - 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.
Rank #2
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.
Do these 3 things before closing this tab:
1Clear out junk files and repair common Windows errors2Scan for outdated or missing drivers - takes under a minute3Repair Windows errors before they cause bigger problemspython3 --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.
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.comfor the LMSstudio.example.comfor Studio (the CMS)apps.example.comfor 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.
Rank #4
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.
- 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. - 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.
- 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.
- 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. - 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.
Quick wins for a faster PC:
Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →Clear out junk files and repair common Windows errorsFree Scan →Scan for outdated or missing drivers - takes under a minuteDriver Scan →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.
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.
Best Value
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.
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.
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.
Quick Recap
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.




