Skip to main content

Moodle: a self-hosted learning management system

What Moodle is, what it is known for, and when to self-host a learning platform for courses, quizzes and student tracking.

Moodle is the most widely used open-source learning management system (LMS). It gives schools, companies and trainers a self-hosted platform for courses, assignments, quizzes and tracking — without per-student SaaS fees.

What it is

A PHP/MySQL (or PostgreSQL) web application for delivering online learning. You create courses, enrol learners, and manage content, assessment and progress — all on your own server.

What it does

  • Courses and content — lessons, files, pages, videos, SCORM packages and more.

  • Assessment — quizzes with many question types, assignments with grading, and feedback.

  • Enrolment and roles — students, teachers, managers, with fine-grained permissions.

  • Progress tracking and reports — see who did what, grades, completion and activity logs.

  • Communication — forums, messaging, announcements, notifications.

  • Extensibility — thousands of plugins for everything from badges to web conferencing.

What it is known for

  • Breadth and maturity — decades of development and the largest plugin ecosystem in e-learning.

  • Being the standard — if you have used an online course platform, it was very likely Moodle or something copying it.

  • Flexibility — from a single classroom to a whole university.

Why use it

  • No per-student pricing — a flat VPS regardless of cohort size, which matters when student numbers grow.

  • Data control — student records and content stay on your infrastructure (often a compliance requirement for schools).

  • Customisation — tailor the platform to your institution rather than bending to a vendor's roadmap.

  • Offline-of-vendor — your courses keep working even if a SaaS provider changes terms.

Where and how

Moodle is a real application: budget 2–4 vCPU and 4 GB+ RAM for a small deployment, more for large cohorts, plus storage for content. Deploy PHP-FPM + Nginx + MySQL/MariaDB (or PostgreSQL), put TLS in front, and configure backups for both the database and the moodledata directory (course files live there, not in the DB).

It is heavier to run than a simple website, so plan capacity and updates properly. See /app-hosting/moodle and Sizing your server.