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

Hetzner Cloud

Hetzner Cloud CPX21 (US locations)

3vCPU
4 GBRAM
80 GBStorage
2 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 CPX22 (Germany and Finland)

2vCPU
4 GBRAM
80 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.
Hetzner Cloud

Hetzner Cloud CPX31 (US locations)

4vCPU
8 GBRAM
160 GBStorage
3 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 CPX32 (Germany and Finland)

4vCPU
8 GBRAM
160 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.
Hetzner Cloud

Hetzner Cloud CPX41 (US locations)

8vCPU
16 GBRAM
240 GBStorage
4 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 CPX42 (Germany and Finland)

8vCPU
16 GBRAM
320 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.
Hetzner Cloud

Hetzner Cloud CPX51 (US locations)

16vCPU
32 GBRAM
360 GBStorage
5 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 CPX52 (Germany and Finland)

12vCPU
24 GBRAM
480 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.
Hetzner Cloud

Hetzner Cloud CPX62 (Germany and Finland)

16vCPU
32 GBRAM
640 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.
Hostinger

Hostinger KVM 1 VPS

1vCPU
4 GBRAM
50 GBStorage
4 TBTransfer
  • KVM vCPU (AMD EPYC)
  • 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.
Hostinger

Hostinger KVM 2 VPS

2vCPU
8 GBRAM
100 GBStorage
8 TBTransfer
  • KVM vCPU (AMD EPYC)
  • 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.
Hostinger

Hostinger KVM 4 VPS

4vCPU
16 GBRAM
200 GBStorage
16 TBTransfer
  • 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.