1.4 Use the Moodle Installer to Complete Installation

In our previous article, we used the Hestia File Manager to install Moodle into our root public_html folder and to install the moodle data folder into the Hestia private folder. In this article, we will use the Moodle installer to complete the installation process.

Step 1 Open a New Web Browser and enter your Domain Name

We will still be using our Hestia Control Panel. So we need to keep a separate web browser open to keep us logged into our Hestia User account. But we also need a browser where we can clear the browser cache. So we will open a new browser and clear the cache. Then type in our domain name. The first Moodle Installation screen is called Language. Use the drop down to change the language to English US.


Then click Next.

Step 2 Set the correct path for the Moodle Data Folder
The next screen is called Confirm Paths. Change the Moodle Data path to add the private folder to the path:


Then click Next.

Step 3: Change the Database Driver to Maria DB
The next screen is Choose Database driver. The default is mysqli. Use the drop down to change this to MariaDB.


Then click Next.

Step 4: Enter your Database Name, User Name and Password
The next screen is to set Database Connection information.


Replace the database name moodle with the actual database name. Then type your Hestia created database username and password. Note that the password has a capital letter. Then click Next. The next screen is the Copyright screen. Click Continue.

Step 5: Fix the Errors on the Server Check screen
The Server check screen has one error at the top of the screen:


Error 1: The XMLRPC extension is not installed

Scroll down the page to see two more errors:


Error 2: The current setup of MySQL or MariaDB is using 'utf8'. This character set does not support four byte characters which include some emoji. Trying to use these characters will result in an error when updating a record, and any information being sent to the database will be lost. Change your settings to 'utf8mb4'.

Error 3: PHP setting max_input_vars is recommended to be at least 5000.

Fix Errors 1 and 3 (which are both php errors)
Sadly, the command given by the Moodle documentation is wrong. We need to add the php version. So the correct command is

apt-get install php7.4-xmlrpc

XMLRPC is a program that allows remote updates to Moodle. It is disabled by default because in the past it was a security risk. Note that php-xmlrpc typically can not be used on a shared hosting account. You need to have either a real server or a virtual private server (vps). To install this program, open the terminal on your home computer and start an SSH session. then copy paste this command:

apt-get install php7.4-xmlrpc

Next we need to change the php.ini file. We can not change this file in Hestia File Manager. The change seems to be done. But reopen the file and it was not done. We therefore need to use an SSH session and change the file with Midnight Commander. Go to the root folder. Then open the etc folder. Then the php folder. Then open the 7.4 folder. Then php-fpm folder then php.ini. Press Alt plus c to show the page numbers. Then scroll down to line 405 and delete the semi-colon. Then change

max_input_vars = 1000 to max_input_vars = 5000

Then scroll down to line 948 and delete the semi-colon in front of extension=xmlrpc.

Then click Save. Once it is installed we need to enable it. Go to your Hestia User Panel and click Exit to Control Panel. Then click Log out. Then log into the Hestia Admin panel and click Settings. Then scroll down to php-fpm which is the backend server and select it. Then click Restart.

Check that PHP-XMLRPC is working
To check if php-xmlrpc is enabled, in the Hestia User Panel File Manager, public_html folder, click New and add a new file called info.php Then open the file to edit it. Copy and paste:


echo 'XMLRPC is ', extension_loaded('xmlrpc') ? 'loaded' : 'not loaded';


Then open a browser and type your domain name followed by a forward slash and then info.php:


You should see “XMLRPC is loaded” which confirms that XMLRPC is installed and enabled. Then go back to the installation browser and refresh the page. There is now only one error left:


Challenges in Fixing the Final Installation Check Error
The yellow text claims that the current setup of MySQL or MariaDB is using 'utf8'. This character set does not support four byte characters which include some emoji. Trying to use these characters will result in an error when updating a record, and any information being sent to the database will be lost. The yellow text claims that we need to change our database character settings to 'utf8mb4'. However, log into your moodle database and it showed that it is set for utfmb4:


Log out of database.

Use the MySQL collation conversion tool.
This tool is a command line script that helps to add the proper settings to our database. The script strongly recommends we stop the web server before the conversion. So go to the Hestia Admin Panel, settings and turn off Apache, Nginx and PHP-FPM. Then start an SSH session. The Moodle installation instructions recommended using this command to fix the problem:

php admin/cli/mysql_collation.php –collation=utf8mb4_unicode_ci

