Server Setup · 6 min read · Sep 08, 2025

ISPConfig Perfekte Multiserver-Einrichtung auf Ubuntu 20.04 und Debian 10

Dieses Tutorial führt Sie durch die Installation Ihrer eigenen ISPConfig 3 Multiserver-Einrichtung mit dedizierten Servern für das Panel, Web, DNS, Mail und Webmail. Sowohl der DNS- als auch der Mailserver werden einen Spiegelserver für Redundanz haben. Sie können später problemlos weitere Server eines bestimmten Typs hinzufügen.

Der offizielle Auto-Installer von ISPConfig wird verwendet, um die Server einzurichten. Debian 10 wird als Betriebssystem verwendet. Der Leitfaden wurde auch mit Ubuntu 20.04.2 getestet.

Sie können hier mehr über den Auto-Installer lesen.

1. Vorbemerkung

Dies werden die Hosts sein, die wir installieren:

host         FQDN                     IP  
panel       panel.example.com       10.0.64.12  
web01       web01.example.com       10.0.64.13  
mx1         mx1.example.com         10.0.64.14  
mx2         mx2.example.com         10.0.64.15  
ns1         ns1.example.com         10.0.64.16  
ns2         ns2.example.com         10.0.64.17  
webmail     webmail.example.com     10.0.64.18

Wir werden Beispiel-Hostnamen, IP-Adressen und IP-Bereiche verwenden. Stellen Sie sicher, dass Sie diese entsprechend in Ihren Befehlen/Konfigurationen ändern.

Alle Server befinden sich im selben privaten Netzwerk, haben jedoch ihre eigene öffentliche IP. Wenn Ihre Server kein gemeinsames lokales Netzwerk haben, verwenden Sie deren öffentliche IPv4-Adressen.

Bevor Sie mit der Installation eines Servers beginnen, richten Sie einen A- und gegebenenfalls AAAA-Eintrag ein, der auf die öffentliche IP-Adresse Ihres Servers verweist. Wenn der Hostname beispielsweise panel.example.com ist und die öffentliche IP 11.22.33.44 beträgt, sollten Sie einen A-Eintrag für panel.example.com einrichten, der auf 11.22.33.44 verweist. Jeder Server sollte seine eigene öffentliche IP und seinen eigenen Hostnamen haben. **

2. Installation des Master-Servers

Melden Sie sich als Root an oder führen Sie

su -

aus, um der Root-Benutzer auf Ihrem Server zu werden, bevor Sie fortfahren. WICHTIG: Sie müssen ‘su -‘ und nicht nur ‘su’ verwenden, da sonst Ihre PATH-Variable von Debian falsch gesetzt wird.

2.1 Konfigurieren des Hostnamens und der Hosts

Der Hostname Ihres Servers sollte ein Subdomain wie “panel.example.com” sein. Verwenden Sie keinen Domainnamen ohne einen Subdomain-Teil wie “example.com” als Hostnamen, da dies später Probleme mit Ihrer Mail-Einrichtung verursachen wird. Zuerst sollten Sie den Hostnamen in /etc/hosts überprüfen und ihn bei Bedarf ändern. Die Zeile sollte lauten: “IP-Adresse - Leerzeichen - vollständiger Hostname inkl. Domain - Leerzeichen - Subdomain-Teil”. Für unseren Hostnamen panel.example.com sollte die Datei so aussehen (einige Zeilen können unterschiedlich sein, es kann je nach Hosting-Anbieter variieren):

nano /etc/hosts
127.0.0.1 localhost.localdomain   localhost  
# Diese Zeile sollte auf jedem Knoten auf den richtigen Servernamen geändert werden:  
127.0.1.1 panel.example.com panel  
# Diese Zeilen sind auf jedem Knoten gleich:
10.0.64.12 panel.example.com panel  
10.0.64.13 web01.example.com web01  
10.0.64.14 mx1.example.com mx1  
10.0.64.15 mx2.example.com mx2  
10.0.64.16 ns1.example.com ns1  
10.0.64.17 ns2.example.com ns2  
10.0.64.18 webmail.example.com webmail

