Welcome to ipMoodle
ipMoodle is a production-ready Docker deployment solution for Moodle LMS. It provides a complete, optimized stack with PostgreSQL database, Nginx web server, and automated maintenance tasks — all orchestrated with Docker Compose.Quickstart
Get Moodle running in minutes with our one-command deployment
Architecture
Understand the multi-container architecture and service design
Configuration
Customize environment variables, PHP settings, and Nginx configuration
Operations
Learn how to maintain, backup, and monitor your Moodle instance
Key Features
One-Command Deployment
Run
deploy.sh to automatically build images, configure services, and download Moodle 4.3Optimized PHP Runtime
PHP 8.2-FPM Alpine image with all required extensions: GD, Intl, SOAP, ZIP, PostgreSQL, Sodium, and more
PostgreSQL 16
Modern, reliable database with Alpine-based image for minimal footprint
Nginx FastCGI
High-performance web server configured for Moodle’s slash arguments and large file uploads (512MB)
Automated Cron Jobs
Dedicated cron container executes Moodle maintenance tasks every minute
Persistent Storage
Docker volumes for Moodle code, user uploads (moodledata), and database files
Architecture Overview
ipMoodle uses a four-container architecture:All containers communicate over a dedicated
moodle-net bridge network for isolation and security.Service Breakdown
- web (nginx:alpine) - Listens on port 80, serves static files, proxies PHP requests to app container
- app (custom PHP 8.2-FPM) - Executes Moodle PHP code, connects to database
- db (postgres:16-alpine) - Stores Moodle data with persistent volume
- cron (custom PHP 8.2-FPM) - Runs scheduled tasks every minute for Moodle maintenance
What’s Included
Automated Deployment Script
deploy.sh handles environment setup, Docker builds, service startup, and Moodle downloadCustom Docker Image
Optimized PHP 8.2-FPM with extensions:
intl, soap, zip, pgsql, pdo_pgsql, exif, opcache, bcmath, sockets, mbstring, sodium, and gdPHP Configuration
Pre-tuned for Moodle with 512MB memory limit, 512MB upload size, and 600s execution time
Environment Variables
The deployment is configured through four core environment variables:| Variable | Description | Default |
|---|---|---|
SITE_URL | Public URL where Moodle will be accessible | (required) |
DB_NAME | PostgreSQL database name | moodle |
DB_USER | PostgreSQL username | moodle |
DB_PASS | PostgreSQL password | moodle |
Quick Example
Get started in three simple steps:The deployment script downloads Moodle 4.3 (Latest Stable) automatically if the
./html directory is empty.Next Steps
Start the Quickstart
Deploy your first Moodle instance in under 5 minutes
Explore Configuration
Learn how to customize PHP settings, database credentials, and more
Understand the Stack
Deep dive into each service and how they work together
Production Deployment
Configure SSL/HTTPS and security hardening for production use