Application hosting

Hosting Moodle

Moodle is a learning management system with release-specific PHP and database prerequisites. Course files, active users, scheduled jobs, and assessment traffic determine capacity beyond those software requirements.

Min vCPU
Depends on workload
Min memory
Depends on workload
Min storage
Depends on workload

Must have

Hard prerequisites

  • 64-bit PHP 8.3 or 8.4, with Sodium enabled
  • A database supported by Moodle 5.2
  • PHP max_input_vars set to at least 5000

Recommended

Documented guidance

No further general recommendations are published for this version.

Capacity depends on your workload

Moodle publishes runtime and database requirements, but not one server size for all sites. Capacity changes with concurrent use, course content, uploaded files, plugins, database load, and scheduled tasks.

We only compare what providers publish. A RAM figure alone can't confirm compatibility or production capacity.

Deploy with

Supported paths

  • Self-managed PHP application behind Apache or Nginx
  • Moodle-hosted or certified-partner services, with separate operating and support models

The host must provide

Runtime

PHP
8.3 minimum for Moodle 5.2; 8.4 is also supported
PHP architecture
64-bit PHP only
PHP extension
Sodium is required; max_input_vars must be 5000 or higher
Database
PostgreSQL 16+, MySQL 8.4+, MariaDB 10.11+, Aurora MySQL 8.0+, or SQL Server 2019+
Web server
Apache or Nginx; configure the Moodle 5.2 public directory as the web root

Storage

Persistent data

Moodle stores course uploads and other files in its moodledata directory. Keep this directory outside the public web root, use persistent storage, and size it for uploaded content, temporary files, backups, and retention; there is no universal storage total.

Step by step

Moodle 5.2 deployment outline

  1. Select the release and supported stack

    Check the Moodle 5.2 release page, install 64-bit PHP 8.3 or 8.4 with Sodium, and select one of the documented database versions.

    Official instructions
  2. Set the public document root and private data path

    For Moodle 5.1 and later, configure the web server to serve the public directory. Store moodledata outside the public web root and make it writable only by the application service.

    Official instructions
  3. Schedule Moodle cron

    Configure the command-line cron script to run regularly; Moodle recommends every minute and warns that scheduled tasks are required for normal operation.

    Official instructions
  4. Check the environment and recovery path

    Run Moodle’s environment checks for the selected release, configure HTTPS, and test restoring the database and moodledata together before real courses depend on the site.

    Official instructions

Security

Before you go public

  • Keep moodledata outside the public document root.
  • Use a dedicated database account and restrict database permissions to the Moodle database.
  • Patch the operating system, PHP, database, Moodle core, and plugins; use HTTPS and test backups.

Cost

Beyond the server price

  • Budget for compute, database storage, course files, backups, email delivery, and any separate managed support.
  • Capacity and cost depend on concurrent learners, course activities, file retention, and reporting jobs; no fixed server size is implied.

Matching plans

Plans with published evidence

DigitalOcean

CPU-Optimized Regular Droplet · 2 vCPU / 4 GiB

2vCPU
4 GiBRAM
25 GiBStorage
4 TBTransfer
  • Dedicated CPU
  • SSD
Compatibility unclear from published plan data

Meeting documented runtime prerequisites does not prove production capacity. Traffic, workloads, software configuration, and shared host limits are not measured here.

  • 64-bit PHP 8.3 or 8.4, with Sodium enabledThe plan does not publish this runtime or configuration detail.
  • 64-bit PHP 8.3 or 8.4, with Sodium enabledThe plan does not publish this runtime or configuration detail.
  • 64-bit PHP 8.3 or 8.4, with Sodium enabledThe plan does not publish this runtime or configuration detail.
  • A database supported by Moodle 5.2The plan does not publish enough database or runtime details to confirm a supported option.
  • PHP max_input_vars set to at least 5000The plan does not publish this runtime or configuration detail.
DigitalOcean

General Purpose Droplet · 2 Dedicated vCPU / 8 GB

