Virtmin is a 'special' version of Webmin designed to be like GoDaddy/Other Provider's set ups on shared host.
http://www.webmin.com/virtualmin.html
Have used Webmin before to do the same when creating users for a CentOS server and pre-building a 'skelton' directory that would be copied to the 'users'/customers /home/[customername]/public_html/ directory. That's kinda what VirualMin does ... is that correct so far?
Virtmin can, I think, set up what one would call a home directory which is really the domain a customer chooses to use (this assumes the FQDN is available and configured prior to the configuration of the customers space ... like /home/[customerID]/FQDNofsite/public_html/
Customer ID (or login) has be part of the apache group for apache tor be able to handle 'user space' and the customer to have it easy to be able to upload/control their space by their login name.
So this issue really is a overall issue with config of Virtualmin and not of Moodle.
The catch 22 in using VirtualMin will be the location of moodledata directory. Moodle code requires it to be outside of publically accessible/browseable directories in user space. Hosting providers get around that by using .htaccess in moodledata.
So for somone to help with this ... you will have to disclose much more than you have ... example: /home/moodle/ can't be used by all customers. Now /home/bjones/public_html/[moodleocodehere] could be used ... as well as /home/FQDN/public_html/[moodlecodehere] could also be used.
Check out the httpd.conf file on your system (assumes CentOS - if Ubuntu/other that could be apache2.conf. In 5,6 of CentOS ... possibly in 7 ... there is this section that could be involved:
# Control access to UserDir directories. The following is an example
# for a site where these directories are restricted to read-only.
#
#<Directory /home/*/public_html>
# AllowOverride FileInfo AuthConfig Limit
# Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
# <Limit GET POST OPTIONS>
# Order allow,deny
# Allow from all
# </Limit>
# <LimitExcept GET POST OPTIONS>
# Order deny,allow
# Deny from all
# </LimitExcept>
#</Directory>
If pursuing this route ... strongly suggest building the skeleton directory for moodle code using git ... version 3.1 of Moodle. This will enable users to update their Moodle easily IF they are granted ssh into their own space AND git is available to all users on the system.
Even if 'customers' don't want to do that and you offer, for additional fee, of course, an update/upgrade service it will be extremely easy for you to update and/or upgrade. Because it's so easy to update or upgrade a Moodle via git customers would be pleasantly surprised to see additional fees for such to be very reasonable ... how about $15.00 US. That would include a full site backup (code, DB, and data directory in user space) prior to update/upgrades.
Hmmmm ... means you're gonna have to have a hefty machine ... and more than likely a dedicated DB server to handle multiple customers.
Free advice ... ;)
'spirit of sharing', Ken