openSUSE

How To Install Virtualmin on openSUSE

Install Virtualmin on openSUSE

Managing multiple websites from a single server requires robust control panel software. Virtualmin stands as one of the most powerful open-source web hosting control panels available for Linux systems, offering comprehensive domain management, email configuration, database administration, and SSL certificate handling through an intuitive web interface. However, installing Virtualmin on openSUSE presents unique challenges compared to mainstream distributions like Ubuntu or CentOS.

openSUSE users must understand that this distribution falls under Grade B support according to Virtualmin’s official documentation. This classification means automatic installation scripts may not function reliably, requiring manual configuration and intermediate-to-advanced Linux knowledge. Despite these challenges, successfully deploying Virtualmin on openSUSE Leap or Tumbleweed delivers a cost-effective hosting solution capable of managing unlimited virtual servers, email accounts, and databases from a single interface.

This comprehensive guide walks through every step required to install and configure Virtualmin on openSUSE systems. From initial system preparation and dependency installation to post-configuration security hardening and performance optimization, readers will gain the knowledge needed to deploy a production-ready web hosting environment.

What is Virtualmin?

Virtualmin represents a free, open-source web hosting control panel built upon the Webmin framework. The software provides system administrators with centralized management capabilities for multiple virtual servers, domains, and hosting accounts through a browser-based interface. Two versions exist: Virtualmin GPL (completely free) and Virtualmin Professional (commercial version with additional features and priority support).

The control panel excels at automating routine hosting tasks that would otherwise require extensive command-line expertise. Key features include comprehensive domain and subdomain management, complete email server configuration with spam filtering and virus scanning, integrated DNS management, automated SSL/TLS certificate provisioning through Let’s Encrypt, MySQL and PostgreSQL database administration, FTP user management, web-based file operations, and scheduled backup systems.

Virtualmin benefits hosting providers, web developers, and system administrators by reducing operational complexity. The software eliminates repetitive manual configurations while providing granular control over server resources. Compared to commercial alternatives like cPanel or Plesk, Virtualmin offers comparable functionality without licensing fees. This makes it particularly attractive for small businesses, development environments, and multi-client hosting scenarios where budget constraints exist.

Understanding openSUSE Compatibility

Virtualmin classifies openSUSE as a Grade B supported operating system, creating important implications for installation procedures. Grade B designation indicates limited official testing, absence of fully automated installation scripts, requirement for manual package configuration, and primarily community-driven support channels. This contrasts sharply with Grade A systems like Debian, Ubuntu, Rocky Linux, and AlmaLinux, which receive comprehensive automated installation support and extensive testing by Virtualmin developers.

The manual installation approach becomes necessary because openSUSE uses different package management systems, file system layouts, and service configurations compared to Debian or Red Hat derivatives. While openSUSE’s Zypper package manager operates reliably, Virtualmin’s automated scripts primarily target apt and yum/dnf ecosystems.

openSUSE offers two primary release models. Leap provides fixed-release stability with predictable update cycles, making it ideal for production hosting environments. Tumbleweed delivers rolling-release architecture with cutting-edge packages, better suited for testing and development scenarios. Production deployments should prioritize Leap 15.3 or newer versions to ensure package stability and long-term support.

Installing Virtualmin on openSUSE requires realistic expectations. The process demands more technical knowledge than Grade A distributions. Users must prepare for potential package conflicts, manual dependency resolution, and configuration adjustments. However, experienced Linux administrators will find the manual approach provides superior control and deeper system understanding.

System Requirements

Successful Virtualmin deployment depends on meeting specific hardware and software prerequisites. Memory represents the most critical resource constraint. While Virtualmin technically operates with 1 GB RAM, this configuration severely limits functionality and should be avoided for production use. Systems hosting a single website should provision at least 2 GB RAM. Multi-site hosting environments require 4 GB or more for optimal performance.

Processor requirements remain modest. A single CPU core suffices for minimal installations, though dual-core processors deliver noticeably better responsiveness. Storage needs vary based on hosting requirements, but fresh installations should allocate minimum 10 GB free space. Actual hosting environments require substantially more depending on website sizes, email storage, and backup retention policies.

