Skip to main content
Before deploying ipMoodle, ensure your system meets the following requirements.

System Requirements

ipMoodle is designed to run on Linux systems with Docker support. While it may work on other platforms, Linux is recommended for production deployments.

Hardware Requirements

1

Minimum Requirements

  • CPU: 2 cores
  • RAM: 4GB (8GB recommended for production)
  • Disk Space: 20GB minimum (for application and database storage)
2

Recommended for Production

  • CPU: 4+ cores
  • RAM: 8GB+
  • Disk Space: 50GB+ (depending on expected content volume)

Required Software

Docker

ipMoodle requires Docker to be installed on your system.
The deployment uses official Docker images:
  • PHP: php:8.2-fpm-alpine (custom built)
  • PostgreSQL: postgres:16-alpine
  • Nginx: nginx:alpine
Minimum Docker version: 20.10.0 or higher To check your Docker version:
docker --version

Docker Compose

Docker Compose is used to orchestrate the multi-container setup. Minimum Docker Compose version: 2.0.0 or higher To check your Docker Compose version:
docker compose version
Make sure you’re using docker compose (Compose V2) and not the older docker-compose command. The deployment script uses the modern syntax.

Network Requirements

Ports

The following ports must be available on your host system:
PortServicePurpose
80NginxHTTP web server
If you plan to enable HTTPS, port 443 will also need to be available.

Internet Access

During initial deployment, the system needs internet access to:
  • Download Docker images
  • Download Moodle 4.3 (Latest Stable) from official sources
  • Install PHP extensions and dependencies
The deployment script automatically downloads Moodle from:
https://download.moodle.org/download.php/direct/stable403/moodle-latest-403.tgz
This downloads Moodle version 4.3 (latest stable release).

PHP Extensions

The custom Docker image includes the following PHP extensions required by Moodle:
# Core PHP extensions
intl soap zip pgsql pdo_pgsql exif opcache bcmath sockets mbstring sodium

# GD library with support for
gd --with-freetype --with-jpeg

System Packages

The Alpine-based image includes these system dependencies:
  • git - Version control
  • ghostscript - PDF processing
  • dcron - Cron job execution
  • postgresql-dev - PostgreSQL client libraries
  • libsodium-dev, icu-dev, libpng-dev, libjpeg-turbo-dev, freetype-dev, libzip-dev, libxml2-dev, zlib-dev - Development libraries

User Permissions

The user running the deployment script needs:
  • Permission to execute docker commands
  • Write access to the installation directory (default: /opt/moodleip/)
The deployment script creates these directories:
  • ./html - Moodle application files
  • ./moodledata - Moodle data directory
  • ./db_data - PostgreSQL database files

Environment Variables

You need to set the SITE_URL environment variable before running the deployment:
export SITE_URL="https://your-domain.com"
The SITE_URL must be set before running deploy.sh. This is the only required pre-deployment configuration.

Pre-Installation Checklist

Before proceeding to installation, verify:
1

Docker is installed and running

docker info
2

Docker Compose is available

docker compose version
3

Port 80 is available

sudo netstat -tlnp | grep :80
This should return no results if the port is free.
4

You have sufficient disk space

df -h
5

SITE_URL is configured

echo $SITE_URL
Once all prerequisites are met, you can proceed to the Installation guide.

Build docs developers (and LLMs) love