How to Install and Configure Webmin on a VPS for Browser-Based Server Management

How to Install and Configure Webmin on a VPS for Browser-Based Server Management

Not every VPS user is comfortable managing a server entirely from the command line. Webmin is the most popular open-source web-based control panel for Linux servers β€” it gives you a browser interface for managing users, files, services, firewalls, cron jobs, databases, and dozens of other server functions without typing a single terminal command.

Unlike cPanel (which requires a paid license), Webmin is completely free and installs in minutes on any Ubuntu VPS. This guide covers installation, HTTPS configuration, security hardening, and the most useful modules for day-to-day server management.

Webmin vs cPanel: Key Differences

Webmin cPanel
Cost Free $16–45/month license
Target user System administrators Web hosting companies
Web hosting features Basic (via Virtualmin addon) Comprehensive
System management βœ… Excellent Limited to hosting tasks
OS support All major Linux distros RHEL-family mainly
Resource usage ~50–100 MB RAM 500 MB+ RAM

Webmin is for system administrators who want a GUI for server management. cPanel is for web hosting companies managing client accounts. For self-managed VPS users, Webmin is almost always the right choice.

πŸ’‘ VPS.DO Tip: Webmin runs comfortably on all VPS.DO plans. Even the 2 GB RAM plan handles it easily alongside your other applications. View Plans β†’


Step 1: Update Your System

sudo apt update && sudo apt upgrade -y

Step 2: Install Webmin

# Add the Webmin repository
curl -o setup-repos.sh https://raw.githubusercontent.com/webmin/webmin/master/setup-repos.sh
sudo sh setup-repos.sh

# Install Webmin
sudo apt install webmin --install-recommends -y

Verify Webmin is running:

sudo systemctl status webmin

Webmin listens on port 10000 by default using a self-signed SSL certificate.

Step 3: Open Firewall Port

# Allow Webmin port
sudo ufw allow 10000/tcp

# Verify
sudo ufw status | grep 10000

Step 4: First Login

Open your browser and navigate to:

https://YOUR_VPS_IP:10000

You’ll see a browser security warning about the self-signed certificate β€” click “Advanced” and proceed. Log in with:

  • Username: root (or your sudo username)
  • Password: Your root/sudo password

You’ll be greeted by the Webmin dashboard showing your server’s CPU, RAM, disk usage, and running services. βœ…


Step 5: Install a Trusted SSL Certificate

The self-signed certificate triggers browser warnings. Replace it with a Let’s Encrypt certificate:

Option A: Use Let’s Encrypt directly in Webmin

  1. Webmin β†’ Webmin β†’ Webmin Configuration
  2. Click SSL Encryption
  3. Click Let’s Encrypt tab
  4. Enter your domain (e.g., admin.yourdomain.com)
  5. Click Request Certificate

Webmin automatically configures itself to use the new certificate. βœ…

Option B: Use Certbot (if you already have a cert)

sudo certbot certonly --standalone -d admin.yourdomain.com \
  --pre-hook "systemctl stop nginx" \
  --post-hook "systemctl start nginx"

# Configure Webmin to use it
sudo nano /etc/webmin/miniserv.conf
ssl=1
keyfile=/etc/letsencrypt/live/admin.yourdomain.com/privkey.pem
certfile=/etc/letsencrypt/live/admin.yourdomain.com/fullchain.pem
sudo systemctl restart webmin

Step 6: Security Hardening

Change the Webmin port

The default port 10000 is widely known. Change it to reduce automated scan noise:

  1. Webmin β†’ Webmin Configuration β†’ Ports and Addresses
  2. Change “Listen on port” to a custom port (e.g., 10443)
  3. Click Save
# Update firewall
sudo ufw delete allow 10000/tcp
sudo ufw allow 10443/tcp

Restrict access by IP address

Only allow your IP(s) to access Webmin:

  1. Webmin β†’ Webmin Configuration β†’ IP Access Control
  2. Select “Only allow from listed addresses”
  3. Enter your home/office IP addresses
  4. Save

Enable Two-Factor Authentication

  1. Webmin β†’ Webmin β†’ Webmin Users β†’ Your username
  2. Two-factor authentication β†’ Google Authenticator
  3. Scan the QR code with your authenticator app
  4. Save

