Video coming soon…

🎓 Setup Moodle — Self-Hosted Learning Management System

Deploy Moodle on Ubuntu with Docker — the world's most popular open-source LMS for creating online courses, quizzes, assignments, certificates, and educational communities with no per-user or per-course fees.

⚠️ This script is provided for demo and testing purposes only. Not intended for production use.

📦 Resources & Setup Scripts

Grab the automated bash script from GitHub to follow along with the video.

Automated install script — Moodle LMS running in one command.
View on GitHub

Quick Install:

wget https://raw.githubusercontent.com/mhmdali94/Docker/main/education/moodle/moodle-ubuntu.sh
chmod +x moodle-ubuntu.sh
sudo bash moodle-ubuntu.sh

Tutorial Steps

1 Download & Run the Script

The script installs Docker and starts Moodle with a MariaDB database. Moodle will be available on port 80. First startup runs the Moodle installer which takes 3-5 minutes to set up the database schema.

wget https://raw.githubusercontent.com/mhmdali94/Docker/main/education/moodle/moodle-ubuntu.sh
chmod +x moodle-ubuntu.sh
sudo bash moodle-ubuntu.sh

2 Access Moodle & Log In as Admin

Open your browser and navigate to Moodle. Log in with the default admin credentials set during installation. Go to Site Administration to configure site name, language, theme, and email settings before creating courses:

http://<your-server-ip>

3 Create Courses & Enroll Students

Go to Site Administration → Courses → Add New Course. Set the course name, category, and enrollment method (manual, self-enrollment with key, or cohort sync). Add course activities by clicking 'Turn editing on' in the course view. Enroll students from the course participants page or configure a self-enrollment key for students to join themselves.

4 Add Activities, Quizzes & Certificates

Inside a course, click Add an activity → Quiz to create auto-graded assessments. Add Assignment activities for file submissions. Install the Custom Certificate plugin from the Moodle plugin directory to issue PDF certificates to students who complete the course. Configure course completion criteria in Course Settings → Completion tracking.

Ports Used

PortPurpose
80Moodle Web UI (HTTP)
443Moodle Web UI (HTTPS)
3306MariaDB database (internal)

Overview

Moodle (Modular Object-Oriented Dynamic Learning Environment) is the world's most widely used open-source Learning Management System, trusted by 350+ million users across 230+ countries. It powers online education for universities (MIT, Harvard, UK Open University), corporate training departments, vocational schools, and independent course creators. Moodle provides a complete e-learning toolkit: create and deliver courses, assess students with quizzes and assignments, track progress, issue certificates, and build learning communities — all hosted on your own server with complete data ownership.

Why Use It

Moodle eliminates per-user and per-course fees charged by commercial LMS platforms like Teachable, Thinkific, or Kajabi — which can reach hundreds of dollars monthly for growing course catalogs. Self-hosting gives you unlimited courses, unlimited students, and full control over course data. Moodle's 1700+ plugin directory covers integrations for BigBlueButton video classes, Zoom, H5P interactive content, SCORM packages, plagiarism detection, and payment gateways for monetizing courses.