However, the path is wrong. The word admin refers to the moodle admin folder. So we need to add the full path to the moodle admin folder which is in our public_html. Here is the correct command with the correct path to copy and paste into our terminal after starting the SSH session:

php /home/course0/web/localdevtest.com/public_html/admin/cli/mysql_collation.php --collation=utf8mb4_unicode_ci

returned: Converting database to 'utf8mb4_unicode_ci' for https://localdevtest.com: DATABASE CONVERTED

Converting tables and columns to 'utf8mb4_unicode_ci' for https://localdevtest.com: Converted: 0, skipped: 0, errors: 0

Now go back to the Hestia Admin panel and click Settings and start the servers again and also restart the database. Then open the installation browser tab again, clear the cache and reload the installation page. The error is still there. However, because we have the correct character set, we will ignore the final error and continue the installation. Click Continue. This error screen may appear:


To clear this error, restart the server from your Hestia Admin Panel. This brings up the next Installation screen.

Step 6: Plugins Check

Next is the Plugins check page


Scroll to the bottom and click Upgrade Moodle database now. Wait a few minutes for the update to finish. Then click Continue.

Step 7: Add the Primary Administrator Details

The next screen has the Primary Administrator details.


Make sure you give it a secure username and password as well as a valid email address. You can create more admin accounts later on. For username, only lower case letters are allowed. Change the username to something other than admin.

Then scroll down the page to fill out these boxes:


Then fill out these boxes:


Then click Update Profile.

Step 8 Add the Website Details
The next screen adds the website details.


Then fill out the location:


Then click Save Changes.

Step 9 View your new Moodle Website!


Click on the Dashboard to see the back end of your site. Then click on Site Home to see the front end of your Moodle site.


To log out, click on the down arrow near your name. Here is the Home page after logging out:


 Congratulations. You have installed a Moodle Website on a Hestia VPS.

Final Configuration Tasks
There are several tasks you will want to configure before going live. Some are listed below.

Add Moodle Cron Jobs
Moodle requires periodic updates to several functions. Moodle's background tasks (e.g. sending out forum emails and performing course backups) are performed by a script which you can set to run at periodic intervals. This is known as a cron job. Do not skip setting up the cron process on your server for your Moodle. Your site will not work properly without it! Thankfully, Hestia makes it easy to add Cron Jobs. For more information on setting Cron jobs with Hestia, see this article:


Note that the command for the Moodle cron job in Hestia is slightly different than the command shown in the Moodle Cron Job documentation. Specifically, you need to use php7.4 rather than just php. Thus, the command is

/usr/bin/php7.4 /path/to/moodle/admin/cli/cron.php

Note that there is an empty space after 7.4 and before the forward slash in front of the word path. In the future, the php version may change. To see the PHP version used by your installation of Hestia CP, log into the admin panel and click on Files. Then go to the /usr/bin folder and scroll down to php:


Note that the php7.4 file size is much bigger than the php file size. This is your clue that you need to use the php7.4 file and not just the php file in the Moodle cron command.

To make the actual Moodle cron job, log out of the Hestia admin panel and into your Hestia user panel. In the Hestia User Panel, click Cron. There are no current Cron Jobs for this user. Click Add Job. Copy paste the command into the top box.

/usr/bin/php7.4 /home/course0/web/collegeintheclouds.com/public_html/admin/cli/cron.php

Then use the drop down arrow to select every 10 minutes. Then click the Generate button to generate the proper time code.

cron 10m

Then click Save and Back.

cron2 10m

Then wait one hour and log into your Hestia User email account. If you see one or more emails with the Moodle Cron Job command ending with "Cron script completed correctly", you know that you have properly set up your Moodle Cron and that the command is working.

Stop Moodle Cron Jobs from Sending your emails every 30 minutes
Now that we know the command is working, we need to change the command so that the Moodle cron job does not fill up our email in box. Go back to your Hestia User panel and click Cron Jobs. Then select the Moodle cron job to edit it. Change the command to add an empty space at the end and then copy paste >/dev/null

Here is my command with the full path:

/usr/bin/php7.4 /home/course0/web/collegeintheclouds.com/public_html/admin/cli/cron.php >/dev/null

Then click Save and Back. Adding >/dev/null should stop you getting an email every time the Moodle cron job runs (every 30 minutes). To check this, open your email account and verify that the Moodle cron job emails have been stopped.

Check to make your sure your Moodle Email System works
Both Hestia and Moodle have steps that need to be taken to set up an email system. For the Hestia process, see this page:


