Virtualmin support for CentOS 8

Howdy all,

I’ve rolled out version 6.1.1 of the Virtualmin install script. This has some pretty big changes, and so it got a version bump (from 6.0.x to 6.1.x). It’s possible I broke older distros with my changes, but nothing showed up in my testing.

Anyway, this includes beta support for CentOS 8. I suspect you’ll probably still find problems, but nothing that can’t be worked around, if you are technically savvy and need to run Virtualmin on CentOS 8 today.

The biggest change in CentOS 8 vs. other distros (including earlier versions of CentOS) is that we have dropped support for suexec. The only PHP execution mode we support in this version is PHP-FPM (which supports running as the domain owner user), and no CGI execution modes exist (for any languages) anymore.

In short: you will need to use modern application execution practices to use Virtualmin on CentOS 8. So…your apps need to run under an app server and Apache or nginx proxies to it. This is automatic for PHP apps running under PHP-FPM, but you’ll need to set it up for other languages like Python, Ruby, Perl, etc. Generally, this is how documentation for application programming frameworks recommend you run things and CGI is rarely even available as an option, so this shouldn’t be too disruptive, but I know we have a lot of old school developers still using CGI and mod_php or mod_fcgid. If that’s you, you don’t want to run CentOS 8, until you’ve updated your tools.

The other notable change is that the install script expects more RAM and if it doesn’t see it, it’ll offer to make a bigger swap file than in the past. This is to accommodate the higher memory requirements of CentOS 8 and newer versions of various services and tools. This logic applies the same across all distros and versions, so it may be slight overkill for lightly used CentOS 6 or Ubuntu 16.04, but it’s not gonna hurt anything to have a bigger swap file (and you should not be installing fresh on those distros anyway, they’re too old!).

Anyway, this is beta. It probably has issues. Before reporting issues, look around here and in the github issue trackers for Webmin, the virtualmin-install, to make sure we’re not already aware of it.



First of all, thank you, Joe!

I have run few tests and ready to share some results.

  1. It will still fail on the Configuring Webmin step.

    The workaround for now would be is to manually run /etc/webmin/restart and then re-run the installer script.

  2. The other issue that all will face is MariaDB, if password for the root user is chosen to be changed, as proposed to be insecure by installer (which is true), resulting into an error when connecting to the database. The work-around is to set it manually.

@Joe @JamieCameron We also need to upgrade sub restart_miniserv, to be more aggressive if needed, and for now we could tweak Virtualmin-Config/Webmin to run restart command directly, as it just should work, and there is no reason to call restart_miniserv from inside install script, in case I don’t miss anything.


do we use the same install script? i notice this script has not been changed in a couple of months.

you might consider changing the copyright year as well, i still see:

Copyright 2005-2019 Virtualmin, Inc.

It definitely needs an updated version. Where did you find one that hasn’t been updated? It should be version 6.1.1.

ha - i found it on your github page!

hey joe, if i dont get an opportunity to tell you later, i want to thank you for providing idiots like me such a fantastic cPanel alternative. developing software can be such a thankless task, but please know you are making a difference, and actually you are indeed making a HUGE difference.

Virtualmin rocks!

(i am just sorry that you are working on a Sunday…)


Ah, yeah, the github is up to date. The install script was updated for CentOS 8 in github in a branch months ago, but we were waiting on Webmin and Virtualmn releases before the CentOS 8 installation actually mostly worked. 6.1.1 is the right version and it is the one with CentOS 8 support. I’ve been working on C8 support for a long time, but a lot of pieces needed to work out, and we had that server crash that took a lot of time to straighten out (it killed Jamie’s cloudmin repos, the scripts repos, and all of my build/deploy VMs).

And, thanks for the kind words. I’m always glad to know we’re helping!

Weekends are pretty much all the time I have lately for doing anything that takes significant chunks of uninterrupted time (like testing and rolling out new versions of things and writing code). I have a lot going on at my other job, several big projects that are on a tight deadline. Luckily, Ilia and Eric have more time during the week, so we’re never without somebody on deck every day.


It is cool to see, that virtualmin can run on centos 8
I tested the install on my VM today. But i face a Post-Installation Wizard error.
That is the Run ClamAV server scanner setting. If i choose yes, the system show " Systemd service clamd@scan cannot be created unless a command is given".

Best wishes,


I use PHP FCGId in Centos 7.7 with Virtualmin 6.08 (my version of PHP is 7.2 installed via SCL)

Can I use FCGId with Virtualmin 6.1.1 with Centos 7.7?

My current config of PHP is:

The following PHP versions are available : 5.4.16 (/bin/php-cgi), 5.6.25 (/opt/rh/rh-php56/root/usr/bin/php-cgi), 7.0.27 (/opt/rh/rh-php70/root/usr/bin/php-cgi), 7.2.24 (/opt/rh/rh-php72/root/usr/bin/php-cgi), 5.4 (mod_php)

No PHP-FPM packages were found on this system.

Thanks for you support!


Virtualmin is not at version 6.1.1. This topic is about, which is version 6.1.1. Virtualmin (the virtual-server module) is at version 6.0.9.

Nothing has changed, or will change, about the way Virtualmin works on CentOS 7.

Ok. Thanks!

I have version 6.0.8 and not 6.0.9… is this last version in the Centos 7.7 repo?