# Die folgenden Zeilen sind wünschenswert für IPv6-fähige Hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

Wie Sie sehen können, haben wir auch die Hostnamen unserer anderen Server hinzugefügt, damit sie später über das interne Netzwerk kommunizieren können.

Bearbeiten Sie dann die Datei /etc/hostname:

nano /etc/hostname

Sie sollte nur den Subdomain-Teil enthalten, in unserem Fall:

panel

Starten Sie schließlich den Server neu, um die Änderung anzuwenden:

systemctl reboot

Melden Sie sich erneut an und überprüfen Sie, ob der Hostname jetzt mit diesen Befehlen korrekt ist:

hostname  
hostname -f

Die Ausgabe sollte wie folgt aussehen:

root@panel:~$ hostname  
panel  
root@panel:~$ hostname -f  
panel.example.com

Jetzt können wir den Auto-Installer ausführen, um alle notwendigen Pakete und ISPConfig zu installieren:

wget -O - https://get.ispconfig.org | sh -s -- --no-mail --no-dns --use-php=system

Nach einiger Zeit sehen Sie:

WARNING! Dieses Skript wird Ihren gesamten Server neu konfigurieren!  
Es sollte auf einem frisch installierten Server ausgeführt werden und alle aktuellen Konfigurationen, die Sie vorgenommen haben, werden höchstwahrscheinlich verloren gehen!  
Geben Sie 'ja' ein, wenn Sie wirklich fortfahren möchten:

Antworten Sie mit “ja” und drücken Sie die Eingabetaste. Der Installer wird jetzt gestartet.

Wenn der Installer fertig ist, zeigt er Ihnen das ISPConfig-Admin- und MySQL-Root-Passwort wie folgt an:

[INFO] Ihr ISPConfig-Admin-Passwort lautet: 5GvfSSSYsdfdYC  
[INFO] Ihr MySQL-Root-Passwort lautet: kkAkft82d!kafMwqxdtYs

Stellen Sie sicher, dass Sie diese Informationen zusammen mit dem Server, für den sie bestimmt sind, aufschreiben, da Sie sie später benötigen.

2.2 Einrichten der Remote-MySQL-Benutzer für unsere Slave-Server

Wir werden uns bei MySQL anmelden, um den anderen Servern während der Installation zu erlauben, sich mit der ISPConfig-Datenbank auf diesem Knoten zu verbinden, indem wir MySQL-Root-Benutzerdatensätze in der Master-Datenbank für jeden Slave-Server-Hostname und jede IP-Adresse hinzufügen.

Führen Sie im Terminal aus:

mysql -u root -p

Geben Sie Ihr MySQL-Passwort ein und führen Sie dann die folgenden Befehle aus:

