Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more

A free Render web service can host the part of a learning platform that holds no data, but it cannot hold the LMS database or course uploads. Moodle’s documented route is a PHP application on shared hosting, which is where the database and the moodledata directory belong. Any setup that puts a frontend or API on Render has to treat Render as stateless and keep all durable data on the shared host or on a paid, backed-up service. Everything below assumes that split, and it is only suitable for a demo, a pilot, or a test class.

Decide the architecture before you touch a server

The phrase “full-stack LMS on shared hosting plus Render” can describe two very different systems, so pin down which one you are building.

  • Option A: Moodle only, on shared hosting. Moodle is installed the way Moodle’s own cPanel guide describes. Render is not involved. This is the documented path, and it is the one this article’s installation steps cover.
  • Option B: Moodle on shared hosting, custom frontend and API on Render. Moodle keeps its database, users, courses, and files. A separate application you wrote runs on Render and talks to Moodle over its web services. This is a chosen architecture, not something Moodle does by default. Moodle is not automatically split across two hosts.
  • Option C: a fully custom LMS on Render. Your own frontend, backend, and database are all yours. Render’s own guidance separates these into a frontend, a backend API, and a datastore, each as its own service. Moodle is not part of this option.

The rest of this article covers A, and B where it adds a Render component. Option C follows Render’s general deployment model, and the free-tier limits in the sections below apply to it just as much.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Where each piece lives, and whether it survives

Most failed free-tier deployments fail on this one question. Before you deploy, list every piece of state the LMS produces and assign it to a host that keeps it.

#1 Best Overall
Tecmojo 12U Open Frame Network Rack for IT & AV Gear, AV Rack Floor Standing or Wall Mounted,with 2 PCS 1U Rack Shelves & Mounting Hardware,Network Rack for 19" Networking,Audio and Video Device
  • 【Powerful Load-bearing】12U Network Rack Open Frame is constructed from durable cold rolled steel; Rack shelf supports enhance stability, wall-mounted capacity of 130lbs, the ground-mounted up to 260lbs
  • 【Considerate Designs】Open-frame layout, including a top panel adding space, anti-slip shelf stops fixing devices and compatible racks for stack and expansion to meet requirements of home server rack
  • 【Complete Accessories】A 12U open frame server rack, two ventilated shelves, four shelf stops, four velcro straps and a set of equipment mounting screws
  • 【Versatile Application】Ideal for space-efficient multi-device setups in warehouses, retail, classrooms, offices and more; Excellent choices as AV Rack/IT Rack
  • 【Effortless Setup】 Network Rack includes hardware, a comprehensive manual, mounting hole drilling template and an online assembly video to simplify setup
Component Suitable host in this design Why
Moodle code Shared hosting (Option A or B) Moodle’s documented installation target; PHP runtime provided by the host.
Moodle database (MySQL, MariaDB, or PostgreSQL) Shared-host database service Persistent, managed through cPanel tools. Render free Postgres is not suitable: it expires after 30 days and has no backups.
moodledata (uploads, cache, sessions) Shared-host home directory, outside public_html Render free web services lose local filesystem changes on restart, redeploy, or spin-down.
Custom frontend (static build) Render Static Site Only static assets, so nothing is lost when it restarts.
Custom API or proxy to Moodle Render web service (free or paid) Stateless if it stores nothing locally. Holds the Moodle web services token as an environment variable.

The shared-hosting side

MoodleDocs’ cPanel Shared Hosting Installation guide describes shared hosting as a moderate-cost option for a small number of students on a self-managed Moodle site. The same passage warns that performance problems and limits on student numbers may occur. The guide does not give a student-count threshold, so you need to test your own load before committing a class to it.

Requirements to verify first

The cPanel instructions covered here apply to Moodle 5.1. Confirm the requirements for the exact release you install, because they change between versions.

