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
- Webmin β Webmin β Webmin Configuration
- Click SSL Encryption
- Click Let’s Encrypt tab
- Enter your domain (e.g.,
admin.yourdomain.com) - 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:
- Webmin β Webmin Configuration β Ports and Addresses
- Change “Listen on port” to a custom port (e.g.,
10443) - 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:
- Webmin β Webmin Configuration β IP Access Control
- Select “Only allow from listed addresses”
- Enter your home/office IP addresses
- Save
Enable Two-Factor Authentication
- Webmin β Webmin β Webmin Users β Your username
- Two-factor authentication β Google Authenticator
- Scan the QR code with your authenticator app
- Save
Configure session timeout
- Webmin β Webmin Configuration β Authentication
- Set “Timeout for password protected pages” to 15 minutes
- 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:
- Webmin β Webmin β Webmin Modules
- 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.
- πΊπΈ USA VPS Plans β from $20/month
- ππ° Hong Kong VPS β CN2+BGP routing