Dieses Tutorial führt Sie durch die Installation Ihres eigenen ISPConfig 3-Multiserver-Setups mit dedizierten Servern für Panel, Web, DNS, Mail und Webmail. Sowohl der DNS- als auch der Mailserver verfügen über einen Spiegelserver für Redundanz. 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. Als Betriebssystem kommt Debian 10 zum Einsatz. Die Anleitung wurde auch mit Ubuntu 20.04.2 getestet.
Weitere Informationen zum Auto-Installer finden Sie hier.
1. Vorbemerkung
Dies sind die Hosts, 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 2. 6,1 m> mx2.beispiel.com 10.0.64.15
ns1 ns1.beispiel.com 10.0.64.16
ns2 ns2.beispiel.com 10.0.64.17
webmail >Wir werden Beispiel-Hostnamen, IP-Adressen und IP-Bereiche verwenden. Stellen Sie sicher, dass Sie sie in Ihren Befehlen/Konfigurationen entsprechend ändern.
Alle Server befinden sich im selben privaten Netzwerk, haben aber ihre eigene öffentliche IP. Wenn Ihre Server kein gemeinsames lokales Netzwerk haben, verwenden Sie ihre öffentlichen IPv4-Adressen.
Bevor Sie mit der Installation eines Servers beginnen, richten Sie einen A- und eventuell einen AAAA-Eintrag ein, der auf die Öffentlichkeit verweist IP-Adresse Ihres Servers. Wenn der Hostname beispielsweise panel.example.com und die öffentliche IP 11.22.33.44 lautet, 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 Masterservers
Melden Sie sich als root an oder führen Sie
aussu -um Root-Benutzer auf Ihrem Server zu werden, bevor Sie fortfahren. WICHTIG Hinweis:Sie müssen 'su -' und nicht nur 'su' verwenden, sonst wird Ihre PATH-Variable von Debian falsch gesetzt.
2.1 Konfigurieren Sie den Hostnamen und die Hosts
Der Hostname Ihres Servers sollte eine Subdomain wie "panel.example.com" sein. Verwenden Sie als Hostnamen keinen Domainnamen ohne Subdomain-Anteil wie "example.com", da dies später zu Problemen mit Ihrer E-Mail-Einrichtung führt. Zuerst sollten Sie den Hostnamen in /etc/hosts überprüfen und bei Bedarf ändern. Die Zeile sollte lauten:"IP Address - space - full hostname incl. domain - space - subdomain part". Für unseren Hostnamen panel.example.com sollte die Datei wie folgt aussehen (einige Zeilen können unterschiedlich sein, sie können je nach Hosting-Provider unterschiedlich sein):
nano /etc/hosts127.0.0.1 localhost.localdomain localhost
# Diese Zeile sollte auf jedem Knoten auf den korrekten Servernamen geändert werden:
127.0.1.1 panel.example.com panel
# Diese Zeilen sind die 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 für IPv6 wünschenswert fähige hosts::1 localhost ip6-localhost ip6-loopbackff02::1 ip6-allnodesff02::2 ip6-allroutersWie 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/hostnameSie soll nur den Teil der Subdomain enthalten, in unserem Fall:
PanelStarten Sie abschließend den Server neu, um die Änderung zu übernehmen:
Systemctl-NeustartMelden Sie sich erneut an und überprüfen Sie jetzt mit diesen Befehlen, ob der Hostname korrekt ist:
Hostname
Hostname -fDie Ausgabe soll wie folgt aussehen:
[email protected]:~$ hostname
panel
[email protected]:~$ hostname -f
panel.example.comJetzt können wir den Autoinstaller ausführen, um alle notwendigen Pakete und ISPConfig zu installieren:
wget -O - https://get.ispconfig.org | sh -s -- --no-mail --no-dns --use-php=systemNach einiger Zeit sehen Sie:
WARNUNG! Dieses Skript wird Ihren kompletten 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 „yes“ ein, wenn Sie wirklich fortfahren möchten:Antworten Sie mit „Ja“ und drücken Sie die Eingabetaste. Das Installationsprogramm wird nun gestartet.
Wenn das Installationsprogramm fertig ist, zeigt es Ihnen das ISPConfig-Administrator- und MySQL-Root-Passwort wie folgt:
[INFO] Ihr ISPConfig-Admin-Passwort lautet:5GvfSSSYsdfdYC
[INFO] Ihr MySQL-Root-Passwort lautet:kkAkft82d!kafMwqxdtYsNotieren Sie sich diese Informationen zusammen mit dem Server, für den sie bestimmt sind, da Sie sie später benötigen werden.
2.2 Einrichten der entfernten MySQL-Benutzer für unsere Slave-Server
Wir melden uns bei MySQL an, damit sich die anderen Server während der Installation mit der ISPConfig-Datenbank auf diesem Knoten verbinden können, indem wir MySQL-Root-Benutzereinträge in der Master-Datenbank für jeden Hostnamen und jede IP-Adresse des Slave-Servers hinzufügen.
Führen Sie auf dem Terminal
ausmysql -u root -pGeben Sie Ihr MySQL-Passwort ein und führen Sie dann die folgenden Befehle aus:
ERSTELLEN SIE BENUTZER 'root'@'10.0.64.13' IDENTIFIZIERT DURCH 'myrootpassword';
GEWÄHREN SIE ALLE PRIVILEGIEN AUF * . * AN 'root'@'10.0.64.13' IDENTIFIZIERT DURCH 'myrootpassword' MIT GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;ERSTELLEN SIE BENUTZER 'root'@'10.0.64.14' IDENTIFIZIERT DURCH 'myrootpassword';
GEWÄHREN SIE ALLE PRIVILEGIEN AUF * . * AN 'root'@'10.0.64.14' IDENTIFIZIERT DURCH 'myrootpassword' MIT GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;ERSTELLEN SIE BENUTZER 'root'@'10.0.64.15' IDENTIFIZIERT DURCH 'myrootpassword';
GEWÄHREN SIE ALLE PRIVILEGIEN AUF * . * AN 'root'@'10.0.64.15' IDENTIFIZIERT DURCH 'myrootpassword' MIT GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;ERSTELLEN SIE BENUTZER 'root'@'10.0.64.16' IDENTIFIZIERT DURCH 'myrootpassword';
GEWÄHREN SIE ALLE PRIVILEGIEN AUF * . * AN 'root'@'10.0.64.16' IDENTIFIZIERT DURCH 'myrootpassword' MIT GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;ERSTELLEN SIE BENUTZER 'root'@'10.0.64.17' IDENTIFIZIERT DURCH 'myrootpassword';
GEWÄHREN SIE ALLE PRIVILEGIEN AUF * . * AN 'root'@'10.0.64.17' IDENTIFIZIERT DURCH 'myrootpassword' MIT GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;ERSTELLEN SIE BENUTZER 'root'@'10.0.64.18' IDENTIFIZIERT DURCH 'myrootpassword';
GEWÄHREN SIE ALLE PRIVILEGIEN AUF * . * AN 'root'@'10.0.64.18' IDENTIFIZIERT DURCH 'myrootpassword' MIT 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';
GEWÄHREN SIE ALLE PRIVILEGIEN AUF * . * AN 'root'@'web01.example.com' IDENTIFIZIERT DURCH 'myrootpassword' MIT 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';
GEWÄHREN SIE ALLE PRIVILEGIEN AUF * . * AN 'root'@'mx1.example.com' IDENTIFIZIERT DURCH 'myrootpassword' MIT 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';
GEWÄHREN SIE ALLE PRIVILEGIEN AUF * . * 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';
GEWÄHREN SIE ALLE PRIVILEGIEN AUF * . * AN 'root'@'ns1.example.com' IDENTIFIZIERT DURCH 'myrootpassword' MIT 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';
GEWÄHREN SIE ALLE PRIVILEGIEN AUF * . * AN 'root'@'ns2.example.com' IDENTIFIZIERT DURCH 'myrootpassword' MIT 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';
GEWÄHREN SIE ALLE PRIVILEGIEN AUF * . * 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;Ersetzen Sie in den obigen SQL-Befehlen 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 mit den Hostnamen Ihrer Server und myrootpassword mit dem gewünschten Root-Passwort (es empfiehlt sich, für jeden Host ein anderes Passwort zu verwenden. Notieren Sie sich diese, da Sie sie später benötigen bei der Installation oder Aktualisierung Ihrer Slave-Server).
Wenn dies erledigt ist, können Sie MySQL beenden mit:
BEENDEN;Sie können sich jetzt bei ISPConfig auf https://panel.example.com:8080 mit dem Benutzernamen admin und dem Passwort, das Ihnen der Installer gezeigt hat, anmelden.
2.3 Einrichten der Firewall
Als letztes müssen Sie unsere Firewall einrichten.
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 folgende Ports öffnen:
TCP:
22,80,443,8080,8081Über die Benutzeroberfläche müssen keine UDP-Ports geöffnet werden.
Wir werden auch Port 3306 öffnen, der für MySQL verwendet wird, aber aus Sicherheitsgründen nur von unserem lokalen Netzwerk aus. Führen Sie dazu den folgenden Befehl von der CLI aus, nachdem die Änderung vom ISPConfig-Panel weitergegeben wurde (wenn der rote Punkt verschwunden ist):
ufw erlaubt von 10.0.64.0/24 zu jedem Port 3306 proto tcpIhr Panel ist jetzt eingerichtet und einsatzbereit.
Im nächsten Schritt installieren wir den Webserver.