2vCPU
8 GBRAM
25 GBStorage
4 TBTransfer
  • Dedicated vCPU (100% allocatio...
  • NVMe SSD
Compatibility unclear from published plan data

Meeting documented runtime prerequisites does not prove production capacity. Traffic, workloads, software configuration, and shared host limits are not measured here.

  • 64-bit PHP 8.3 or 8.4, with Sodium enabledThe plan does not publish this runtime or configuration detail.
  • 64-bit PHP 8.3 or 8.4, with Sodium enabledThe plan does not publish this runtime or configuration detail.
  • 64-bit PHP 8.3 or 8.4, with Sodium enabledThe plan does not publish this runtime or configuration detail.
  • A database supported by Moodle 5.2The plan does not publish enough database or runtime details to confirm a supported option.
  • PHP max_input_vars set to at least 5000The plan does not publish this runtime or configuration detail.
Google Cloud

Compute Engine e2-medium · 2 vCPU / 4 GB

2vCPU
4 GBRAM
—Storage
—Transfer
  • Shared vCPU (1.00 sustained)
  • Persistent Disk (billed separa...
Compatibility unclear from published plan data

Meeting documented runtime prerequisites does not prove production capacity. Traffic, workloads, software configuration, and shared host limits are not measured here.

  • 64-bit PHP 8.3 or 8.4, with Sodium enabledThe plan does not publish this runtime or configuration detail.
  • 64-bit PHP 8.3 or 8.4, with Sodium enabledThe plan does not publish this runtime or configuration detail.
  • 64-bit PHP 8.3 or 8.4, with Sodium enabledThe plan does not publish this runtime or configuration detail.
  • A database supported by Moodle 5.2The plan does not publish enough database or runtime details to confirm a supported option.
  • PHP max_input_vars set to at least 5000The plan does not publish this runtime or configuration detail.
Google Cloud

Compute Engine e2-small · 2 vCPU / 2 GB

2vCPU
2 GBRAM
—Storage
—Transfer
  • Shared vCPU (0.50 sustained)
  • Persistent Disk (billed separa...
Compatibility unclear from published plan data

Meeting documented runtime prerequisites does not prove production capacity. Traffic, workloads, software configuration, and shared host limits are not measured here.

  • 64-bit PHP 8.3 or 8.4, with Sodium enabledThe plan does not publish this runtime or configuration detail.
  • 64-bit PHP 8.3 or 8.4, with Sodium enabledThe plan does not publish this runtime or configuration detail.
  • 64-bit PHP 8.3 or 8.4, with Sodium enabledThe plan does not publish this runtime or configuration detail.
  • A database supported by Moodle 5.2The plan does not publish enough database or runtime details to confirm a supported option.
  • PHP max_input_vars set to at least 5000The plan does not publish this runtime or configuration detail.
Hetzner Cloud

Hetzner Cloud CCX13 (Germany and Finland)

2vCPU
8 GBRAM
80 GBStorage
20 TBTransfer
  • Dedicated AMD vCPU
  • NVMe SSD
Compatibility unclear from published plan data

Meeting documented runtime prerequisites does not prove production capacity. Traffic, workloads, software configuration, and shared host limits are not measured here.

  • 64-bit PHP 8.3 or 8.4, with Sodium enabledThe plan does not publish this runtime or configuration detail.
  • 64-bit PHP 8.3 or 8.4, with Sodium enabledThe plan does not publish this runtime or configuration detail.
  • 64-bit PHP 8.3 or 8.4, with Sodium enabledThe plan does not publish this runtime or configuration detail.
  • A database supported by Moodle 5.2The plan does not publish enough database or runtime details to confirm a supported option.
  • PHP max_input_vars set to at least 5000The plan does not publish this runtime or configuration detail.
Hetzner Cloud

Hetzner Cloud CCX23 (Germany and Finland)

4vCPU
16 GBRAM
160 GBStorage
20 TBTransfer
  • Dedicated AMD vCPU
  • NVMe SSD
Compatibility unclear from published plan data

Meeting documented runtime prerequisites does not prove production capacity. Traffic, workloads, software configuration, and shared host limits are not measured here.

  • 64-bit PHP 8.3 or 8.4, with Sodium enabledThe plan does not publish this runtime or configuration detail.
  • 64-bit PHP 8.3 or 8.4, with Sodium enabledThe plan does not publish this runtime or configuration detail.
  • 64-bit PHP 8.3 or 8.4, with Sodium enabledThe plan does not publish this runtime or configuration detail.
  • A database supported by Moodle 5.2The plan does not publish enough database or runtime details to confirm a supported option.
  • PHP max_input_vars set to at least 5000The plan does not publish this runtime or configuration detail.
Hetzner Cloud

Hetzner Cloud CCX33 (Germany and Finland)

8vCPU
32 GBRAM
240 GBStorage
30 TBTransfer
  • Dedicated AMD vCPU
  • NVMe SSD
Compatibility unclear from published plan data

Meeting documented runtime prerequisites does not prove production capacity. Traffic, workloads, software configuration, and shared host limits are not measured here.

  • 64-bit PHP 8.3 or 8.4, with Sodium enabledThe plan does not publish this runtime or configuration detail.
  • 64-bit PHP 8.3 or 8.4, with Sodium enabledThe plan does not publish this runtime or configuration detail.
  • 64-bit PHP 8.3 or 8.4, with Sodium enabledThe plan does not publish this runtime or configuration detail.
  • A database supported by Moodle 5.2The plan does not publish enough database or runtime details to confirm a supported option.
  • PHP max_input_vars set to at least 5000The plan does not publish this runtime or configuration detail.
Hetzner Cloud

Hetzner Cloud CCX43 (Germany and Finland)

16vCPU
64 GBRAM
360 GBStorage
40 TBTransfer
  • Dedicated AMD vCPU
  • NVMe SSD
Compatibility unclear from published plan data

Meeting documented runtime prerequisites does not prove production capacity. Traffic, workloads, software configuration, and shared host limits are not measured here.

  • 64-bit PHP 8.3 or 8.4, with Sodium enabledThe plan does not publish this runtime or configuration detail.
  • 64-bit PHP 8.3 or 8.4, with Sodium enabledThe plan does not publish this runtime or configuration detail.
  • 64-bit PHP 8.3 or 8.4, with Sodium enabledThe plan does not publish this runtime or configuration detail.
  • A database supported by Moodle 5.2The plan does not publish enough database or runtime details to confirm a supported option.
  • PHP max_input_vars set to at least 5000The plan does not publish this runtime or configuration detail.
Hetzner Cloud

Hetzner Cloud CCX53 (Germany and Finland)

32vCPU
128 GBRAM
600 GBStorage
50 TBTransfer
  • Dedicated AMD vCPU
  • NVMe SSD
Compatibility unclear from published plan data

Meeting documented runtime prerequisites does not prove production capacity. Traffic, workloads, software configuration, and shared host limits are not measured here.

  • 64-bit PHP 8.3 or 8.4, with Sodium enabledThe plan does not publish this runtime or configuration detail.
  • 64-bit PHP 8.3 or 8.4, with Sodium enabledThe plan does not publish this runtime or configuration detail.
  • 64-bit PHP 8.3 or 8.4, with Sodium enabledThe plan does not publish this runtime or configuration detail.
  • A database supported by Moodle 5.2The plan does not publish enough database or runtime details to confirm a supported option.
  • PHP max_input_vars set to at least 5000The plan does not publish this runtime or configuration detail.
Hetzner Cloud

Hetzner Cloud CCX63 (Germany and Finland)

48vCPU
192 GBRAM
960 GBStorage
60 TBTransfer
  • Dedicated AMD vCPU
  • NVMe SSD
Compatibility unclear from published plan data

Meeting documented runtime prerequisites does not prove production capacity. Traffic, workloads, software configuration, and shared host limits are not measured here.

  • 64-bit PHP 8.3 or 8.4, with Sodium enabledThe plan does not publish this runtime or configuration detail.
  • 64-bit PHP 8.3 or 8.4, with Sodium enabledThe plan does not publish this runtime or configuration detail.
  • 64-bit PHP 8.3 or 8.4, with Sodium enabledThe plan does not publish this runtime or configuration detail.
  • A database supported by Moodle 5.2The plan does not publish enough database or runtime details to confirm a supported option.
  • PHP max_input_vars set to at least 5000The plan does not publish this runtime or configuration detail.
Hetzner Cloud

Hetzner Cloud CPX11 (US locations)

2vCPU
2 GBRAM
40 GBStorage
1 TBTransfer
  • Shared AMD vCPU
  • NVMe SSD
Compatibility unclear from published plan data

Meeting documented runtime prerequisites does not prove production capacity. Traffic, workloads, software configuration, and shared host limits are not measured here.

  • 64-bit PHP 8.3 or 8.4, with Sodium enabledThe plan does not publish this runtime or configuration detail.
  • 64-bit PHP 8.3 or 8.4, with Sodium enabledThe plan does not publish this runtime or configuration detail.
  • 64-bit PHP 8.3 or 8.4, with Sodium enabledThe plan does not publish this runtime or configuration detail.
  • A database supported by Moodle 5.2The plan does not publish enough database or runtime details to confirm a supported option.
  • PHP max_input_vars set to at least 5000The plan does not publish this runtime or configuration detail.
Hetzner Cloud

Hetzner Cloud CPX12 (Germany and Finland)

1vCPU
2 GBRAM
40 GBStorage
20 TBTransfer
  • Shared AMD vCPU
  • NVMe SSD
Compatibility unclear from published plan data

Meeting documented runtime prerequisites does not prove production capacity. Traffic, workloads, software configuration, and shared host limits are not measured here.

  • 64-bit PHP 8.3 or 8.4, with Sodium enabledThe plan does not publish this runtime or configuration detail.
  • 64-bit PHP 8.3 or 8.4, with Sodium enabledThe plan does not publish this runtime or configuration detail.
  • 64-bit PHP 8.3 or 8.4, with Sodium enabledThe plan does not publish this runtime or configuration detail.
  • A database supported by Moodle 5.2The plan does not publish enough database or runtime details to confirm a supported option.
  • PHP max_input_vars set to at least 5000The plan does not publish this runtime or configuration detail.

Want the full monthly bill? Use the hosting cost calculator. It keeps unknown charges visible.