Network configuration demands careful attention. Static IP addresses or properly configured Fully Qualified Domain Names (FQDN) prevent numerous configuration headaches. Multiple ports require accessibility: port 10000 for Webmin/Virtualmin interface, ports 80 and 443 for HTTP/HTTPS traffic, ports 20-21 for FTP services, port 22 for SSH administration, ports 25, 110, 143, 587, 993, and 995 for email services, and port 53 if running DNS servers.

Software prerequisites include fresh openSUSE installations (Leap 15.3 or newer, or Tumbleweed). Pre-existing web servers, control panels, or conflicting packages cause installation failures. Root access or sudo privileges remain mandatory throughout the installation process. Systems with limited RAM should configure swap space before proceeding with Virtualmin installation.

Pre-Installation Preparation

Proper system preparation prevents installation failures and reduces troubleshooting time. Begin by updating all system packages to their latest versions. Open a terminal session and execute:

sudo zypper update

This command synchronizes package repositories and applies security patches. The update process may take several minutes depending on system age and internet connection speed.

Hostname configuration critically impacts Virtualmin functionality. Check the current hostname:

hostnamectl

Set a proper FQDN that differs from domains hosted in Virtualmin:

sudo hostnamectl set-hostname server.example.com

Edit the /etc/hosts file to include proper hostname mapping:

sudo nano /etc/hosts

Add entries matching your server’s IP address to the FQDN and short hostname. Never use a domain name for the server hostname that will later be hosted as a virtual server in Virtualmin.

Identify and disable conflicting services before installation. Check for existing web servers:

systemctl status apache2
systemctl status nginx

If either service runs, stop and disable them:

sudo systemctl stop apache2 && sudo systemctl disable apache2

Existing database servers require similar treatment. Check MySQL or MariaDB status and stop them if present. Remove any pre-installed control panels completely as they create irresolvable conflicts.

Firewall configuration ensures proper service accessibility. openSUSE typically uses firewalld. Verify firewall status:

sudo firewall-cmd --state

Open essential ports for Virtualmin operation:

sudo firewall-cmd --permanent --add-port=10000/tcp
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --reload

Systems with limited RAM benefit from swap file configuration. Check current swap:

free -h

If swap appears insufficient, create additional swap space. Finally, create system snapshots using openSUSE’s Snapper tool. This enables rollback if installation encounters problems.

Installing Required Dependencies

openSUSE’s Zypper package manager handles dependency installation efficiently. Virtualmin requires specific packages that may not be present on minimal installations. Perl forms the foundation of Webmin and Virtualmin, requiring core Perl and essential modules:

sudo zypper install perl perl-Net-SSLeay perl-Crypt-SSLeay perl-LWP-Protocol-https

These Perl modules enable secure communications and HTTP operations within Virtualmin. Web server installation comes next. Apache remains the most common choice:

sudo zypper install apache2 apache2-mod_php8

Alternatively, Nginx users should install appropriate Nginx packages. Note that choosing Nginx requires additional configuration adjustments later.

Database server installation provides essential functionality for web applications:

sudo zypper install mariadb mariadb-client

Start and enable the database service:

sudo systemctl start mariadb
sudo systemctl enable mariadb

Secure the database installation:

sudo mysql_secure_installation

Follow the interactive prompts to set root password, remove anonymous users, disable remote root login, and remove test databases. PHP installation supports dynamic web applications:

sudo zypper install php8 php8-mysql php8-gd php8-mbstring php8-openssl php8-curl

Install additional PHP modules based on anticipated hosting requirements. Email functionality requires Postfix:

sudo zypper install postfix postfix-mysql dovecot

OpenSSL and development tools complete the dependency installation:

sudo zypper install openssl openssl-devel bind bind-utils

BIND packages enable DNS server functionality if required. Verify all installations completed successfully before proceeding.

Method 1: Automated Installation with Install Script (Experimental)