I am not able to update with

Yum clean all
Yum update

Thanks again.

It’s only the the /vm/6 repo for CentOS. That covers all CentOS versions, but it would only be the one you’re using if you installed in the past couple of years; older installs are in a repo that updating is difficult. I’m also still working on Debian/Ubuntu repos. But, I’m hoping to wrap it all up this weekend.

If you need it urgently, you can switch to the /vm/6 repos, but if you’re using ClamAV or anything we previously mirrored into our repos from EPEL, it’s probably safer just to wait. Some of the packages changed along the way, in incompatible ways that would need some manual tweaking.

1 Like

Thank you very much Joe! I will wait :slight_smile:

I just tried the new with a fresh Centos 8.1 install. For me it failed with:
Phase 3 of 3: Configuration
Can't locate in @INC (you may need to install the open module)
To fix I did
dnf install perl-open.noarch
then ran install again.
Apparently Centos 8 doesn’t install perl by default.


1 Like

What is odd here, is that it should be installed automatically!

The script, on clean install calls dnf install perl -y, which installs Perl from @AppStream repo and automatically pulls as a dependency perl-open package.

I would recommend running yum clean all && yum update -y before running Virtualmin installer script.

Interesting. I’m testing this on a VM, of which I made a snapshot after the default centos 8.1 install and dnf update.

So reverted to that snapshot (before even downloading script using [this is the latest, right?] wget -O

I tried yum clean all && yum update -y, then sh, but same error:

Let me know if there is anything I can check or post log-wise.


I see the issue. In my case perl was installed by the default Centos 8 install with 45 perl-related packages (not including perl-open), so the dnf install perl -y was never called. If I call it manually, it adds 112 additional packages, one of which is the perl-open.

So for now I’m just running dnf install perl -y before the initial runs. Maybe the installer could check to see if perl-open is installed even if perl is already present?


I installed Virtualmin on Centos8.
Some problems occurred but I found some workarounds on this and other websites.

After a clean install of Centos8, log in with ssh:

Perl problem
First install perl. then install virtualmin
dnf install perl -y
sudo /bin/sh =>Y

Postfix problem:
Add the following text in Postfix
Webmin > Servers > Postfix Mail Server > Virtual Domains >Domain mapping lookup tables = hash:/etc/postfix/virtual

MYSQL problem with root password
service mysqld stop
mysqld_safe --skip-grant-tables &
At the mysql> prompt, reset the password. To do this, type the following command, replacing new-password with the new root password:
UPDATE mysql.user SET Password=PASSWORD(‘NEW PASSWORD’) WHERE User=‘root’;

At the mysql> prompt, type the following commands:

Stop the MySQL server using the following command. You will be prompted to enter the new MySQL root password before the MySQL server shuts down:
mysqladmin -u root -p shutdown

For CentOS and Fedora, type:
service mysqld start

Webmin/Virtualmin is now fully working :slight_smile:

However, I’ don’t succeed in adding letsencrypt certificates.
I use the providers DNS so need website verification
I was able to add a letsencrypt certificate in Webmin for the main server.
The virtual servers always returns errors (Forbidden). I asked to get a certificate at installation of the virtual server.
After that failed, I tried to add a letsencrypt certificate with Server configuration/ssl configuration/letsencrypt. I flushed all redirections and made sure that the website was accessible. I even tried to set permissions on 777=> No success
Any idea’s how to solve?

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator webroot, Installer None
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for
Using the webroot path /home/e-farma/public_html for all unmatched domains.
Waiting for verification…
Challenge failed for domain
http-01 challenge for
Cleaning up challenges
Some challenges have failed.

Thanks Ilia. I got past these two issues, but kept running into more problems in Virtualmin’s “Re-Check Configuration”. The most recent was “The AWstats command /usr/share/awstats/wwwroot/cgi-bin/ was not found on your system.”

So since I have a user that is demanding MariaDB 10, I am going back to CentOS 7, as I successfully installed Virtualmin after I first installed MariaDB 10. Seems like the best solution until the CentOS 8 installation routine is out of beta.

I am appreciative of the work that goes into this, despite how impatient I seem at times.


1 Like


I was able to successful install MariaDB 10.4 on CentOS 8. To accomplish it, I simply uninstalled MariaDB and used this tutorial to install MariaDB 10.4:

The MariaDB provided by Virtualmin is through the AppStream. Before you can install the new version through MariaDB, you would need to reset the module by issuing this command:

yum module reset mariadb

I didn’t do this and had a lot of errors when trying to do it.

In regards to the Let’s Encrypt error, I had this as well. The solution was to just manually create a folder named ‘.well-known’ in the root directory of the site’s files. After that, Let’s Encrypt should be successful.

Hi Mik. Thanks, but I think you misunderstood my post. CentOS 8 comes with MariaDB 10 by default, so I’m surprised you had to uninstall it. CentOS 7, on the other hand, still comes with MariaDB 5 (or maybe it’s MySQL 5, I can’t remember), but I used MariaDB’s own instructions to install it before installing Virtualmin and that worked a charm.

As for my LE issue in another post, I can’t see how your suggestion would work for me. Perhaps you’d like to post there and tell me where in the file system I create that directory given the sub-domain I’m using isn’t added to Virtualmin and Virtualmin won’t let me add it. :man_shrugging: