How to Set Up and Configure a New Virtual Server on Virtualmin?

Hi everyone,

I’m new to Virtualmin and I’m trying to set up a new virtual server for my website. I’ve gone through some documentation, but I’m still a bit confused about the process. Could someone provide a step-by-step guide on how to create and configure a new virtual server on Virtualmin?

Here are a few specific points I’m struggling with:

  1. Initial Setup: What are the essential settings I need to configure when creating a new virtual server?
  2. DNS Configuration: How do I correctly set up the DNS records for my domain?
  3. Email Configuration: What are the steps to set up email accounts and ensure they work properly?
  4. SSL Certificate: How can I generate and install an SSL certificate for my virtual server?
  5. Resource Limits: How do I manage and set resource limits (CPU, memory, etc.) for the new virtual server?
  6. Security Best Practices: What security settings should I implement to protect my server?

Any screenshots or examples would be greatly appreciated!

Thanks in advance for your help!

Best regards,
Usman Ghani

The defaults are pretty good start with that then work out what you need to harden if anything

The only essential setting is a name.

That depends on where you’re hosting your DNS. If you’ll be delegating authority for your zones to the Virtualmin server, Virtualmin will set everything up for you, except the glue records (which must be setup at your registrar). If you will not be hosting DNS locally, and instead using your registrar DNS servers or some other third party servers, you should disable the DNS Feature in Features and Plugins; Virtualmin will then give you a “Suggested DNS Records” page, which answers this question for you…you just copy/paste the records for the services you want to use.

Virtualmin also supports automatically managing DNS in some cloud DNS providers. GPL has Route 53 support, Pro adds Google and Cloudflare.

I think you should just try Virtualmin. You’re asking questions that are answered pretty quickly by just doing it. (You can generate a Let’s Encrypt certificate in a couple of clicks. There’s nothing to “install”.)

Virtualmin manages disk quotas, and can monitor bandwidth usage. CPU and memory are not trivially manageable. You could use something like cgroups, but that’s not in the Virtualmin UI. Virtualmin Pro has support for managing limits.conf (limits.conf(5) - Linux manual page), but people often find that very unintuitive, so I don’t necessarily recommend it for new users. cgroups can do most of the things people want to do when they ask about “limiting” a user, but also somewhat complicated. https://www.redhat.com/sysadmin/cgroups-part-one (systemd makes it quite a bit easier to manage cgroups and applying them to users…one of the reasons we never added it was the complexity of managing them before systemd came along; it’s still complicated, but not unreasonably so)

But, most folks just don’t need to do that kind of micromanaging. If you have a user that’s abusing the system, kick them off or up-sell them to a bigger machine. We’ll probably add cgroups support at some point, though, especially since the heavy lifting is now done by systemd. All we have to do is manage config files.

You should spend time learning what security tools are in the default Virtualmin installation, and how to use them. Virtualmin sets up websites to run as the domain owner user, installs and configures firewalld, fail2ban, offers two-factor authentication, makes it easy to update your system, etc. Don’t go looking for new adventures before you even understand what’s already there.