For the Moodle process, log into your Moodle site and send a test email. Click Site administrator, Server, Outgoing mail configuration. Scroll down to “Test outgoing mail configuration” and click on the blue text.


Enter your email address and click Send a test message. Then log into your protonmail account and see if you got the test message.


If you did not receive an email copy of the message, check the settings in Settings > Site administration > Plugins > Message outputs > Email. Don't skip this step as Moodle uses email to recover lost passwords.

Increase the Maximum Moodle Upload Size
We need to increase the maximum file size upload limit in order to install some later extensions. To see the current limit, go to Site Administrator > Security -> Site Policies now known as Site Security Settings. Scroll down to "Maximum Uploaded File Size". The default maximum is 2 MB. Teachers may also set the maximum file size by the course administration block.

To increase the Maximum Upload File Size, you need to change your php.ini file. Go to Moodle Site administration > Server > PHP Info and look a few lines down you will find the php.ini location that your Moodle PHP installation is using.


Then open an SSH session and start Midnight Commander.

ssh This email address is being protected from spambots. You need JavaScript enabled to view it.

Open the /etc/php/7.4/fpm folder and open the php.ini file. Press Alt plus c to display the line numbers. Then use the down arrow to scroll down to the Data Handling section, line 694

Change pos_max_size = from 8 MB to 128MB.

Then scroll down to the File Upload section, line 846 and change upload_max_filesize = from 2 MB to 64MB.

Then save and close the file. Then click File Exit to exit Midnight Commander and type exit to exit the SSH session. Then go to Hestia Admin Panel, settings and restart the back end web server called php7.4-fpm for these changes to take effect.

Then in your Moodle Admin area, reload the phpinfo.php page and scroll down to confirm that the Upload Max File Size has been increased to 64 MB. This will also be updated in the other Moodle admin screens.

Turn off Guest Login.
By default, Moodle allows the public to log into your Moodle website and look at your courses. If this is OK with you, then leave guest log in enabled. However, if you do not want to allow guest log in, then go to Site administration and click the plugins tab. Then click authentication/ manage authentication. Then scroll down to Guest login button and change the setting from Show to Hide. Then click Save Changes.

Temporarily turn off Moodle and Hestia Backups
Both Hestia and Moodle have programs to back up your Moodle website. For the Hestia process, see this page: https://createyourownvps.com/final-steps/8-firewalls-backups-and-appearance/8-2-use-hestia-to-set-up-a-vps-backup-system

For the Moodle process, see these pages:

 Site backup and Automated course backup.

Note that you should avoid setting up your Moodle and Hestia backups until after configuring your course structure in order to avoid overwhelming your moodledata folder. To turn off Hestia backups, log in to the Hestia admin page and click on users. Then copy the default package and change the number of backups for the default-copy package from 1 to 0. Then assign the admin user and the new moodle user to the default-copy package.

How to Solve Installation Problems
If you run into problems installing Moodle, you are not alone. The first place to ask questions is at the Moodle Installation forum.


There are 189 pages of questions on how to install Moodle. Each page has 100 questions. So nearly 19,000 people have asked questions just about the Moodle Installation process. Read the most recent 10 pages as it is likely that others have already had the same problem you are having.

When you ask a question on the Moodle forum, always list your software versions including what version of Moodle you are installing. Then explain what you did, what happened and what error messages you saw. Also explain any steps you took to try to fix the problem before posting your question on their forum.

You can also ask a question on the Hestia forum. However, be aware that most Hestia administrators have not used Moodle and thus may be unable to answer your Moodle installation questions.

What’s Next?

This is just the beginning. In the next chapter, we will review how to set up the initial Courses and Users structure of your Moodle website.

1.3 How to Install Moodle on a Hestia VPS

Moodle has many functions that will not work well on a normal Shared Hosting account. But Moodle will work well on a Virtual Private Server (VPS) provided the VPS has at least 4 GB of RAM. Hestia is rapidly becoming the world’s most advanced free open source VPS control panel. In this article, we will review how to install Moodle on a Hestia VPS.


VPS Assumptions
We assume that you have already gotten a VPS hosting account with at least 4 GB of RAM - and that you or your VPS host have installed a Debian server on the VPS and then installed Hestia CP on your Debian server. If you would like to learn more about this process, visit our separate course and website which goes into great detail about how to install and use Hestia CP on a Debian VPS: https://createyourownvps.com/

