
Deploy Moodle LMS on Your Own Server
Moodle(TM) is a very popular open source learning management solution (LMS) for the delivery of elearning courses and programs.
Want to deploy Moodle LMS on your server faster? Try Senate with one-command setup, automatic HTTPS and monitoring.
What is Moodle LMS?
Moodle Senate installation - From Bitnami Docker Image Note: You should start by configuring your DB first and then comeback with all the DB Information.
Self-Host Moodle LMS
Follow these steps to deploy on your own server.
Install Docker
Skip this step if Docker is already installed on your server.
curl -fsSL https://get.docker.com | sh
Configure
Customize the settings below. Defaults work for most cases.
General
Deploy
Copy the configuration and run it on your server.
services:
moodle:
image: bitnamilegacy/moodle:latest
environment:
ALLOW_EMPTY_PASSWORD: no
MOODLE_DATABASE_HOST: <service_name>
MOODLE_DATABASE_NAME: moodle
MOODLE_DATABASE_PASSWORD: ""
MOODLE_DATABASE_PORT_NUMBER: "3306"
MOODLE_DATABASE_TYPE: mariadb
MOODLE_DATABASE_USER: moodledbuser
MOODLE_EMAIL: user@example.com
MOODLE_PASSWORD: password
MOODLE_SITE_NAME: New site
MOODLE_SKIP_BOOTSTRAP: no
MOODLE_USERNAME: admin
PHP_MAX_EXECUTION_TIME: "30"
PHP_MAX_INPUT_TIME: "30"
PHP_MAX_INPUT_VARS: "6000"
PHP_MEMORY_LIMIT: 256M
PHP_POST_MAX_SIZE: 100M
PHP_UPLOAD_MAX_FILESIZE: 100M
volumes:
- moodle-moodle:/bitnami/moodle
- moodle-moodledata:/bitnami/moodledata
volumes:
moodle-moodle: {}
moodle-moodledata: {}
Then run:
docker compose up -d
Access
Once started, access your app at http://localhost:8080
Why Self-Host Moodle LMS?
Full Data Ownership
Your data stays on your servers. No third-party access.
No Monthly Fees
Pay only for your server. No per-seat or usage charges.
Complete Control
Customize, backup, and scale on your own terms.
Privacy & Compliance
Meet GDPR, HIPAA, or internal security requirements.
Technical Details
Docker Image
bitnamilegacy/moodle:${md_version}Want to go faster?
Try Senate! Senate handles Docker, HTTPS, updates, and monitoring for you. Deploy any of our 300+ apps with a single command.
Install on any Linux server:
sh -c "$(curl -sSL https://get.senate.sh)"