Which Moodle version you are sizing for
Moodle's release page lists four supported branches on 30 October 2026. Requirements rise with each release, so decide the branch first. A new site should usually start on the newest LTS for its long security window; an existing site on 4.5 LTS has until October 2027 for security fixes.
| Branch | Released | General support ends | Security support ends |
|---|---|---|---|
| 4.5 LTS | 7 October 2024 | 6 October 2025 | 4 October 2027 |
| 5.1 | 6 October 2025 | 5 October 2026 | 19 April 2027 |
| 5.2 | 20 April 2026 | 19 April 2027 | 4 October 2027 |
| 5.3 LTS | 5 October 2026 | 4 October 2027 | 1 October 2029 |
PHP and database minimums by release
From each release's notes. All three require the sodium PHP extension, max_input_vars of at least 5000 and a 64-bit PHP build. Moodle recommends running the latest point release of each requirement. Oracle is not supported from Moodle 5.0.
| Requirement | Moodle 5.1 | Moodle 5.2 | Moodle 5.3 LTS |
|---|---|---|---|
| PHP minimum | 8.2.0 (8.3 and 8.4 supported) | 8.3.0 (8.4 supported) | 8.3.0 (8.4 supported) |
| PostgreSQL | 15 | 16 | 17 |
| MySQL | 8.4 | 8.4 | 8.4 |
| MariaDB | 10.11.0 | 10.11.0 | 11.4.0 |
| SQL Server | 2017 | 2019 | 2019 |
| Upgrade from | 4.2.3 or later | 4.4 or later | 4.4 or later |
Cron, moodledata and the /public document root
Cron is not optional. Moodle's Task API documentation says tasks only run as often as cron runs and recommends running cron at least once per minute; Moodle's INSTALL.txt says to set up a cron task every minute. Scheduled tasks run on a schedule set by the administrator, and ad-hoc tasks queued by developers also wait for cron.
moodledata, set as $CFG->dataroot, is Moodle's data directory. The comments in Moodle's config-dist.php say this directory should be readable and writable by the web server user but should not be accessible directly via the web, so it belongs outside the public folder.
From Moodle 5.1, the release notes say the server must point its document root at the new /public directory rather than the main Moodle folder; without that change some sites show directory listings or errors after upgrading, and plugins must be moved into the right place under /public.
Why these needs point to a VPS
Look at what the list asks you to control: a per-minute cron calling a PHP command-line script, a data directory outside the web root, a specific document root, a PHP setting (max_input_vars), a PHP extension (sodium) and a database version as recent as MariaDB 11.4 or PostgreSQL 17. On a server where you have root access, each is a configuration step. On a plan designed around WordPress, any of them may be impossible to set, so confirm every item in writing before buying.
A VPS gives that control. DigitalOcean Droplets are unmanaged: you install PHP, the database and the web server yourself. KnownHost's managed VPS lists full root access with a control panel option and mentions running cron, Composer and multiple PHP versions; its plans start higher but include management.
| Option | Entry price | Resources at entry | Who runs the stack |
|---|---|---|---|
| DigitalOcean Basic Droplet | $12/mo | 2 GiB RAM, 1 vCPU, 50 GiB SSD, 2,000 GiB transfer | You |
| DigitalOcean Basic Droplet | $24/mo | 4 GiB RAM, 2 vCPU, 80 GiB SSD, 4,000 GiB transfer | You |
| KnownHost Managed VPS Basic | $43.25/mo starting price | 4 cores, 6 GB RAM, 100 GB NVMe, 3 TB bandwidth | KnownHost manages; you have root |
| KnownHost Managed VPS Standard | $63.25/mo starting price | 6 cores, 10 GB RAM, 200 GB NVMe, 5 TB bandwidth | KnownHost manages; you have root |
Pre-install checklist
- Pick the branch: 5.3 LTS for a new site unless a required plugin is not yet compatible.
- Confirm 64-bit PHP 8.3 or 8.4 with the sodium extension.
- Set max_input_vars to 5000 or higher in PHP configuration.
- Install a supported database at or above the branch minimum (for 5.3: PostgreSQL 17, MySQL 8.4 or MariaDB 11.4).
- Create moodledata outside the web root, writable by the web server user.
- Point the web server document root at Moodle's /public directory (5.1 and later).
- Add a system cron entry that runs Moodle cron every minute.
- Plan backups that cover both the database and the moodledata directory.
Worked example: a 5.3 LTS install for a small training team
A training team wants self-hosted Moodle for a few hundred staff. They choose 5.3 LTS for security support until 1 October 2029. On a DigitalOcean $24 Droplet with 4 GiB of RAM, they install PHP 8.4 with sodium, MariaDB 11.4, and Nginx with the document root set to /public. moodledata sits in a separate directory outside it. A system crontab runs Moodle cron every minute. Daily Droplet backups add 30% to the Droplet price, and they also export database dumps and moodledata to separate storage.
If nobody on the team wants to patch a Linux server, the same checklist goes to a managed VPS provider instead, with a written confirmation for each item.
Questions before you decide
What PHP version does Moodle 5.3 need?
Moodle 5.3's release notes set the minimum at PHP 8.3.0, with 8.4 supported, a 64-bit build only, the sodium extension, and max_input_vars of at least 5000.
How often should Moodle cron run?
Moodle's Task API documentation recommends running cron at least once per minute, because tasks only run as often as cron does. INSTALL.txt also says to set up cron every minute.
Can I host Moodle on managed WordPress hosting?
Only if the plan lets you set a per-minute CLI cron, a moodledata directory outside the web root, the /public document root, PHP extensions and settings, and a supported database. Plans built around WordPress often do not, so confirm each in writing or use a VPS.
Sources & verification
Product details and prices can change. Check the linked provider before buying.
- Moodle Developer Resources: Releases Accessed 30 Oct 2026
- Moodle Developer Resources: Moodle 5.3 release notes Accessed 30 Oct 2026
- Moodle Developer Resources: Moodle 5.1 release notes Accessed 30 Oct 2026
- Moodle Developer Resources: Task API Accessed 30 Oct 2026
- Moodle source: INSTALL.txt Accessed 30 Oct 2026
- Moodle source: config-dist.php Accessed 30 Oct 2026
- DigitalOcean: Droplet pricing Accessed 30 Oct 2026
- KnownHost: Managed VPS hosting Accessed 30 Oct 2026
Sources link directly to providers. Product buttons may use separately labeled affiliate links. Read our disclosure.