As we explained in our prior course, we also assume that you obtained a domain name from your VPS host and that you are using your VPS host as a DNS Manager to properly connect your domain name and website to the Internet. In this article, we will use the domain name localdevtest.com which is hosted on CanHost.ca. Hestia is set up on our VPS server called ns1.localdevtest.com which is managed by the CanHost DNS Manager.

Step 1: Change DNS settings for your domain name to point to your VPS IP address and Hestia Server

If your domain name is hosted on Canhost, they provide a DNS record for it. But this DNS record points to the Canhost IP address rather than our VPS IP address. To change this, log into your Canhost account. Then click on My DNS in the left side menu. Then click on the Edit button to edit the DNS Zone for your domain name. There are 10 records. But only the first four need to be changed:


You need to use your cursor to delete the four Canhost IP addresses. Then you can copy paste your VPS IP address into the boxes. Then click Save Changes.

To get a free Lets Encrypt SSL certificate for your website, you also need to create two CAA records. Click Add Record and choose CAA for the Type. Type in your domain name (example mysite.com) for the Name. Type 0 for the Flag. Type issue for the Tag. Type letsencrypt.org for the Target. Then click Add Record. Then repeat to add a second CAA record using issuewild instead of issue for the Tag. Then click Save Changes.

Step 2 Create a New Hestia User
Log into your Hestia Admin Control Panel and create a new Hestia user. In our example, the new user is called course0.


Add a secure password. Then click Save and Back. Then log out of the Hestia Admin Panel and log into the course 0 Hestia User Panel.


Step 3 Add a New Web Domain
Click Add Web Domain. Then type in the domain name of your website and the IP address of your VPS. Also click Create DNS Zone and click Enable mail for this domain in order to set up custom email addresses such as This email address is being protected from spambots. You need JavaScript enabled to view it..


Then click Save and Back.


Select the domain name and click on the pencil to edit the domain name. Check Enable SSL and Use Let’s Encrypt.


Then click on Back and click on the Up arrow to visit the website:


The default website has https and a lock. Close the default website.

Step 4 Use Hestia to Create a Database
The website has 16 DNS records and an email domain. But it does not yet have a database.


Since Moodle needs, a database, click on DB. Then click Add Database. In our example, we will call it db1 with the full Database name being course 0_db1.

Also click on Database Advanced Options and change the Charset to utf8mb4.


Step 4 Create a Custom Moodle Back end Template

By default, Hestia uses a special version of Apache server called PHP-FPM to display websites. Each website is assigned a front end template and a back end template by Hestia. These templates can be changed in the Hestia User website edit Advanced settings. There is no need to create a special back end template when creating a Joomla website. However, Moodle has some bad coding that may create a conflict with Line 20 of the Hestia PHP-FPM back end template during installation.

We could just change Line 20 in the default PHP-FPM back end template. However, any changes we make might be overwritten during a Hestia Update. Therefore, we should first create a Custom Moodle Backend Template and then change our website Advanced settings to use the custom Moodle PHP-FPM template rather than the default template.

Editing certain files may not be possible with the Hestia file manager. We are therefore better off starting an SSH session. First, change the prompt to the Hestia PHP-FPM template folder by copy pasting this command.

cd /usr/local/hestia/data/templates/web/php-fpm

There are four templates in this folder. To see them, type


The default template is called default.tpl. To create a copy of this template, copy paste this into the terminal:

cp default.tpl moodle-default.tpl

Then to edit the new moodle template, copy paste:

nano moodle-default.tpl

Use the down arrow to go down to Line 20 and add a forward slash and colon /: to change the beginning of Line 20 from:

php_admin_value[open_basedir] = /home/%user%/web/%domain%/public_html


php_admin_value[open_basedir] = /:/home/%user%/web/%domain%/public_html

Be careful to leave the rest of Line 20 unchanged. The save and close the new moodle template file. Then type exit to close the SSH session and go to your Hestia User account. Open your moodle domain and click Advanced. Then use the drop down arrow to change the Backend Template from Default to Moodle-Default:


Click Save and Back. Then log out of your Hestia User account and into your Hestia Admin account. Click Settings. Then restart php7.4-fpm.

Important Note on why we need to create a custom Moodle Back End Template
In adding the root folder / to the list of permitted open_basedir folders, we have just created a security problem in that a user may be able to access files which they should not be permitted to access. We are basically defeating the purpose of the open_basedir function - which is to limit user access to only a certain list of files. However, if we do not take this step, the following error may appear during the Moodle Installation process:

Warning: is_readable(): open_basedir restriction in effect. File(/db/renamedclasses.php) is not within the allowed path(s)

