Loading...
Home
Explore
Contact
Sign in
Linux, Server Administration & Control Panels

Free Virtualmin vs cPanel: AU VPS Install Guide

Replace a $700+/year cPanel licence with free Virtualmin on a fresh Australian VPS. This guide covers install commands, three common post-setup failures, DIY fixes, and when to book Fixwebnode for remote help.

Fixwebnode Support
Fixwebnode Support
11 min read 21 views
Free Virtualmin vs cPanel: AU VPS Install Guide

If you run a site or small business on an Australian VPS and you are tired of paying cPanel prices for a control panel, this walkthrough is for you. By the end you will have Virtualmin GPL installed on a clean Linux VPS, know how to verify the stack, and have numbered fixes for the failures that usually appear after first login.

Hosting companies often charge thousands to “build” the same stack you can stand up yourself: web, DNS, mail, SSL, and per-domain isolation. Virtualmin is free (GPL) and replaces that paid panel model. Fixwebnode works remotely with individuals, sole traders, and local operators across Australia when the install stalls or production mail/SSL breaks — start at website repair Australia. We cover service geography on our service areas page.

Why free Virtualmin on an Australian VPS matters

cPanel licensing for a single server commonly lands well over $700 per year once you add the base licence and add-ons. Virtualmin GPL gives you a full hosting control panel — Apache or Nginx, PHP-FPM, MariaDB/MySQL, Postfix/Dovecot, BIND or other DNS, and Let’s Encrypt — without that recurring panel fee. On a fresh AU VPS (Sydney or Melbourne regions are typical), you also keep latency low for Australian visitors and can point AU DNS correctly from day one.

This is the same class of setup many hosts sell as a managed build. The difference is you own the box, you control updates, and you are not locked into a proprietary panel licence. The trade-off is you must finish the install cleanly and fix the usual first-week issues yourself — or book remote help when mail, SSL, or firewall rules go wrong.

Why did Virtualmin fail or break after install on my Australian VPS?

Most failures are not “Virtualmin is broken.” They are incomplete OS prep, blocked ports on the cloud firewall, DNS still pointing at the old host, or PHP-FPM/SSL services that never started cleanly after the installer finished. Fix the OS and network first, then re-check Virtualmin’s own status page and logs.

SymptomQuick checkWhen to call Fixwebnode
Installer exits or panel URL times outConfirm fresh OS, full upgrade, ports 22/80/443/10000 openRepeat failures after clean reimage or locked root access
Site loads HTTP only / SSL errorsDNS A record + Let’s Encrypt request + nginx/apache reloadMixed vhosts, broken chain, or forced HTTPS loops
Mail queues or remote rejectPTR/rDNS, port 25, SPF/DKIM in VirtualminProvider blocks SMTP or deliverability still fails after DNS

What you need before you start

Use a fresh VPS image — not a box that already has cPanel, Plesk, or a half-configured LAMP stack. Virtualmin’s installer expects to own the web/mail/DNS stack.

  • Supported OS: recent Debian, Ubuntu LTS, or RHEL-compatible (Rocky/Alma) per Virtualmin’s current matrix
  • Minimum practical resources: 2 GB RAM (4 GB preferred if you will host mail + several sites), 2 vCPU, 20+ GB disk
  • Root or full sudo SSH access
  • A hostname that resolves (example: server.example.com.au) with an A record to the VPS public IP
  • Cloud security group / firewall allowing TCP 22, 80, 443, 10000 (and mail ports if you will send/receive mail)

Set the system hostname and reverse DNS (PTR) with your VPS provider to match the FQDN you will use for the panel and mail. Australian providers usually let you request PTR from the control panel or a support ticket.

Step-by-step: install Virtualmin GPL on a fresh VPS

The following assumes Ubuntu/Debian-style commands. On RHEL clones, use dnf equivalents and the same official install script.

Step 1 — Update the base system and set the hostname

sudo apt update && sudo apt -y full-upgrade
sudo hostnamectl set-hostname server.example.com.au
echo "YOUR.SERVER.IP server.example.com.au server" | sudo tee -a /etc/hosts
sudo reboot

After reboot, confirm:

hostname -f
ip -br a

Step 2 — Open the panel and web ports on the host firewall

sudo apt -y install ufw
sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 10000/tcp
sudo ufw --force enable
sudo ufw status

Also mirror these rules in your VPS provider’s network firewall. If only UFW is open and the cloud panel still blocks 10000, the Virtualmin UI will never load from Australia or anywhere else.