Virtualmin provides an automated installation script, though functionality on openSUSE remains experimental due to Grade B support status. This method may fail or require substantial manual corrections. Use this approach only for testing environments, not production servers.

Download the installation script:

wget https://software.virtualmin.com/gpl/scripts/virtualmin-install.sh

Verify successful download:

ls -lh virtualmin-install.sh

Make the script executable:

chmod +x virtualmin-install.sh

Execute the installation script with appropriate flags:

sudo ./virtualmin-install.sh --bundle LAMP --unstable

The --bundle LAMP flag installs Linux, Apache, MySQL, and PHP components. The --unstable flag attempts installation on less-tested distributions like openSUSE. Alternative bundles include LEMP (substituting Nginx for Apache) or Minimal (reducing installed packages for resource-constrained systems).

Installation typically requires 10-20 minutes. The script displays progress information and may prompt for configuration choices. Log files store detailed installation information for troubleshooting if errors occur.

Common failure points include package dependency conflicts, repository unavailability, or incompatible package versions. If the automated script fails, abort the installation and proceed to the manual method. Check service status after script completion:

sudo systemctl status webmin

Attempt accessing the web interface at https://your-server-ip:10000. If connection fails, transition to manual installation provides more reliable results for openSUSE systems.

Post-Installation Configuration

Access Virtualmin’s web interface by opening a browser and navigating to https://your-server-ip:10000. Browsers display security warnings about self-signed SSL certificates. This warning is expected and safe to bypass for initial configuration. Click through the warning to reach the login page.

Login using root credentials (username: root, password: your server’s root password). First login triggers the Post-Installation Wizard, which configures essential Virtualmin settings. The wizard presents several configuration screens requiring careful attention.

Install Virtualmin on openSUSE

Memory usage options determine which services Virtualmin enables. Systems with 2+ GB RAM can select “Large system” to enable all features. Servers with limited memory should choose “Small system” to disable resource-intensive services like ClamAV virus scanning. Preload libraries option improves performance on systems with adequate memory by keeping frequently-used code in RAM.

Virus scanning configuration enables ClamAV for email attachment scanning. Enable this feature only on systems with 2+ GB RAM, as virus scanning consumes substantial resources. Spam filtering through SpamAssassin provides email protection with moderate resource usage.

MySQL/MariaDB password configuration sets the database root password. Choose a strong password combining uppercase, lowercase, numbers, and special characters. Store this password securely as it controls database access.

Database size settings optimize MySQL/MariaDB memory allocation. Large installations support more databases and concurrent connections but consume more RAM. Primary nameserver configuration specifies the DNS server for domain resolution. Use your ISP’s DNS servers or public DNS like 8.8.8.8 unless running local DNS.

After wizard completion, Virtualmin performs automatic system configuration checks. Navigate to System Settings → Re-Check Configuration to verify all services function correctly. Address any warnings or errors displayed. Common openSUSE warnings relate to minor configuration differences from Grade A systems but typically don’t prevent functionality.

Basic settings customization improves operational efficiency. Navigate to System Settings → Virtualmin Configuration to access global settings. Configure default server templates, bandwidth monitoring preferences, email relay settings, automated backup schedules, and SSL certificate handling preferences.

Create a test virtual server to verify functionality. Click “Create Virtual Server” and configure a test domain. This process validates that all services integrate correctly and identifies any remaining configuration issues. Test website access, email functionality, and FTP connections to ensure complete operational capability.

Firewall Configuration for Virtualmin

Comprehensive firewall configuration balances security with accessibility. Virtualmin requires multiple ports for complete functionality. Port 10000 provides access to the Webmin/Virtualmin control panel interface. Web traffic utilizes port 80 (HTTP) and port 443 (HTTPS). FTP services operate on ports 20-21. SSH administration requires port 22.

Email services demand several ports. Port 25 handles SMTP outgoing email. Port 110 supports POP3 incoming email. Port 143 provides IMAP access. Port 587 serves SMTP submission for authenticated users. Ports 993 (IMAPS) and 995 (POP3S) enable secure encrypted email access. DNS servers require port 53 if hosting authoritative DNS records.

