Wie man Virtualmin auf Ubuntu 22.04 installiert und absichert
Virtualmin ist ein Open-Source Control Panel für Linux- und UNIX-Server. Es ermöglicht Administratoren die Verwaltung von Domains, E-Mail-Konten, Datenbanken, DNS und Anwendungen über eine zentrale Oberfläche. Virtualmin unterstützt verschiedene Webserver, Datenbanken und Mail-Systeme und bietet zusätzlich Monitoring- sowie Benachrichtigungsfunktionen für Serverressourcen und Website-Performance.
Diese Anleitung zeigt, wie man Virtualmin auf Ubuntu 22.04 installiert, eine virtuelle Host-Webanwendung einrichtet und sie mit Let’s Encrypt SSL-Zertifikaten absichert.
Voraussetzungen
- Ein Ubuntu 22.04 Server.
- Ein A-Record für die Domain, der auf die IP-Adresse des Servers zeigt, z. B. virtualmin.example.com.
- SSH-Zugang als Nicht-Root-Benutzer mit sudo-Rechten.
- Ein vollständig aktualisierter Server.
- Eine 2FA-App wie Google Authenticator auf deinem Gerät installiert.
Virtualmin installieren
Da Virtualmin nicht in den Standard-Repositories von Ubuntu 22.04 verfügbar ist, muss das offizielle Installationsskript heruntergeladen und ausgeführt werden. Gehe wie folgt vor:
Server-Hostname festlegen
Ersetze die Beispiel-Domain durch deine eigene:
$ sudo hostnamectl set-hostname virtualmin.example.com
Das Virtualmin-Installationsskript ausführen
Mit folgendem Befehl installierst du die Open-Source (GPL) Edition von Virtualmin mit einem LAMP-Stack:
$ sudo sh -c "$(curl -fsSL https://software.virtualmin.com/gpl/scripts/virtualmin-install.sh)" -- --bundle LAMP
Bestätige die Installation mit Y. Die Einrichtung dauert etwa 5–10 Minuten. Nach Abschluss erscheint:
[SUCCESS] Installation Complete!
[SUCCESS] Wenn keine Fehler aufgetreten sind, ist Virtualmin bereit.
[SUCCESS] Zugriff über https://virtualmin.example.com:10000 (oder https://192.0.2.1:10000).
Virtualmin mit Let’s Encrypt absichern
So richtest du Let’s Encrypt SSL-Zertifikate ein, um die Virtualmin-Oberfläche zu schützen:
Apache-Dienst stoppen
$ sudo systemctl stop apache2
Certbot installieren
Installiere den Let’s Encrypt-Client zur Verwaltung von SSL-Zertifikaten:
$ sudo apt install certbot
Ein neues SSL-Zertifikat anfordern
Ersetze Domain und E-Mail durch deine Werte:
$ sudo certbot certonly --standalone -d virtualmin.example.com -m virtualmin@example.com --agree-tos
Falls bereits ein Zertifikat existiert, zeigt Certbot eine Auswahl:
- Das bestehende Zertifikat behalten
- Das Zertifikat erneuern und ersetzen
Wähle 1, um das aktuelle Zertifikat zu behalten. Wenn keine Auswahl erscheint, wird ein neues Zertifikat ausgestellt. Folge den Anweisungen bis zur Bestätigung.
Zertifikats-Bundle erstellen
Kombiniere Zertifikat und privaten Schlüssel und richte Webmin so ein, dass es die Datei verwendet:
$ sudo cat /etc/letsencrypt/live/virtualmin.example.com/fullchain.pem /etc/letsencrypt/live/virtualmin.example.com/privkey.pem | sudo tee /etc/webmin/ssl.pem
miniserv.conf bearbeiten
sudo nano /etc/webmin/miniserv.conf
Folgende Zeile anpassen:
keyfile=/etc/webmin/ssl.pem
Webmin neu starten
$ sudo systemctl restart webmin
Webmin-Status prüfen
$ sudo systemctl status webmin
Die Ausgabe sollte ähnlich aussehen:
● webmin.service - Webmin server daemon
     Loaded: loaded (/lib/systemd/system/webmin.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2025-04-29 08:53:57 UTC; 5s ago
   Main PID: 58333 (miniserv.pl)
      Tasks: 1 (limit: 9385)
     Memory: 88.0M
     CGroup: /system.slice/webmin.service
             └─58333 /usr/bin/perl /usr/share/webmin/miniserv.pl /etc/webmin/miniserv.conf
Apache neu starten
$ sudo systemctl start apache2
Apache-Dienst überprüfen
$ sudo systemctl status apache2
Die Ausgabe sollte so ähnlich aussehen:
● apache2.service - The Apache HTTP Server
     Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2025-04-29 08:56:30 UTC; 4s ago
       Docs: https://httpd.apache.org/docs/2.4/
   Main PID: 58415 (apache2)
      Tasks: 106 (limit: 9385)
     Memory: 11.2M
     CGroup: /system.slice/apache2.service
             ├─58415 /usr/sbin/apache2 -k start
             ├─58416 /usr/sbin/apache2 -k start
             ├─58417 /usr/sbin/apache2 -k start
             └─58418 /usr/sbin/apache2 -k start
Firewall-Regeln einrichten
Virtualmin verwendet das firewalld-Tool zur Verwaltung von Firewall-Einstellungen. So lässt du die benötigten Ports und Dienste zu:
firewalld-Dienst prüfen
Überprüfe, ob der Dienst läuft:
$ sudo systemctl status firewalld
Beispielausgabe:
● firewalld.service - firewalld - dynamic firewall daemon
     Loaded: loaded (/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
     Active: active (running) since Sun 2025-04-06 05:53:56 UTC; 1h 20min ago
       Docs: man:firewalld(1)
   Main PID: 46542 (firewalld)
      Tasks: 2 (limit: 9415)
     Memory: 25.8M
     CGroup: /system.slice/firewalld.service
             └─46542 /usr/bin/python3 /usr/sbin/firewalld --nofork --nopid
Zugelassene Ports anzeigen
$ sudo firewall-cmd --zone=public --list-ports
Beispielausgabe:
20/tcp 2222/tcp 10000-10100/tcp 20000/tcp 49152-65535/tcp
Zugelassene Dienste anzeigen
$ sudo firewall-cmd --zone=public --list-services
Beispielausgabe:
dhcpv6-client dns dns-over-tls ftp http https imap imaps mdns pop3 pop3s smtp smtp-submission smtps ssh
Zugriff auf Virtualmin
Standardmäßig läuft Virtualmin auf dem TCP-Port 10000. So greifst du auf die Oberfläche zu und erstellst einen neuen virtuellen Server:
- Öffne im Browser: https://virtualmin.example.com:10000
- Melde dich mit deinen sudo-Benutzerdaten an.
- Klicke im Post-Installation Wizard auf Next, um die Basiskonfiguration abzuschließen.
- Wähle im linken Menü Dashboard, um die Systemübersicht aufzurufen.
2-Faktor-Authentifizierung aktivieren
Zur Erhöhung der Sicherheit kannst du 2FA in Virtualmin mit Google Authenticator aktivieren:
- Scrolle in der linken Navigation nach unten und klicke auf deinen Benutzernamen.
- Erweitere den Bereich Security and limits options.
- Klicke auf Enable Two-Factor For User.
- Klicke auf Enroll For Two-Factor Authentication.
- Scanne den angezeigten QR-Code mit deiner Authenticator-App.
- Melde dich über das linke Menü bei Virtualmin ab.
- Melde dich erneut mit deinen Nicht-Root-Zugangsdaten an.
- Gib den von deiner App generierten Token ein, um die Anmeldung zu bestätigen.
Virtualmin über die Weboberfläche konfigurieren
Bei der erneuten Anmeldung fragt Virtualmin nach einem 2FA-Token. Gib den Code aus deiner Authenticator-App ein und klicke auf Verify, um Zugang zur Administrationsoberfläche zu erhalten.
Fazit
In diesem Tutorial hast du Virtualmin installiert, eine Website mit Let’s Encrypt-SSL (HTTPS) eingerichtet und die Zwei-Faktor-Authentifizierung aktiviert. Zusätzlich wurden Firewall-Regeln konfiguriert und unnötige Ports geschlossen. Weitere Informationen findest du in der offiziellen Virtualmin-Dokumentation.