Rank #2
Sale
StarTech 42U 4-Post Open Frame Rack, 19in, 22-40in, 1323lb/600kg
  • ADJUSTABLE DEPTH: 4-Post 42U open frame server rack with 4 vertical rails and adjustable mounting depth 22" to 40" (56,0cm to 101,7cm); Compatible with various servers / switches / data / AV and other IT equipment; EIA/ECA-310-E Compliant
  • EASY ASSEMBLY: Mobile network rack with easy-to-follow assembly instructions and online video; Compact flat-pack shipping to avoid damage and facilitate installation; Total product height of 80.3in (204 cm) with casters, 78in (198cm) without casters
  • COLD ROLLED STEEL: Durable 4 Post 19in open frame rack designed for ventilation with 42U mounting height and 1320lb (600kg) weight capacity (stationary); 3 install options included: casters, levelling feet, or base-plate to secure rack to the floor
  • HARDWARE INCLUDED: Rolling computer/data rack includes cage nuts and screws to mount equipment, easy to read Units (U) and depth adjustment markings, cable management hooks for organization, and required assembly tools
  • THE IT PRO'S CHOICE: Designed and built for IT Professionals, this 42U rack is backed for 2-years, including free lifetime 24/5 multi-lingual technical assistance
  • PHP 8.2 or newer, with the extensions listed in the guide: sodium, curl, openssl, mbstring, xml, intl, json, and fileinfo.
  • PHP settings: memory_limit at 128M or higher, max_input_vars at 5000 or higher, and file uploads enabled.
  • Database: MySQL 8.4, MariaDB 10.11.0, or PostgreSQL 13 minimum.
  • Hosting tools: SSL on the domain, and access to PHP Selector, phpMyAdmin, a database wizard or manager, Terminal, and File Manager.
  • Scheduled tasks: Moodle needs its cron job to run regularly. Ask the host whether cron jobs are available on your plan and how often they can run.
  • Backup and restore: ask the host what it backs up, how often, and how you restore a single database or a moodledata directory.

Installation sequence

  1. In cPanel, open PHP Selector and select PHP 8.2 or newer. Enable the extensions listed above and confirm the PHP settings.
  2. Create a database and a database user with the database wizard or manager, and grant the user all privileges on that database. Note the host name, database name, user, and password.
  3. Use Terminal or File Manager to create ~/moodledata in your home directory, outside public_html. Moodle’s data directory must not be web-accessible.
  4. Place the Moodle code in your home directory and link the Moodle public directory into public_html, as the guide describes. Only the public part of the code should be reachable from the web.
  5. Open the domain in a browser and run the Moodle web installer. Enter the database details and point the data directory to ~/moodledata.
  6. Set up the cron job in cPanel (Cron Jobs), following the schedule that Moodle’s administration pages recommend for your version.

If the installer reports a PHP or database version problem, fix it in PHP Selector or the database tools before retrying. Do not lower the requirements to get past the check.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The Render side: what the free tier does and does not do

Render distinguishes a Web Service, which runs server-side code, from a Static Site, which serves only static assets. A Web Service is configured from a connected Git repository with a branch, a build command, a start command, and environment variables. Render’s FAQ states that PHP applications can be deployed with a Docker image, but that alone does not mean Moodle should run there. Moodle on Render would still need persistent storage for its data and a durable database, and the free tier provides neither.