Configure firewalld to permit required services:

sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --permanent --add-port=10000/tcp
sudo firewall-cmd --permanent --add-service=smtp
sudo firewall-cmd --permanent --add-service=pop3
sudo firewall-cmd --permanent --add-service=imap
sudo firewall-cmd --permanent --add-port=587/tcp
sudo firewall-cmd --permanent --add-port=993/tcp
sudo firewall-cmd --permanent --add-port=995/tcp
sudo firewall-cmd --reload

List all active firewall rules to verify configuration:

sudo firewall-cmd --list-all

Older openSUSE versions using SuSEfirewall2 require different configuration approaches. Use YaST’s firewall module for graphical configuration, or manually edit configuration files in /etc/sysconfig/. Test port accessibility using online port checking services or local telnet/nc commands to verify external connectivity.

Security Hardening

Default Virtualmin installations require security enhancements before production deployment. Change the default Webmin port from 10000 to a non-standard port to reduce automated attack attempts. Navigate to Webmin → Webmin Configuration → Ports and Addresses. Modify the port number and update firewall rules accordingly.

Two-factor authentication adds critical login security. Install required authentication modules through Webmin → Webmin Configuration → Two-Factor Authentication. Configure 2FA for the root account and save backup recovery codes securely in case authentication devices become unavailable.

Replace self-signed SSL certificates with trusted certificates from Let’s Encrypt. Navigate to Webmin → Webmin Configuration → SSL Encryption. Use Virtualmin’s integrated Let’s Encrypt support to obtain and install free trusted certificates. Configure automatic renewal to prevent certificate expiration.

IP-based access control restricts control panel access to known networks. Navigate to Webmin → Webmin Configuration → IP Access Control. Whitelist trusted IP addresses while blocking access from untrusted networks. This dramatically reduces attack surface.

Creating dedicated administrative users improves security over direct root login. Add a standard user account through System → Users and Groups. Grant sudo privileges and configure Webmin to accept this account. Test functionality thoroughly before disabling direct root login.

Fail2Ban installation provides automated intrusion prevention. Install via Zypper:

sudo zypper install fail2ban

Configure jails for Webmin, SSH, and email services by editing /etc/fail2ban/jail.local. Set appropriate ban times and retry thresholds. Monitor blocked IP addresses regularly to ensure legitimate users aren’t accidentally banned.

Enable automatic Webmin updates through Webmin → Webmin Configuration → Webmin Modules Update. Configure system update notifications to stay informed about security patches. Schedule regular maintenance windows for applying system updates without disrupting hosted services.

Database security requires removing anonymous users and disabling remote root access. The mysql_secure_installation script handles basic hardening, but verify settings periodically. Use strong passwords for all database accounts and implement database backups separate from web content backups.

Troubleshooting Common Issues

Port 10000 accessibility problems represent the most frequent installation issue. Verify Webmin service runs correctly:

sudo systemctl status webmin

Check firewall rules permit port 10000 traffic. Confirm the service listens on the correct port using netstat or ss commands. Review systemd journal logs for error messages:

sudo journalctl -u webmin

SELinux or AppArmor policies may block connections on some systems. Temporarily set SELinux to permissive mode or check AppArmor profiles if connection issues persist despite correct service and firewall configuration.

SSL certificate errors occur when browsers reject self-signed certificates. Each browser requires specific procedures to bypass warnings. Chrome users click “Advanced” then “Proceed to site.” Firefox users click “Advanced,” then “Accept the Risk and Continue.” Installing proper Let’s Encrypt certificates eliminates these warnings permanently.

Repository not found errors indicate incorrect repository URLs or version mismatches. Verify the baseurl in /etc/zypp/repos.d/virtualmin.repo matches your openSUSE version. Check internet connectivity and DNS resolution. Try alternative repository URLs or contact Virtualmin community forums for openSUSE-specific repository locations.