Step 3 — Download and run the official GPL installer

curl -O https://software.virtualmin.com/gpl/scripts/virtualmin-install.sh
sudo sh virtualmin-install.sh --hostname server.example.com.au

Let it finish without interruption. A full run commonly takes 15–40 minutes depending on CPU and mirror speed. When it completes, note the admin URL https://server.example.com.au:10000/ and the root credentials you already use over SSH.

Step 4 — First login and post-install wizard

Open the panel in a browser, accept the certificate warning if Let’s Encrypt is not on the hostname yet, and complete the post-installation wizard: memory defaults, MariaDB root password if prompted, and primary nameserver hostnames if you will host DNS in Virtualmin.

Step 5 — Verify core services

sudo systemctl status webmin --no-pager
sudo systemctl status apache2 --no-pager || sudo systemctl status nginx --no-pager
sudo systemctl status php*-fpm --no-pager
sudo systemctl status mariadb --no-pager
sudo systemctl status postfix --no-pager
sudo ss -tulpn | grep -E ':80|:443|:10000|:25'

You want listening sockets on 80/443/10000 at minimum. Mail (25/465/587/993) only if you intend to run mail on this box.

Step 6 — Create the first virtual server (domain)

In Virtualmin: Create Virtual Server → enter the domain → enable website + SSL + mail as needed → create. Then issue Let’s Encrypt from the SSL certificate page for that domain once public DNS already points here.

Step 7 — Quick site check from the shell

curl -I http://127.0.0.1 -H "Host: yourdomain.com.au"
curl -Ik https://yourdomain.com.au
sudo tail -n 50 /var/log/virtualmin/yourdomain.com.au_error_log

Common issues after Virtualmin replaces cPanel

These are the problems Australian VPS owners hit most often once the installer “succeeds” but production still feels broken.

  • Panel or sites unreachable from the public internet — browser spins on :10000 or HTTP times out even though SSH works.
  • Let’s Encrypt fails; padlock missing or wrong certificate — HTTP works, HTTPS errors, or Virtualmin shows rate-limit / connection failures.
  • Outbound or inbound mail stuck; Gmail/Microsoft reject mail — messages sit in the queue or bounce on SPF/PTR/policy grounds.
  • PHP apps show blank pages or 502/503 after domain create — document root exists but PHP-FPM pool or handler is wrong.

Fix 1 — Panel or websites unreachable (firewall / bind issue)

Symptoms: SSH on port 22 works; https://YOUR_IP:10000 times out; or port 80 never answers from a mobile network.

Step 1 — Confirm the service is listening locally:

sudo ss -tulpn | grep -E '10000|80|443'
sudo systemctl status webmin --no-pager

Step 2 — Re-check host firewall and cloud security group for 80, 443, and 10000/tcp. Re-apply UFW if needed:

sudo ufw allow 10000/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw reload
sudo ufw status verbose

Step 3 — If Webmin is bound incorrectly or failed after reboot:

sudo systemctl restart webmin
sudo tail -n 80 /var/webmin/miniserv.error

Step 4 — Test from outside the VPS (your laptop):

curl -Ik https://YOUR.SERVER.IP:10000

If local listen works but remote curl fails, the block is almost always the provider firewall, not Virtualmin itself.

When to book Fixwebnode: you cannot change the cloud firewall, Webmin will not start after repeated restarts, or the VPS was not actually a clean image and packages conflict.

Fix 2 — Let’s Encrypt / SSL failure on new domains

Symptoms: Virtualmin SSL request errors; browser shows NET::ERR_CERT_AUTHORITY_INVALID; HTTP site works.

Step 1 — Confirm public DNS already points to this VPS before requesting a certificate:

dig +short A yourdomain.com.au
dig +short A www.yourdomain.com.au
curl -I http://yourdomain.com.au

The A records must match the VPS IP. Propagation delays are common when you just changed AU DNS at your registrar.

Step 2 — Ensure port 80 is reachable for the HTTP-01 challenge (even if you want HTTPS-only later).

sudo ss -tulpn | grep ':80'
sudo tail -n 100 /var/log/virtualmin/yourdomain.com.au_error_log

Step 3 — In Virtualmin, open the domain → SSL Certificate → Let’s Encrypt → select the correct hostnames → request. Then force a web server reload from the shell if the UI still serves the old cert:

sudo systemctl reload apache2 2>/dev/null || sudo systemctl reload nginx
sudo openssl s_client -connect yourdomain.com.au:443 -servername yourdomain.com.au </dev/null 2>/dev/null | openssl x509 -noout -issuer -dates -subject