This warning is misleading because there is no folder named db and no file named renamedclasses.php. However this folder and file have been called during the installation to rename classes that have not existed in Moodle for many years. The default Hestia back end template line 20 properly recognizes this error and refuses to allow access to this file that actually does not exist.

The best solution to this problem is to temporarily allow Moodle access to all files during the installation process. Sadly, this change of adding / to open_basedir can not be made by a Hestia User. It can only be made by a Hestia administrator. This is because Hestia does not trust users who may inadvertently not only bring down their own Hestia account, but also the entire Hestia VPS. In addition, Hestia users are not allowed to restart PHP-FPM. This also can only be done by a Hestia administrator. However, this only needs to be done one time after creating the Moodle back end template so it will appear as an option for all Hestia users.

What users can do is change the assignment of their website back end template from the default template to any other template set up by the Hestia administrator. Therefore, if you are the administrator of a VPS with a user who wants to install Moodle, you need to advise them to switch from the default back end template to the Moodle back end template before attempting to install Moodle. Also advise them to switch back to the default template once the installation is completed.

They should also be aware that this Moodle warning may reappear during a Moodle Update or when installing some Moodle Plugins. Should the error occur in the future, they should switch back to the Moodle back end template, complete the update, and then switch back to the default template. This is only one of many challenges of installing and running a Moodle website.

Sadly, Moodle has suffered from this security problem for many years. This issue was described in this moodle link:


and these moodle forum posts from 2013 and 2015:



See also 2016 to 2018 moodle efforts to solve this problem:


Also see this moodle tracker file explaining that the file in question was removed in moodle version 3.10 which is why the file can no longer be found:


However, this problem still exists in Moodle 4.0:


The plan is to remove this bad code along with 7 other sections of bad code by Moodle version 4.4


This Moodle security fix may occur sometime in the next year or two. Or it may not. The real problem is that Moodle is an extremely complex application with extremely complex code. All of the features provided by Moodle make it a coders nightmare.

The settings in the Hestia Control Panel are intended to promote a maximum level of security. This security is triggered when it runs into bad code. This is why leaders on the Moodle forum advocate turning off open_basedir restrictions permanently. In response, many Control Panels, such as Cpanel, have a button to turn off open_basedir. Hestia does not have this button.

My own experience, based on nearly 30 years of helping people set up educational and business websites, is that we are living in a Hacker Heaven. Your VPS and or Moodle website will likely be attacked within minutes of going online. Any security hole in your VPS or Moodle website will eventually be exploited by hackers. It is extremely painful to see a website you have spent years building be destroyed by hackers in a matter of minutes. This is why I advocate for only using the Moodle template when there is no other option - and then switching back to the default Hestia back end template when the installation or update is completed. Thankfully, Hestia makes the process of switch templates very easy.

Step 6 Use the Hestia File Manager to Add Moodle
Go to the Moodle downloads page to download the latest version of Moodle. https://download.moodle.org/releases/latest/

Download the Weekly build zip file. 74 MB. Then go back to Hestia and click on Files, web, your-domain-name, public_html.


Click Add Files to add the moodle zipped file.


Click on the 3 dots to the right of the moodle zipped file and click Unzip. This will create a folder called moodle with the moodle files and folders in it. To move these files and folders to the root public_html folder, open the moodle file. Then click at the box on the top to select all files and folders. This will bring up a hidden option called Move.


Then click Move. This will bring up the Select Folder screen. Click on the plus sign to the left of web. Then the plus sign for your domain name. Then click on public_html (not the plus sign). This will move all of the files. Go back to the public_html folder:


Now that we have our files in the root folder, scroll down and click on the three dots to the right of the moodle folder and delete it. Then scroll down and click on the three dots to the right of the moodle-latest zip file. Then click Delete. Then click on the three dots to the right of the index.html file to rename it old-index.html.


Step 7 Use the Hestia File Manager to Create a Moodle Data Folder
Moodle needs to have a special folder called the moodledata folder. For security reasons, this folder cannot be in the public-html folder but instead needs to be in a private folder located in the domain-name folder. Hestia has already created the private folder. Here we will create a moodledata folder in the Hestia private folder. Still in the Hestia File Manager, click on the domain name folder and click on the private folder. Then click New to create a folder called moodledata.


Here it is.


What’s Next?
We will continue to leave the Hestia User Account open in one browser (where we will not clear the cache – which would log us out of Hestia). Then in the next article, we will open a new browser, clear the cache and use the Moodle Installer together with our Hestia Control Panel browser, to complete several additional installation steps.