Configure session timeout

  1. Webmin β†’ Webmin Configuration β†’ Authentication
  2. Set “Timeout for password protected pages” to 15 minutes
  3. Enable “Block failed logins” after 5 attempts

Disable unused Webmin modules

Webmin comes with modules you may never use. Disable them to reduce attack surface:

  1. Webmin β†’ Webmin β†’ Webmin Modules
  2. Uncheck modules irrelevant to your use case (DHCP, printers, NFS, etc.)

Key Webmin Modules for VPS Management

System β†’ Disk and Network Filesystems

View mounted filesystems, disk usage per partition, and inode usage. Quickly spot which mount point is filling up.

System β†’ Users and Groups

Create system users, set passwords, manage group memberships, and configure sudo access β€” all from a form instead of command line.

System β†’ Scheduled Cron Jobs

View and manage all cron jobs for all users in one place. Add, edit, or delete jobs with a visual schedule editor.

System β†’ System Logs

Browse syslog, auth.log, nginx logs, and application logs in a searchable browser interface. Filter by date and keyword.

Servers β†’ Nginx Webserver

Manage Nginx server blocks, virtual hosts, and configuration files without leaving the browser. Restart, reload, and test configuration with buttons.

Servers β†’ MySQL Database Server

Create databases and users, browse tables, run SQL queries, and import/export databases β€” a lightweight alternative to phpMyAdmin.

Networking β†’ Linux Firewall

Manage iptables rules with a visual interface. Add, reorder, enable, and disable rules without memorizing iptables syntax.

Tools β†’ File Manager

Browser-based file manager with upload, download, edit, permissions, and ownership control. Useful for quick file edits without SFTP.

System β†’ Software Package Updates

See available system updates and install them from the browser. Equivalent to apt upgrade with a point-and-click interface.


Step 7: Install Virtualmin (Web Hosting Module)

If you want to use Webmin for web hosting (create hosting accounts, manage domains and email for clients), add the Virtualmin module:

# Download and run the Virtualmin installer
wget -O install.sh https://software.virtualmin.com/gpl/scripts/virtualmin-install.sh
sudo bash install.sh --bundle LEMP

Virtualmin transforms Webmin into a web hosting control panel similar to cPanel β€” free, with domain management, email accounts, FTP, and database creation per hosting account.


Step 8: Webmin via Nginx Reverse Proxy (Recommended)

Instead of exposing Webmin’s built-in server on a non-standard port, proxy it through Nginx on a subdomain:

sudo nano /etc/nginx/sites-available/webmin.yourdomain.com
server {
    listen 80;
    server_name webmin.yourdomain.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    server_name webmin.yourdomain.com;

    ssl_certificate /etc/letsencrypt/live/webmin.yourdomain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/webmin.yourdomain.com/privkey.pem;

    # Restrict to your IP only
    allow YOUR_HOME_IP;
    deny all;

    location / {
        proxy_pass https://127.0.0.1:10000;
        proxy_ssl_verify off;  # Allow self-signed cert on Webmin
        proxy_http_version 1.1;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_read_timeout 300s;
    }
}
sudo ln -s /etc/nginx/sites-available/webmin.yourdomain.com \
           /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
sudo certbot --nginx -d webmin.yourdomain.com

Now access Webmin at https://webmin.yourdomain.com β€” through Nginx’s SSL, IP restriction, and proper certificate. You can also close port 10000 in UFW entirely.


Keeping Webmin Updated

# Update Webmin to latest version
sudo apt update
sudo apt upgrade webmin -y

# Or update from within Webmin:
# Webmin β†’ Webmin Configuration β†’ Upgrade Webmin

Final Thoughts

Webmin makes Linux VPS management accessible without sacrificing control. You get a comprehensive browser-based interface for every important server function β€” while the underlying server remains a standard Linux environment that you can also manage via SSH at any time. It’s a complement to the command line, not a replacement.

For non-developers who need to manage a VPS, or for developers who prefer a GUI for repetitive tasks like user management and log browsing, Webmin delivers genuine productivity value at zero cost.

Fast β€’ Reliable β€’ Affordable VPS - DO It Now!

Get top VPS hosting with VPS.DO’s fast, low-cost plans. Try risk-free with our 7-day no-questions-asked refund and start today!