Step 4 — If you hit rate limits, wait or use a single hostname first, fix DNS, then expand names on a later request.

When to book Fixwebnode: multiple vhosts share conflicting SSL configs, reverse proxies were added by hand, or HTTPS redirect loops break the challenge path.

Fix 3 — Mail queued or rejected after leaving cPanel

Symptoms: Virtualmin shows mail in the queue; Gmail reports “does not meet SPF/PTR”; local send works but remote fails.

Step 1 — Check queue and Postfix status:

sudo mailq
sudo systemctl status postfix --no-pager
sudo tail -n 100 /var/log/mail.log

Step 2 — Verify the server’s public IP has a PTR matching your mail hostname, and that hostname resolves forward to the same IP. Request PTR via your Australian VPS provider if it still shows a generic reverse name.

Step 3 — In Virtualmin, enable SPF and DKIM for the domain, then publish the DNS records Virtualmin displays at your DNS host. Confirm:

dig +short TXT yourdomain.com.au
dig +short TXT default._domainkey.yourdomain.com.au

Step 4 — Confirm outbound port 25 is not blocked by the provider (many cloud networks filter SMTP):

sudo ss -tulpn | grep ':25'
# From the VPS, test outbound SMTP path only if your provider allows it
getent hosts gmail-smtp-in.l.google.com

If port 25 is blocked, you must use an allowed submission relay or ask the provider to unlock SMTP — Virtualmin cannot bypass a network filter.

When to book Fixwebnode: queue keeps growing after SPF/DKIM/PTR are correct, or you need a safe relay design without exposing an open relay.

Fix 4 — Blank pages, 502 Bad Gateway, or wrong PHP version

Symptoms: static files load; PHP returns empty response or 502; app that worked on cPanel fails on Virtualmin.

Step 1 — Identify the domain’s PHP execution mode in Virtualmin (PHP-FPM is preferred) and the error log:

sudo tail -n 80 /var/log/virtualmin/yourdomain.com.au_error_log
sudo systemctl status php*-fpm --no-pager
sudo ls /etc/php/*/fpm/pool.d/

Step 2 — Restart PHP-FPM and the web server after changing PHP version in the panel:

sudo systemctl restart php8.3-fpm 2>/dev/null || sudo systemctl restart php8.2-fpm 2>/dev/null || sudo systemctl restart php8.1-fpm
sudo systemctl reload apache2 2>/dev/null || sudo systemctl reload nginx

Step 3 — Confirm document root ownership matches the domain user Virtualmin created:

sudo ls -la /home/yourdomain/public_html
sudo -u yourdomain php -v

Step 4 — For apps that expected cPanel paths, update config to the new home directory and rebuild caches (Composer, Laravel, WordPress paths) rather than copying old absolute /home/user/public_html assumptions blindly.

When to book Fixwebnode: multiple PHP versions collide across sites, or a migration from cPanel left .htaccess / handler rules that nginx or Apache-FPM will not honour.

When DIY is enough vs when to book Fixwebnode

DIY is enough when you have a clean OS image, DNS under your control, and the failures match the firewall, SSL challenge, or PHP-FPM patterns above. Follow the numbered checks, keep SSH access, and change one variable at a time.

Book remote help when any of these are true: the VPS was not fresh and package conflicts remain; mail must work for a live business and the provider blocks SMTP; SSL and vhosts were hand-edited into a broken state; you need a controlled cutover from cPanel with minimal downtime; or you simply cannot risk experimenting on a production box after hours.

Fixwebnode is a direct specialist provider for remote server and website work in Australia — not a freelance marketplace. If you want a guided install, a rescue after a failed panel migration, or a sanity check before you point production DNS, use the landing page and start a conversation.

Get remote help with your Virtualmin VPS setup

Free Virtualmin can replace a $700+/year cPanel licence and deliver the same core hosting stack hosts charge heavily to configure — but only if install, DNS, SSL, and mail are finished properly on your Australian VPS. If you are stuck mid-install, staring at a dead :10000 URL, or migrating live sites off cPanel, talk to Fixwebnode for remote assistance.

Next step: describe your OS image, provider region, and the exact error you see, then book via https://fixwebnode.com.au/website-repair-australia. For where support is offered, see service areas.

Share this article
Fixwebnode Support
Fixwebnode Support

Hey there!
I am your assistant for Fixwebnode. Ask about our services, quotes, packages, orders, or how to get support.
While you wait
What’s your name and best email? We’ll reply even if you leave.