1.2 A Tour of the Moodle Back End

In this article, we will first take a look at the structure of a Moodle Demo website with content. We will then look at a Moodle Demo website without content to see how it will first appear when you install Moodle.

Moodle Demo Website with Content
Here is a link to log into the Moodle Demo site with content: https://school.moodledemo.net/login/index.php


For username, type the role manager. For password, type moodle. Then click Log in. The log in takes you to the Dashboard for the Manager. If you were a student, you would see the courses you were enrolled in here. The theme being used to control the appearance is called Boost which is the default Moodle theme. We will later learn how to supplement Boost with a theme called Fordson which is a child theme of the Boost theme.


The Moodle left side menu is in the Boost theme is called the Navigational Drawer or Nav Drawer. In other Moodle documentation it is called the Nav Bar. We will refer to it by its descriptive name of the left side menu. Click on the hamburger menu in the upper left corner to hide the side menu. This will give your Dashboard more room. Then click on the Hamburger menu again to make it reappear. Click on Site Home to see the Home page.


The Site Administrator can choose to have either the Site Home page or the Dashboard appear when a student logs in. Click on Calendar to see the Calendar


Click on Content Bank to see that there is no content. You can click on Add or Upload to add content. Click on Add. There are about 40 types of content that you can add. Click on My Courses and there will not be any courses this manager is enrolled in. Click on Parent and Citizen Council to see more content plus an expanded left side menu.


Click on Site Administration to be taken to a very complex page:


On the Site Administration tab, you can manage or change the settings for Content Types, Languages, Appearance and the Front Page. Click on the Users tab:


Here you can define roles or add a new user. Click Define roles. Here you will see a table of 12 different roles.


You can add a new role by clicking on Add Role at the bottom of the table. You can also delete a role by clicking on the trash icon next to the role. Go back to Site administration and click on Courses.


Here you can add a new category or add a new course. Click Manage courses and categories. This Moodle Demo website has seven categories of courses.


To add a new course to a given category, click on the category. Then click Create a New Course. All courses must be in a category. Go back to Site Administration and click Grades.


Next click Plugins. This Moodle Demo site is not using any plugins. Last, click Reports.


There are 10 kinds of reports. Next click on the hidden Moodle menu in the upper right corner:


Then click on the Profile link.


Click on the Settings wheel to see more actions:


Then click on Grades:


Click on Messages to see messages sent to and from the manager. Then click on Preferences.


Click Event Monitoring where you can subscribe to any of several courses. In the left side menu, click Add a Block:


Click HTML. This will add a new box called HTML to the Manager profile page. Click on it to add a Title and some text. Then click Save.

This completes our tour of the Demo with Content. Now let’s take a brief look at the Demo without content. Here is a link to log into the Moodle Demo website with no content:


Type admin for the username and sandbox for the password.


This log in goes to the Home page rather than to the Dashboard. Click on the Dashboard menu item


The dashboard has lots of information. Click on Site Administrator:


There are three additional tabs called Appearance, Server and Development. Click on the Appearance tab:


This is where you can change logos, course colors, navigation and themes. Click on the Server tab:


This is where you can set tasks and email. Click Development.


Click Make Test Course to see a screen where you can create a course with several sections, activities and files.

What’s Next?
This completes our tour of Moodle. In the next article, we will review how to create a Moodle website with the Hestia Control Panel.

1.1 Why Use Hestia to Create Your Moodle Website

Moodle is the world’s most popular free open source Learning Management System (LMS). There are currently nearly 200,000 Moodle websites offering 36 million Moodle courses to more than one billion Moodle students. In this course, you will learn a new, easier and dramatically less expensive way to create and manage a Moodle website using the free Hestia Control Panel combined with a secure CanHost Virtual Private Server (VPS).


Why you should use Hestia and CanHost VPS to create your own Moodle Website

Historically, the most difficult obstacle to setting up a fully functioning Moodle website has been the difficulty of installing Moodle on a server. While there are one click installers for Moodle, one click installers are intended for cheap but insecure Shared Hosting websites. Teachers quickly discover that Moodle does not work well on a Shared Hosting account. So what are the other options?

Some teachers try Canvas and/or Google Classroom. But both have huge annual hidden per user fees and both subject your students to data mining. And both have per user fees that mean you pay more as your courses grow.