Package dependency conflicts arise when existing packages clash with Virtualmin requirements. Review Zypper output carefully to identify conflicting packages. Remove conflicts when safe, or use --force flags cautiously. Library version mismatches may require finding compatible package versions or compiling from source.

Service startup failures require investigating specific service logs. Apache failures often indicate configuration syntax errors. Test configuration:

sudo apachectl configtest

MariaDB problems appear in /var/log/mysql/ logs. Postfix email issues write to /var/log/mail. Examine systemd service status output for clues about failure causes.

Memory and performance issues manifest as slow response times or service crashes. Disable unnecessary services to conserve RAM. Configure appropriate swap space. Adjust MySQL memory settings in /etc/my.cnf. Enable Virtualmin’s minimal mode on resource-constrained systems. Monitor resource usage with htop to identify bottlenecks.

Virtual server creation failures typically relate to DNS configuration, missing services, or permission issues. Review error messages in Virtualmin logs. Verify all required services run correctly. Check file permissions in /home directory. Examine configuration templates for errors.

Community support resources provide valuable assistance. The Virtualmin community forum hosts active discussions about openSUSE-specific challenges. openSUSE mailing lists offer distribution-specific expertise. IRC channels provide real-time assistance. GitHub issue trackers document known bugs and workarounds. Official documentation covers standard configurations applicable across distributions.

Optimizing Virtualmin Performance on openSUSE

Apache performance optimization begins with selecting appropriate Multi-Processing Modules. Enable MPM event for improved concurrent connection handling:

sudo a2enmod mpm_event

Configure worker and connection limits in Apache configuration files based on available memory. Enable caching modules like mod_cache to reduce server load. Configure compression through mod_deflate to reduce bandwidth usage and improve page load times.

Database optimization dramatically improves overall performance. Tune MySQL/MariaDB settings in /etc/my.cnf according to available RAM. Allocate InnoDB buffer pool to approximately 70% of available memory on dedicated database servers. Enable query cache for frequently-executed queries. Schedule regular optimization and repair operations through Virtualmin’s scheduled tasks.

PHP performance benefits from PHP-FPM configuration. Install and configure PHP-FPM as Apache’s PHP handler. Enable OpCache to cache compiled PHP bytecode, eliminating repeated compilation overhead. Adjust PHP memory limits in php.ini based on application requirements. Increase upload size limits appropriately for content management systems requiring large file uploads.

Email performance optimization reduces resource consumption while maintaining functionality. Configure Postfix queue management to prevent mail queue buildup. Optimize spam filter settings to balance accuracy against CPU usage. Disable unnecessary email features on systems not providing email services. Monitor mail queues regularly to identify delivery problems or spam attacks.

System monitoring within Virtualmin provides operational visibility. Enable bandwidth monitoring to track domain traffic. Configure automated backup schedules with appropriate retention policies. Implement log rotation to prevent log files from consuming excessive disk space. Schedule regular cleanup tasks to remove temporary files and optimize databases. Establish update schedules that balance security needs against operational stability.

Resource limits prevent individual virtual servers from consuming excessive resources. Configure per-domain bandwidth limits to prevent traffic spikes from affecting other hosted sites. Implement disk quotas to prevent storage overconsumption. Set process limits for virtual server accounts. Configure memory limits through process control mechanisms.

Congratulations! You have successfully installed Virtualmin. Thanks for using this tutorial for installing the Virtualmin web hosting control panel on your openSUSE Linux system. For additional help or useful information, we recommend you check the official Virtualmin website.

VPS Manage Service Offer
If you don’t have time to do all of this stuff, or if this is not your area of expertise, we offer a service to do “VPS Manage Service Offer”, starting from $10 (Paypal payment). Please contact us to get the best deal!

r00t

r00t is an experienced Linux enthusiast and technical writer with a passion for open-source software. With years of hands-on experience in various Linux distributions, r00t has developed a deep understanding of the Linux ecosystem and its powerful tools. He holds certifications in SCE and has contributed to several open-source projects. r00t is dedicated to sharing her knowledge and expertise through well-researched and informative articles, helping others navigate the world of Linux with confidence.
Back to top button