Open source LMS: what self-hosting actually costs, and when to build instead
An open source learning management system is the most under-explained option in this category. People arrive at it for the wrong reason — the licence is free — and leave for the right one: the operating cost is not.
It is still frequently the correct choice. This page is about knowing which situation you are in before you commit a course library to it, and about a third option that sits between adopting somebody else's LMS and renting one.
What self-hosted actually means
A self-hosted LMS is software you install and run on infrastructure you control. You own the database, the files, the uptime and the upgrades. No seat count, no learner cap, no vendor with an opinion about your data.
The mature open-source platforms in this space are genuinely capable — they run universities and large enterprises, and they generally implement more of the category's expected feature set than any free commercial tier. Moodle is the best known, and there are several serious alternatives with different design philosophies.
The licence being free tells you nothing about the cost.
The real cost of running one
Infrastructure is the small part
A server, a database, object storage for video, and a backup target. For a few hundred learners this is modest. Video is the item that surprises people — course media is large, learners stream it concurrently, and bandwidth is where a cheap host stops being cheap.
Budget for it, but it is rarely the reason self-hosting fails.
Upgrades are the medium part
Open-source LMS platforms ship regular releases, including security releases. Falling behind is not an option for a system holding learner records, and upgrading is not always uneventful — major versions can change database schemas and break themes.
The practical requirement is somebody who will notice a security release exists and act on it within days. Not a committee. One accountable person.
The plugin trap is the expensive part
This is the failure mode nobody warns about, and it is the one that actually hurts.
Open-source LMS ecosystems have thousands of plugins, which is why they can do anything. You install eleven of them to get the exact behaviour you want, and each one is maintained — or not — by a different volunteer on a different schedule. Then a core upgrade lands, three plugins have not been updated for it, and one of them is the one your assessment workflow depends on.
Now you are choosing between staying on an unpatched version and losing a capability your programme was built around. That decision arrives eventually for almost everyone who customises heavily, and it does not get easier with time.
A useful rule: count the plugins you would need to make the platform fit. If it is two or three, open source is comfortable. If it is a dozen, you are not adopting a platform — you are maintaining a bespoke system with extra steps, and you should compare it honestly against actually building one.
Compliance is the hidden part
If you hold learner records you have data-protection obligations regardless of who runs the server — but self-hosting moves the whole burden to you: retention, deletion requests, access logging, breach notification, encryption at rest. A hosted vendor does not remove the obligation, but it does give you a processor with a security team.
What "free licence" does and does not cover
A useful way to price a self-hosted learning management system honestly is to write down every line that is not the licence, because the licence is the only line that is zero.
| Line item | Self-hosted open source | Hosted commercial |
|---|---|---|
| Software licence | £0 | subscription |
| Server, database, storage | yours | included |
| Video bandwidth | yours, and it scales with learners | usually included, sometimes metered |
| Upgrades and security patching | yours, ongoing | included |
| Backups and restore testing | yours — and restore testing is the part everyone skips | included |
| Plugin compatibility after upgrades | yours | not applicable |
| Support when it breaks at 9am | community forums | contracted |
| Data-protection obligations | fully yours | shared with a processor |
None of that makes open source the wrong answer. Plenty of organisations look at that table and still choose it, correctly — because at a few thousand learners the subscription column grows faster than the effort column, and because control of your own data has value that does not appear on either side.
The mistake is only ever comparing the first row.
When open source is clearly right
- You have someone who wants the job. Not "someone who could" — someone whose role includes it. This is the single best predictor of whether self-hosting works.
- Scale makes seat pricing absurd. Thousands of learners, most of them occasional. Per-seat commercial pricing is brutal at that shape and self-hosting wins by an order of magnitude.
- Data residency or sovereignty is non-negotiable. Public sector, healthcare, defence, or a jurisdiction that will not permit a foreign-hosted vendor.
- You need two or three specific customisations and the ecosystem already has them.
- Institutional longevity matters. You want the ability to run this exact system in fifteen years, regardless of what happens to any company.
When it is the wrong tool
- Nobody owns operations. It will be fine for eight months and then quietly stop being patched.
- You need a dozen plugins to make it fit. See the trap above.
- Your requirement is genuinely unusual. Open source gives you someone else's model of teaching, extended. If your model is different in kind rather than in degree, you will be fighting the platform rather than using it.
- You want to launch this month. Self-hosting is not the fast path; a hosted free tier is.
- You do not actually need course delivery. If the requirement is really "prove who has done what, and chase the expiries", you want a training record rather than a learning platform — see training tracking in Excel for where that line falls and what a tracker has to do that a spreadsheet cannot.
The third option: build the system your programme needs
There is a gap in the usual framing. The choice is presented as adopt-open-source versus pay-a-vendor — but both mean accepting somebody else's model of what a course is. For most organisations that is fine. For some it is the entire problem.
A coding agent can now produce a working LMS in a couple of days. That changes the arithmetic, because the historical reason not to build — development cost — was the whole argument. What remains is the same maintenance burden as self-hosting, minus the plugin trap and minus the parts of a general-purpose platform you never wanted.
Custom is worth considering when: your teaching model does not match the products (competency frameworks rather than courses, blended in-person and online, per-branch curricula, training customers rather than staff), you need deep integration with systems you already run, or the platform you would otherwise adopt requires so much extension that you are maintaining bespoke code regardless.
It is not worth it when a hosted product fits and you simply do not like the price. Paying for fit is almost always cheaper than owning software.
What custom learning management system development used to mean, and what it means now
Custom LMS software development was, until recently, a six-figure proposition with a nine-month timeline — which is why almost nobody did it, and why the honest advice for two decades was "adopt something and adapt your process."
What changed is not that custom became fashionable. It is that the build phase collapsed. The design, the data model and the decisions still take real thought; the typing does not.
That shifts the break-even point substantially, but it does not move it to zero, and the costs that remain are the ones people underestimate:
- You own it forever. Every browser change, every dependency upgrade, every security advisory. This is identical to self-hosting open source, so if that burden was the objection, custom does not solve it.
- Nobody else knows your system. No community forum, no plugin marketplace, no consultant you can hire who already knows the codebase. Whoever built it or the documentation they left is your entire support surface.
- The unglamorous parts still have to exist. Authentication, roles, password reset, email delivery, file storage, backups, audit logging. None of it is interesting and all of it is required, and it is precisely what an agent under-builds when nobody names it.
The realistic framing: a custom learning management system is worth it when your teaching model is different in kind from what the products assume, or when you would otherwise be maintaining a dozen plugins to force a general platform into a shape it resists. It is not worth it to avoid a subscription.
What a built LMS has to get right
Left to guess, a coding agent produces the same three defects every time, and they are the same ones the weakest free tools ship:
- Courses as a flat file list rather than a module/section/lesson tree — so the curriculum cannot be expressed and adding structure later means re-authoring everything.
- Progress as component state rather than durable records — it looks correct until a learner returns on a different device and their position is gone.
- Quizzes storing a pass/fail flag with no attempt history — so no score trail, no way to defend a certification, no way to find the question everyone fails.
Against the 38 real LMS platforms in our counted inventory, those are exactly the capabilities the market treats as mandatory: a real course builder appears in 32 of 38 (84%), durable progress tracking in 32 of 38 (84%), and assessments with attempt records in 29 of 38 (76%). Reports appear in 31 of 38 (82%) — and the important detail is that they must derive from the progress and attempt records rather than from parallel counters, or they drift silently.
Get those four right and you have the spine of an LMS. Everything else — catalogs, certificates, gamification, discussion — is genuine scope you can add when the programme needs it.
The decision that comes first, though, is tenancy: single creator, organisation with departments, school with cohorts, corporate branches, or marketplace. Thirty of the 38 platforms make an explicit choice here, because it determines data isolation — who can see whose results — and it is the single hardest thing to change after launch.
If you have not yet ruled out the hosted options, free learning management system covers what those tiers actually give you and where they stop. And if you are building, the Learning Management planner is the specification we hand our own coding agents — the course tree, the progress model, attempt records and the tenancy decision, written so an agent cannot quietly skip them.