On-premise System Requirements

System requirements for a Moodle installation can be quite tricky due to the variables involved. This applies to the hardware/resources level and we will try to give you some guidence but

Resource Calculation

There are mainly three variables that affect server sizing:

  • How many concurrent users?

  • What are the concurrent users doing?

  • How much storage is needed for the courses?

How many concurrent users?

How many concurrent users are expected to be visiting the site in a worst case scenario? Is there a great discrepancy between normal and worst case? In that case it might be time to look at a way to make it possible to temporarily scale the resources.

What are the concurrent users doing??

To make matters worse it’s nut just how many users it’s also what they are doing. Depending on where on the site they are and exactly what feature of Moodle (or one of its plugins) is being used the load on the server and/or database will differ. (The Quiz module is infamous for being really hard on server load.)

How much storage is needed for the courses?

How big are the courses that will be stored and how many? Courses containing videos will be bigger than simple courses using almost only text. Make sure that there is enough storage space for your planned content. (It could also be wide to have a plan on how to expand this storage, should the need arise.)

So what do I need then?

When starting out the it’s hard to know exactly how many concurrent users there will be likewise it’s hard to know what they’ll be doing. Which means the first setup is most often just a guess. There might be room to adjust downwards if too many resources were allocated or there might be an increase required due to how the software is used.

Hardware

One of the best perfomance increases we’ve found is to never let the database and the app server be on the same server. So our minimum recommendation is always two servers. A setup that should be able to handle 500 concurrent users looks like this, but please not that this might be overkill or barely enough depending on how the platform is utilized.

App & Cron Server

Cores:

RAM:

Database Server

Cores:

RAM:

Software

The short list of our requirements are this:

  • Latest Ubuntu LTS

  • Docker

  • Database (PostgreSQL, MariaDB/MySQL or MS SQL Server)

  • SystemD (included in Ubuntu LTS by default)

Linux Distribution

To be able assist with detailed instructions and clear cut commands we will require the use of the latest Ubuntu LTS.

If so desired it is possible to use any Linux distribution as long as it supports the installation of Docker and SystemD. However we can not provide exact commands on how to do the necessary setup and/or troubleshooting steps so please take that into consideration.

Warning

Installation on other distributions than Ubuntu LTS is not supported by our normal installation fee. To help with any troubles that arises we will have to invoice hourly.

Docker

We are distributing the software using OCI images from our own registry. The images are then launched as containers using Docker.

Note

We are aware that there are other container technologies out there, e.g. Podman, but at the moment Docker is the only supported solution.

Database

While we support PostgreSQL, MariaDB/MySQL and MS SQL Server we do recommend using PosgreSQL. Regarding what version to use the general recommendation is “the latest” but there are some minimum version requirements:

PostgreSQL:

13

MySQL:

8.0

MariaDB:

10.6.7

MS SQL Server:

2017

SystemD

SystemD is included by default in Ubuntu LTS and we are utilizing it to manage our Docker setup. More about this in the On-premise System Architecture page.