CREATE USER 'root'@'10.0.64.13' IDENTIFIED BY 'myrootpassword';  
GRANT ALL PRIVILEGES ON * . * TO 'root'@'10.0.64.13' IDENTIFIED BY 'myrootpassword' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;
CREATE USER 'root'@'10.0.64.14' IDENTIFIED BY 'myrootpassword';  
GRANT ALL PRIVILEGES ON * . * TO 'root'@'10.0.64.14' IDENTIFIED BY 'myrootpassword' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;
CREATE USER 'root'@'10.0.64.15' IDENTIFIED BY 'myrootpassword';  
GRANT ALL PRIVILEGES ON * . * TO 'root'@'10.0.64.15' IDENTIFIED BY 'myrootpassword' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;
CREATE USER 'root'@'10.0.64.16' IDENTIFIED BY 'myrootpassword';  
GRANT ALL PRIVILEGES ON * . * TO 'root'@'10.0.64.16' IDENTIFIED BY 'myrootpassword' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;
CREATE USER 'root'@'10.0.64.17' IDENTIFIED BY 'myrootpassword';  
GRANT ALL PRIVILEGES ON * . * TO 'root'@'10.0.64.17' IDENTIFIED BY 'myrootpassword' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;
CREATE USER 'root'@'10.0.64.18' IDENTIFIED BY 'myrootpassword';  
GRANT ALL PRIVILEGES ON * . * TO 'root'@'10.0.64.18' IDENTIFIED BY 'myrootpassword' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;
CREATE USER 'root'@'web01.example.com' IDENTIFIED BY 'myrootpassword';  
GRANT ALL PRIVILEGES ON * . * TO 'root'@'web01.example.com' IDENTIFIED BY 'myrootpassword' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;
CREATE USER 'root'@'mx1.example.com' IDENTIFIED BY 'myrootpassword';  
GRANT ALL PRIVILEGES ON * . * TO 'root'@'mx1.example.com' IDENTIFIED BY 'myrootpassword' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;
CREATE USER 'root'@'mx2.example.com' IDENTIFIED BY 'myrootpassword';  
GRANT ALL PRIVILEGES ON * . * TO 'root'@'mx2.example.com' IDENTIFIED BY 'myrootpassword' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;
CREATE USER 'root'@'ns1.example.com' IDENTIFIED BY 'myrootpassword';  
GRANT ALL PRIVILEGES ON * . * TO 'root'@'ns1.example.com' IDENTIFIED BY 'myrootpassword' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;
CREATE USER 'root'@'ns2.example.com' IDENTIFIED BY 'myrootpassword';  
GRANT ALL PRIVILEGES ON * . * TO 'root'@'ns2.example.com' IDENTIFIED BY 'myrootpassword' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;
CREATE USER 'root'@'webmail.example.com' IDENTIFIED BY 'myrootpassword';  
GRANT ALL PRIVILEGES ON * . * TO 'root'@'webmail.example.com' IDENTIFIED BY 'myrootpassword' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;

In den obigen SQL-Befehlen ersetzen Sie die IP-Adressen (10.0.64.12 - 10.0.64.18) durch die IP-Adressen Ihrer Server, web01.example.com, mx1.example.com, mx2.example.com, ns1.example.com, ns2.example.com und webmail.example.com durch die Hostnamen Ihrer Server und myrootpassword durch das gewünschte Root-Passwort (es ist eine gute Praxis, für jeden Host ein anderes Passwort zu verwenden. Schreiben Sie sie auf, da Sie sie später bei der Installation oder Aktualisierung Ihrer Slave-Server benötigen).

Wenn dies erledigt ist, können Sie MySQL mit:

EXIT;

verlassen.

Sie können sich jetzt bei ISPConfig unter https://panel.example.com:8080 mit dem Benutzernamen admin und dem Passwort, das der Installer Ihnen angezeigt hat, anmelden.

2.3 Einrichten der Firewall

Das Letzte, was zu tun ist, ist, unsere Firewall einzurichten.

Melden Sie sich bei der ISPConfig-Benutzeroberfläche an und gehen Sie zu System -> Firewall. Klicken Sie dann auf “Neuen Firewall-Eintrag hinzufügen”.

Für den Panel-Server müssen wir die folgenden Ports öffnen:

TCP:

22,80,443,8080,8081

Es müssen keine UDP-Ports über die Benutzeroberfläche geöffnet werden.

Wir werden auch Port 3306 öffnen, der für MySQL verwendet wird, aber nur von unserem lokalen Netzwerk aus Sicherheitsgründen. Führen Sie dazu den folgenden Befehl von der CLI aus, nachdem die Änderung vom ISPConfig-Panel propagiert wurde (wenn der rote Punkt verschwunden ist):

ufw allow from 10.0.64.0/24 to any port 3306 proto tcp

Ihr Panel ist jetzt eingerichtet und bereit zur Nutzung.

Im nächsten Schritt werden wir den Webserver installieren.

Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.