When You Need It

    Who Should Use It

      Real Use Cases

        Main Features

          How to Use After Installation

            Security Best Practices

              Ports and Firewall Notes

              Open port 80 (HTTP) and 443 (HTTPS) for the Moodle web interface. In production, use a reverse proxy (Nginx Proxy Manager or Caddy) for HTTPS and redirect all HTTP to HTTPS. Port 3306 (MariaDB) must stay internal — never expose the database port. If using BigBlueButton, additional ports (16384-32768 UDP) are required for the media server.

              Backup and Maintenance

                Common Mistakes

                  Troubleshooting

                    Alternatives

                    Canvas LMS is the most polished open-source alternative, widely used in US universities — self-hosting is complex. Open edX is used by Coursera-scale MOOCs but is very complex to operate. Chamilo and ILIAS are lighter LMS options for smaller institutions. Teachable, Thinkific, and Kajabi are hosted commercial alternatives. Moodle is the best choice for organizations that need a mature, full-featured LMS with a massive plugin ecosystem and no licensing costs.

                    When Not to Use It

                    Avoid Moodle if you only need to host a few simple video courses — Ghost, WordPress, or even YouTube playlists are simpler. Moodle's interface is dated and can overwhelm new users; if your team expects a modern Udemy-like experience, consider Tutor LMS for WordPress or Open edX. For quick corporate training without LMS complexity, consider simpler tools like Notion or Confluence for documentation-style training.

                    PrismaTechWork Professional Help

                    PrismaTechWork provides end-to-end infrastructure services — from initial deployment and security hardening to ongoing monitoring, automated backups, and dedicated support. Whether you need a single-server setup or a multi-site network, our team ensures your infrastructure is built right, secured properly, and maintained reliably.

                      Contact Us

                      Frequently Asked Questions

                      What is Moodle and who uses it?

                      Moodle is the world's most widely used open-source Learning Management System (LMS), powering online learning for 350+ million users across 230+ countries. It's used by universities, schools, corporate training departments, and online education providers. Moodle allows you to create courses with video lessons, quizzes, assignments, forums, wikis, certificates, and badges — all hosted on your own server with no per-user or per-course fees.

                      What types of content and activities can I add to Moodle courses?

                      Moodle supports a rich set of course activities: Quiz (multiple choice, true/false, matching, essay questions with auto-grading), Assignment (file submission, online text), Forum (threaded discussion), SCORM packages, H5P interactive content (videos with questions, drag-and-drop), Lesson (adaptive content paths), Workshop (peer review), Database (collaborative data collection), and Wiki (collaborative editing).

                      Can Moodle integrate with video conferencing tools?

                      Yes. Moodle integrates with BigBlueButton (recommended for self-hosted, open-source video conferencing), Zoom, Microsoft Teams, and Google Meet via plugins. The BigBlueButton plugin lets teachers start live classes directly from within a Moodle course, with automatic recording and attendance tracking. Jitsi Meet can also be integrated for lightweight video sessions.

                      Does Moodle support mobile access?

                      Yes. Moodle has official native apps for iOS and Android (Moodle Mobile). Students can download course materials for offline access, submit assignments, participate in forums, and take quizzes from the app. Push notifications alert students of new grades, forum replies, and course announcements. The app connects to any Moodle instance by entering your server URL.

                      How do I issue certificates to course completers in Moodle?

                      Install the Certificate plugin (or Custom Certificate plugin) from the Moodle plugin directory. Configure the certificate as a course activity and set completion criteria (e.g., must pass all quizzes, complete all lessons). When students meet the criteria, a downloadable PDF certificate is automatically generated with their name, course title, completion date, and any custom logo or text.

                      What are the server requirements for Moodle?

                      Moodle requires PHP 8.1+, a MySQL/MariaDB or PostgreSQL database, and a web server (Apache or Nginx). For small deployments (under 100 users), 2 vCPUs and 2 GB RAM is sufficient. For larger deployments (500+ concurrent users), 4+ vCPUs and 8+ GB RAM with a dedicated database server is recommended. The Docker deployment handles all these dependencies automatically.

                      Can I import SCORM courses and H5P content into Moodle?

                      Yes. Moodle supports SCORM 1.2 and SCORM 2004 packages — the standard e-learning format produced by Articulate Storyline, Adobe Captivate, and iSpring. Upload the SCORM .zip file as a course activity. H5P (HTML5 Package) is natively supported for interactive content creation including branching scenarios, interactive videos, flashcards, and drag-and-drop exercises without any coding.

                      How do I migrate from Udemy or Teachable to a self-hosted Moodle?

                      There's no direct one-click import from Udemy or Teachable. You need to re-upload your video content, recreate your quiz questions, and re-enroll students. For large migrations, use Moodle's bulk user enrollment (CSV upload) and the course backup/restore feature. The advantage of switching is full ownership of course data and no revenue sharing.