For example, if you offer six two month courses per year and each course has 20 students, then 120 students with the Google Education Plus fee of $50 per student will cost $6000 per year. The Canvas fee is even higher as Canvas also has a hidden Set Up fee. Both Canvas and Google also limit branding and customization.


The cost of a typical “outsourced” Moodle website is not much lower. The average set up fee for a Moodle Partner is $5,000. Branding and customization fees can be more than $10,000. Finally, annual per user server fees are about $60 per student – times 100 students gets it up to another $6,000 per year. Some Moodle Partners have been known to charge over $25,000 for set up, customization, training and ongoing tech support.

Even then, you still may not have a secure Moodle website. Visit the Moodle.com Partners page and you will see that there are only five official Moodle Partners in the US. Visit each of their websites and right click on the Home page. You will see that one is using Wix, another is using Square Space, another is using an outdated and insecure version of Bootstrap (3.3) and the two remaining official Moodle Partners are using extremely insecure versions of Wordpress! In short, none of the official Moodle Partners know how to build a secure website for themselves. So it is unlikely any of them will know how to build a secure Moodle website for you!

To make matters worse, two of the five openly state that they will host your Moodle website on the Amazon cloud. Please take a few minutes to read this article I wrote summarizing the security problems of using the Amazon cloud: https://createyourownvps.com/final-steps/9-migrate-from-cpanel-to-hestia-vps/9-1-how-to-choose-a-secure-canadian-vps-host

The other three Moodle Providers refuse to say where your website will be hosted. To add insult to injury, four of the five do not even bother to list their prices – falsely claiming that it is too difficult to tell you how they determine prices. In fact, what they are really doing is hiding their massive fees from public view.

The final option recommended by Moodle is using the Moodle Cloud which starts out as only $10 USD per month. But you are limited to only 50 users and 250 MB of storage. Keep in mind that Moodle itself takes up about 200 MB so there will be no room for any real course content. For a real course, you need at least 1 GB of storage which is $32 per month:


Even paying $130 USD per month for the Moodle Cloud will only get you 5 GB of storage. Sadly, the Moodle Cloud will not let you install Moodle Plugins!

Our goal is to offer Moodle users a new, better and dramatically less expensive option. Take the time to learn how to set up your own Hestia VPS and you can set up your own Moodle website and have as many users as you want and up to 30 GB of storage for only $20 USD per month. No hidden set up fees. No hidden branding or customization fees. No annual per user fees. Just $20 per month!

What is different about this course
Moodle has a massive amount of documentation. Here is a link to the official Moodle Table of Contents


In addition, there are three courses you can take at learn.moodle.org. With this much documentation, it is reasonable to ask why we need another course, book and website on learning Moodle?

Here are several reasons I decided to write a more teacher-friendly Moodle course:

The first and most obvious difference is that this course will cover how to use the Hestia Control panel to install a Moodle website on a CanHost VPS. By contrast, the official Moodle documentation has a strong bias to subtly encourage you to use the Moodle Partners and/or Moodle Cloud to host and build your Moodle website. Outsourcing your website to someone else may be the best idea for those who do not have the time or interest to learn HTML, CSS or PHP or Content Management Systems (CMS). However, ignorance comes at a huge price. Over time, you will wind up paying the Moodle Partners and Moodle Cloud many thousands of dollars. You will also have outsourced your Moodle website to someone else – meaning that someone else actually controls your Moodle website. The price of true freedom requires taking the time to learn a new way to install Moodle.

Second, even though the official documentation claims to be for the latest version of Moodle, much of it is outdated or simply wrong.

Third, many important basic skills are missing steps and missing images and thus leave beginners confused as to how to proceed. This massive confusion has forced learners to post literally thousands of questions on the Moodle forum. Sadly, the answers to those questions often cause even more confusion.

Fourth the official Moodle documentation covers many topics that most Moodle Administrators and instructors will never use. We will cover fewer topics – but do a better job of covering those more important topics.

Fifth, we will cover important topics that are completely missing from the official Moodle documentation. For example, we will cover how to install Moodle on a Hestia VPS. We also cover installing and using the Fordson Theme which adds a huge amount of functionality to a Moodle website. Hugely important these days is that the Fordson theme adds support for Jitsi video conferencing which is free and much easier to use than Zoom video conferencing.

Sixth, by creating your own Moodle VPS, you retain complete control of student and instructor data as the information (files and user data) is found on your own VPS account. But if you use either the Amazon Cloud or Google Classroom or Canvas, then all your information is stored on servers controlled by someone else.

