moodLearning Wiki

Run this command on screen every time you log in, so when you get cut off, you can just pick up from where you left off:screen -dR primecut

Following the processes and commands below should enable you to run a fully functioning Moodle installation on a minimally endowed Ubuntu machine.


fallocate -l 1G /swapfile1Gmkswap /swapfile1Gswapon /swapfile1Gswapon -s nano /etc/fstab to add the ff entry:/swapfile1G none swap sw 0 0

Apache, PHP, MySQL

sudo add-apt-repository ppa:ondrej/php7.3apt update && sudo apt upgradeapt install -y mysql-client mysql-server php7.3 libapache2-mod-php7.3 php7.3-mysql php7.3-mysqli graphviz aspell ghostscript clamav php7.3-pspell php7.3-curl php7.3-gd php7.3-intl php7.3-xml php7.3-xmlrpc php7.3-ldap php7.3-zip php7.3-soap php7.3-mbstring apache2


  • install mysql

apt install mysql

  • secure it and set the root password


Set your root password, remove anonymous users, disallow root's remote login, remove test database, reload privilege tables now.

  • set up the moodle database

mysql -u root -p[rootpasswordhere]

CREATE user 'moodleadmin'@'localhost' IDENTIFIED BY 'Secur3P@zzwd';


sudo chown www-data:www-data -R /var/www/html/moodlesudo chmod 775 -R /var/www/html/moodle sudo mkdir -p /var/moodledatasudo chmod 775 -R /var/moodledatasudo chown www-data:www-data -R /var/moodledata cd /var/www/html/moodle/sudo cp config-dist.php config.phpnano config.php Set up your config.php

$CFG->dbtype    = 'mysql';    
$CFG->dblibrary = 'native';     
$CFG->dbhost    = 'localhost';  // eg 'localhost' or '' or IP
$CFG->dbname    = 'moodle';     
$CFG->dbuser    = 'moodleadmin';   // your database username
$CFG->dbpass    = 'Secur3P@zzwd';   // your database password
$CFG->prefix    = 'mdl_';       // prefix to use for all table names

$CFG->wwwroot   = 'http://<domain name>';
$CFG->dataroot  = '/var/moodledata';

Vhost Setup

  • Create your vhost config file

cd  /etc/sites-available/

<VirtualHost *:80> 
DocumentRoot /var/www/html/moodle/ 
  <Directory /var/www/html/moodle/> 
  Options +FollowSymlinks 
  AllowOverride All 
  Require all granted 
ErrorLog ${APACHE_LOG_DIR}/error.log 
CustomLog ${APACHE_LOG_DIR}/access.log combined  

  • enable your vhost or site

sudo a2enmod rewritesudo a2ensite systemctl restart apache2 You may also have to disable the default vhost. Check the actual file. It could be sudo a2dissite 000-default.confsystemctl restart apache2

Moodle Setup

  • Set it up via


  • Fill out these fields:

Web address: [ your IP address or domain name ]
    Moodle directory: /var/www/html/moodle
    Data Directory: /var/moodledata

Click next. Get to database section and fill out these fields:

Database host: localhost
    Database name: moodle
    Database user: moodleadmin
    Database password: Secur3P@zzwd
    Tables prefix: mdl_

Get to the section where you have to set up the site administrator. Under General, you see

    New password: 
    First name: 


Backup/Moving to Another Machine

  • Files to backup

   [ db backup ]

  • To backup db

mysqldump -h localhost -u root --password=mypassword -C -Q -e --create-options moodle > moodle-database.sql

  • To restore db

mysql -u root -pmypassword moodle < moodle-database.sql


In case you don't have an email account that can be used to send out emails in bulk, you may also use the Moodle server itself as a send-only postfix mailer. sudo apt install mailutils If prompted for type of mail configuration, just choose Internet site. For the system mail name, it is important you key in your FQDN (fully qualified domain name), the one reflected on your rDNS, so something Once done, you may configure your postfix: nano /etc/postfix/ Replace the appropriate lines with these:inet_interfaces = loopback-onlyinet_protocols = ipv4mydestination = $myhostname, localhost.$mydomain, $mydomainsudo systemctl restart postfix Once done, you may test your mailer with this:echo “Just testing the send-only postfix”| mail -s “Testing 1 2 3”<yourdestinationemailhere> Note that the initial messages coming out of this server will be flagged as “spam”. If you want it to be “perfect”right from the get-go, you need to know more about TXT records, SPF, DKIM, Amavis. Otherwise, your mails will get better over time.

SSL Certificate

Every site needs encryption these days. So you may install an SSL Certificate on your site. This section requires that you have a proper rDNS entry on your machine and your DNSpoints to your machine's IP with an A/AAAA record. sudo apt install snapdsudo snap install –classic certbot sudo certbot –apache We recommend an autoredirect to the secure site. Once done, confirm by adding S to your address in the “http”. So something like httpS://