Rank #3
VEVOR 12U Open Frame Server Rack, 23-40 in Adjustable Depth, Free Standing or Wall Mount Network Server Rack, 4 Post AV Rack with Casters, Holds All Your Networking IT Equipment AV Gear Router Modem
  • Adjustable Depth: 23-40'' adjustable depth is used for servers and network equipment, ensuring enough space for AV equipment, components, and cabling, while allowing you to access ports and equipment from multiple sides.
  • Strong Load Capacity: Ground-Mounted Load Capacity: 500 lbs, Wall-Mounted Load Capacity: 150 lbs. The av rack is made of carbon steel for better weldability performance and can help save space while meeting your need to place multiple devices.
  • User-friendly Design: Ergonomic design makes the open frame av rack easier to use. The additional top panel is able to place other items with more available space. Roller design moves anywhere and anytime, is convenient, and is more energy-saving.
  • Complete Accessories: We provide the accessories you need, including 2 x Pallets, 145 x M5*10 Cross Head Screws, 4 x Casters, 4 x M10*50 Expansion Screws,10 x M6*12 Cage Nuts, 1 x Grounding Wire, 1 x User Manual.
  • Wide Application: The server rack wall mount maximizes the use of available space, suitable for retail venues, classrooms, offices, and other places where space is limited.

The free-tier limits, as Render’s free-tier documentation states them when checked in 2026:

  • Idle spin-down: free web services spin down after 15 minutes without inbound traffic. Render’s FAQ puts it this way: “Free web service instances spin down if they receive no incoming traffic for 15 consecutive minutes.” Waking takes about one minute, so the first request after an idle period can look broken.
  • Ephemeral filesystem: changes to a free web service’s local filesystem are lost on redeploy, restart, or spin-down.
  • Free Postgres: 1 GB capacity, a 30-day lifetime, no backups, and a 14-day upgrade grace period after expiry before deletion.
  • Instance hours: 750 free instance hours per workspace per calendar month, shared across all free web services in that workspace. A single service running around the clock uses about 744 hours in a 31-day month, so two always-on free services will exhaust the pool.
  • Production use: Render’s documentation says free instances are not for production applications.

These limits are why the Render component in Option B should be a stateless API or a static frontend, with no uploads, no local database, and no state that matters if it disappears.

Rank #4
AxcessAbles 12U Network Rack with Wheels - 500lb Capacity, 18" Depth | 19-Inch Open Frame AV Rack Case with 3” Caster Wheels | Screws, Spacer, Tool Included
  • Universal 19” Rack Mount Compatibility – Perfect for pro audio, video, IT, and network gear. Compatible with mixers, routers, patch panels, servers, power amps, and more.
  • Heavy-Duty Load Capacity – Built to support up to 550 lbs. Ideal for studio gear, DJ setups, server equipment, and AV components that demand serious stability.
  • Robust Steel Frame & Design – Made with 1.5mm thick steel and weighs 36 lbs for maximum durability, reduced vibration, and long-term reliability in any setting.
  • Mobile & Secure – Preinstalled with 3” industrial-grade caster wheels (lockable), making it easy to move and position your rack exactly where you need it.
  • All-In-One Setup Kit Included – Comes with 34 rack screws (5mm & 6mm), a 1U blank spacer, and an assembly tool—ready for fast installation out of the box.

Connecting a Render frontend to Moodle on shared hosting

If you use Option B, the browser should not call Moodle directly. Route calls through your Render backend so the Moodle token stays on the server and the browser never sees it. This also avoids cross-origin browser restrictions between the Render domain and the Moodle domain.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Set up Moodle’s web services

  1. As a site administrator, enable web services under Site administration > Advanced features. Then enable the REST protocol under Site administration > Server > Web services > Manage protocols. Menu labels can shift between releases, so check them against your Moodle 5.1 install.
  2. Create a dedicated service under web services that includes only the functions your application needs. Do not use a full administrator account for this.
  3. Create a dedicated user with only the capabilities that service needs, then generate a token for that user and service.

Call Moodle from the Render backend

  1. In the Render dashboard, open your web service, go to Environment, and add the Moodle base URL and token as environment variables. Do not commit either to the repository.
  2. Test the connection from a terminal with a read-only function first. The example below uses core_webservice_get_site_info, which returns basic site information.
curl -X POST "https://lms.example.com/webservice/rest/server.php" 
  -d "wstoken=$MOODLE_TOKEN" 
  -d "wsfunction=core_webservice_get_site_info" 
  -d "moodlewsrestformat=json"