How much RAM do you need on your VPS?
Moodle recommends 1GB for every 20 concurrent users. Keep in mind that the server and the control panel also need RAM. Thankfully, a Hestia Debian VPS uses less than 1 GB of RAM. Therefore with a 4 GB VPS, you can have up to 60 students online at the same time. For just a few dollars more, you can switch to an 8 GB RAM VPS which will be enough to have 140 students online at the same time.

Top 15 Moodle Features

1 Personalized Dashboard. Moodle offers students, teachers and administrators their own customized Dashboard page showing their past, current and future courses along with tasks to be done.

2 Collaborative Tools and Activities. These include forums, wikis, glossaries, videos, video conferencing, quizes and a host of other learning activities.

3 Personalized Calendar. Includes course deadlines, group meetings, and many other events.

4. Personal File Manager. That can interact with your Home computer File Manager as well as cloud file managers.

5. Simple Test Editor. Allowing you to create and edit documents from inside of Moodle.

6 Notifications Table. to send and receive alerts on new assignments and deadlines, forum posts and private messages.

7 Track Course Progress Table. Teachers and learners can track progress on towards course completion as well as individual activities and additional learning resources.

8 Customizable Site Design. Easy branding to change the appearance to match your school or business colors and activities. Some themes like the Fordson theme provide additional features.

9 Many enrollment options. Moodle offers over 50 enrollment options to enroll students to your website and courses.

10 Multi-language Capability. Students and teachers can view course content in their own language with over 100 languages to choose from.

11 Easy Course Creation. Moodle helps you organize and present your online courses and is completely flexible in terms of the content.

12 Multi-Media Integration. Easily create and add images, videos, video conferences, forums and group chat.

13 Group Management, with custom User Roles and Permissions. Customizable groups allow you to control who sees what and who can do what.

14 Lots of Free Plugins to expand Moodle. There are over 1000 free plugins in the Moodle Plugin Directory to help you improve your Moodle website to fit your own course needs. These Moodle plugins are divided into more than 30 searchable categories. Here is a link to the Moodle Plugins page: https://moodle.org/plugins/

15 Detailed Reports. Moodle offers a series of reports to help students, parents and teachers better understand the Moodle learning process.

Three Options to learn Moodle
There are three primary user roles you should consider. The first is the role of a Moodle website administrator. That is the primary focus of this course. However, you may also be the course instructor. So we will also review how to manage your Moodle course as a course instructor. Finally, we will also cover how to make your Moodle course structure easier for your students to use.

If you are not yet ready to set up a CanHost VPS account, you can install Moodle on a local Virtual Server using Virtual Machine Manager. We cover this topic at the beginning of one of our previous courses:


Go to the above website and click on First Steps.

The second option is to set up a real VPS on CanHost.ca. We cover this option in detail in the next chapter.

The third option is to use one of the two Moodle Sandbox Demo websites. Click on the Log In link below and then use the username admin and the password sandbox to log in as an administrator. To log in as a manager, use the username manager. To log in as a teacher, use the username teacher. To log in as a student, use the username student. For all four roles, the password is sandbox.

Here is a link to log into the Moodle Demo website with no content:


Here is a link to log into the Moodle Demo site with content:


For the Moodle site with content, choose a Role. Then use the password moodle. Keep in mind that both of the Moodle sandbox demo sites reset every hour, on the hour. So if you wish to use either of them for practice, log in a few minutes past the hour so that you have just under an hour to experiment before the site resets.

Who is this course for?
Create Your Own Online Course
is for anyone who wants to create a secure and economical online course using the Moodle Learning Management System. This includes teachers who want to provide additional resources for their students and retired teachers who want to provide their learning materials to the world community. This also includes specialists who want to provide courses on a special skill either for pay or for free.

This course is also for school district, college and university administrators and Information Technology staff interested in providing their students and teachers with a better and less expensive online or hybrid experience. You do not need coding skills – but knowing the basics of HTML and CSS will help.

Finally, this course is for those wanting to set up a Multi-lingual education program – as Moodle is available in more than one hundred languages.

How to get help with your Moodle Questions
If you run into problems managing any Moodle website, the best option to get help is to create an account on the Moodle community website, moodle.org. Then sign up for one of the communities such as the English community. When you have created an account and logged in, scroll down to Community administration (on the right) and click Become a member of this community. You'll then be able to post a question in any suitable forum. If you're not sure, post in the General help forum

What’s Next?
In the next section, we will take a tour of the Moodle Demo website.