Sending the token in the POST body keeps it out of URLs, which web server and proxy logs often record. Replace lms.example.com with your Moodle domain. A successful response returns JSON with the site name and version. An error such as an invalid token or a disallowed function means the service, the user, or the token setup is wrong, not the Render side.

Best Value
VEVOR 9U Open Frame Server Rack, 23''-40'' Adjustable Depth, Free Standing or Wall Mount Network Server Rack, 4 Post AV Rack with Casters, Holds All Your Networking IT Equipment AV Gear Router Modem
  • Adjustable Depth: Depth adjustable from 23" to 40", this open frame server rack accommodates servers and network equipment while providing ample space for A/V gears and cable management. Enjoy easy access to ports and devices from multiple angles.
  • High Weight Capacity: Supports up to 300 lbs on the floor (200 lbs when adjusted to maximum depth) and 200 lbs when wall-mounted (depth cannot be adjusted in wall-mounted mode). Made from carbon steel for superior welding performance and durability, this open frame rack is designed to save space while accommodating multiple devices.
  • User-Friendly Design: Designed with your convenience in mind, this open frame server rack features an top shelf for extra storage and improved space utilization. The rolling casters let you move it effortlessly wherever you need it, making setup and movement a breeze.
  • Widely Applicable: Maximize your space with this adaptable open frame server rack, designed to make the most of every inch. Ideal for retail spots, classrooms, offices, and any area where space is at a premium, it delivers practical solutions for your storage needs.
  • Everything You Need: Our open-frame rack comes with fully equipped accessory kit for easy setup and secure installation: 2 x Trays, 4 x Casters, 1 x set of Screws, 16 x M6*12 Cage Nuts, 1 x Grounding Wire, 1 x Internal & External Hex Wrenches, and 1 x User Manual.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Failure modes and recovery

  • The first page takes a minute or more. This is the free-tier wake-up. It is not a crash. For anything students use, a paid always-on instance is the only fix that removes it.
  • Uploads disappear after a deploy. Any file written to the Render service’s local disk is gone. Move uploads to moodledata on the shared host, or to external storage, before going live.
  • The Render Postgres database has stopped working. After 30 days the free database expires. You have 14 days after expiry before deletion, and free Postgres has no backups. Export it before the expiry date, and do not treat it as your LMS database in the first place.
  • Moodle shows a blank page or an installation error. Check PHP version and extensions in PHP Selector, then memory_limit and max_input_vars. Check that the database version meets the minimum for your release.
  • Scheduled tasks never run. Grades, notifications, and cleanup depend on cron. If cron is not configured or the host restricts it, the site appears to work until those features stop.
  • Backups do not restore. Test a restore on a copy before you need one. Confirm that the database and moodledata are both included.
  • Performance drops as students join. Shared hosting is shared. Watch CPU, memory, and database limits during a real class, not a single test user.

Demo versus live course

The same architecture can serve very different purposes. Use this table to decide which version you are running.

Concern Demo or test class on free resources Live course with real students
Moodle location Shared hosting, as documented Shared hosting on a plan that matches the expected load, or another host you have verified
Render role Static frontend or stateless API only Stateless frontend and API on a paid service, if used at all
Database Shared-host database, with a tested backup Shared-host or other managed database with backups you have restored from
Uploads moodledata outside the public web root Same, plus a backup schedule for moodledata
Idle behaviour Accept the wake-up delay Avoid free spin-down for anything students use
Free-tier limits Acceptable for testing Not a basis for production

If a live course is the goal, the lowest-risk path is to run Moodle on a shared-hosting plan you have verified against the requirements above, and to keep any Render component out of the data path. Check current Render pricing before you plan for a paid instance, because the free tier does not carry over to paid service.

The hard way is a reasonable way to learn how Moodle and a separate frontend talk to each other. It is not a reasonable way to run a course that students depend on.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.