Server Setup · 7 min read · Nov 03, 2025
Der perfekte Server - Debian 9 (Nginx, BIND, Dovecot, ISPConfig 3.1)
Dieses Tutorial zeigt, wie man einen Debian 9 Server (mit Nginx, BIND, Dovecot) für die Installation von ISPConfig 3.1 vorbereitet und wie man ISPConfig 3.1 installiert. ISPConfig 3 ist ein Webhosting-Kontrollpanel, das es Ihnen ermöglicht, die folgenden Dienste über einen Webbrowser zu konfigurieren: Apache oder nginx Webserver, Postfix Mailserver, Courier oder Dovecot IMAP/POP3 Server, MySQL, BIND oder MyDNS Nameserver, PureFTPd, SpamAssassin, ClamAV und viele mehr. Diese Einrichtung umfasst den Nginx Webserver, BIND als DNS-Server und Dovecot als IMAP / POP3 Server.
1 Vorbemerkung
In diesem Tutorial verwende ich den Hostnamen server1.example.com mit der IP-Adresse 192.168.1.100 und dem Gateway 192.168.1.1. Diese Einstellungen können bei Ihnen abweichen, daher müssen Sie sie gegebenenfalls anpassen. Bevor Sie fortfahren, benötigen Sie eine minimale Installation von Debian 9. Dies könnte ein minimales Debian-Image von Ihrem Hosting-Anbieter sein oder Sie verwenden das Minimal Debian Server Tutorial, um das Basissystem einzurichten.
2 Installieren Sie den SSH-Server
Wenn Sie den OpenSSH-Server während der Systeminstallation nicht installiert haben, können Sie dies jetzt tun:
apt-get -y install ssh openssh-serverVon nun an können Sie einen SSH-Client wie PuTTY verwenden und sich von Ihrem Arbeitsplatz mit Ihrem Debian 9 Server verbinden und die verbleibenden Schritte dieses Tutorials befolgen.
3 Installieren Sie einen Shell-Texteditor (Optional)
Ich werde in diesem Tutorial den nano Texteditor verwenden. Einige Benutzer bevorzugen den klassischen vi-Editor, daher werde ich hier beide Editoren installieren. Das Standardvi-Programm hat ein seltsames Verhalten auf Debian und Ubuntu; um dies zu beheben, installieren wir vim-nox:
apt-get -y install nano vim-nox(Sie müssen dies nicht tun, wenn Sie einen anderen Texteditor wie joe verwenden.)
4 Konfigurieren Sie den Hostnamen
Der Hostname Ihres Servers sollte ein Subdomain wie “server1.example.com” sein. Verwenden Sie keinen Domainnamen ohne 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 sein: “IP-Adresse - Leerzeichen - vollständiger Hostname inkl. Domain - Leerzeichen - Subdomain-Teil”. Bearbeiten Sie /etc/hosts. Lassen Sie es so aussehen:
nano /etc/hosts127.0.0.1 localhost.localdomain localhost
192.168.1.100 server1.example.com server1
# 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-allroutersDann bearbeiten Sie die Datei /etc/hostname:
nano /etc/hostnameSie sollte nur den Subdomain-Teil enthalten, in unserem Fall:
server1Starten Sie schließlich den Server neu, um die Änderung anzuwenden:
rebootMelden Sie sich erneut an und überprüfen Sie, ob der Hostname jetzt mit diesen Befehlen korrekt ist:
hostname
hostname -fDie Ausgabe sollte so aussehen:
root@server1:/tmp# hostname
server1
root@server1:/tmp# hostname -f
server1.example.com5 Aktualisieren Sie Ihre Debian-Installation
Stellen Sie zuerst sicher, dass Ihre /etc/apt/sources.list das stretch/updates-Repository enthält (dies stellt sicher, dass Sie immer die neuesten Updates für den ClamAV-Virenscanner erhalten - dieses Projekt veröffentlicht sehr oft Releases, und manchmal hören alte Versionen auf zu funktionieren), und dass die contrib- und non-free-Repositories aktiviert sind.
nano /etc/apt/sources.listdeb http://ftp.us.debian.org/debian/ stretch main contrib non-free
deb-src http://ftp.us.debian.org/debian/ stretch main contrib non-free
deb http://security.debian.org/debian-security stretch/updates main contrib non-free
deb-src http://security.debian.org/debian-security stretch/updates main contrib non-freeWICHTIG: Fügen Sie das Debian Backports-Repository wie oben gezeigt hinzu.
Führen Sie
apt-get updateaus, um die apt-Paketdatenbank zu aktualisieren und
apt-get upgradeum die neuesten Updates zu installieren (falls vorhanden).
6 Ändern Sie die Standard-Shell
/bin/sh ist ein Symlink zu /bin/dash, jedoch benötigen wir /bin/bash, nicht /bin/dash. Daher tun wir dies:
dpkg-reconfigure dashVerwenden Sie dash als Standardsystem-Shell (/bin/sh)? <– Nein
Wenn Sie dies nicht tun, schlägt die Installation von ISPConfig fehl.
7 Synchronisieren Sie die Systemuhr
Es ist eine gute Idee, die Systemuhr mit einem NTP ( n etwork t ime p rotokoll) Server über das Internet zu synchronisieren. Führen Sie einfach aus
apt-get install ntpund Ihre Systemzeit wird immer synchronisiert sein.
8 Installieren Sie Postfix, Dovecot, MySQL, rkhunter und binutils
Wir können Postfix, Dovecot, MySQL, rkhunter und Binutils mit einem einzigen Befehl installieren:
apt-get install postfix postfix-mysql postfix-doc mariadb-client mariadb-server openssl getmail4 rkhunter binutils dovecot-imapd dovecot-pop3d dovecot-mysql dovecot-sieve dovecot-lmtpd sudoSie werden nach den folgenden Fragen gefragt:
Allgemeiner Typ der Mailkonfiguration: <– Internet Site
System-Mail-Name: <– server1.example.com
Um die MariaDB / MySQL-Installation zu sichern und die Testdatenbank zu deaktivieren, führen Sie diesen Befehl aus:
mysql_secure_installationWir müssen das MySQL-Root-Passwort nicht ändern, da wir gerade eines während der Installation festgelegt haben. Beantworten Sie die Fragen wie folgt:
Ändern Sie das Root-Passwort? [Y/n] <-- y
Neues Passwort: <-- Geben Sie ein neues MySQL-Root-Passwort ein
Neues Passwort erneut eingeben: <-- Wiederholen Sie das MySQL-Root-Passwort
Anonyme Benutzer entfernen? [Y/n] <-- y
Root-Login aus der Ferne verbieten? [Y/n] <-- y
Testdatenbank und Zugriff darauf entfernen? [Y/n] <-- y
Privilegientabellen jetzt neu laden? [Y/n] <-- yÖffnen Sie als Nächstes die TLS/SSL- und Übermittlungsports in Postfix:
nano /etc/postfix/master.cfKommentieren Sie die Abschnitte submission und smtps wie folgt aus (lassen Sie -o milter_macro_daemon_name=ORIGINATING, da wir es nicht benötigen):
[...]
submission inet n - y - - smtpd
-o syslog_name=postfix/submission
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
# -o smtpd_reject_unlisted_recipient=no
# -o smtpd_client_restrictions=$mua_client_restrictions
# -o smtpd_helo_restrictions=$mua_helo_restrictions
# -o smtpd_sender_restrictions=$mua_sender_restrictions
# -o smtpd_recipient_restrictions=
# -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
# -o milter_macro_daemon_name=ORIGINATING
smtps inet n - y - - smtpd
-o syslog_name=postfix/smtps
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
# -o smtpd_reject_unlisted_recipient=no
# -o smtpd_client_restrictions=$mua_client_restrictions
# -o smtpd_helo_restrictions=$mua_helo_restrictions
# -o smtpd_sender_restrictions=$mua_sender_restrictions
# -o smtpd_recipient_restrictions=
# -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
# -o milter_macro_daemon_name=ORIGINATING
[...] Starten Sie Postfix anschließend neu:
service postfix restartWir möchten, dass MariaDB auf allen Schnittstellen hört, nicht nur auf localhost, daher bearbeiten wir /etc/mysql/mariadb.conf.d/50-server.cnf und kommentieren die Zeile bind-address = 127.0.0.1 aus und fügen die Zeile sql-mode=”NO_ENGINE_SUBSTITUTION” hinzu:
nano /etc/mysql/mariadb.conf.d/50-server.cnf[...]
# Anstelle von skip-networking ist die Standardeinstellung jetzt, nur auf
# localhost zu hören, was kompatibler ist und nicht weniger sicher.
#bind-address = 127.0.0.1
sql-mode="NO_ENGINE_SUBSTITUTION"
[...] Setzen Sie die Passwortauthentifizierungsmethode in MariaDB auf native, damit wir später PHPMyAdmin verwenden können, um uns als Root-Benutzer zu verbinden:
echo "update mysql.user set plugin = 'mysql_native_password' where user='root';" | mysql -u rootBearbeiten Sie die Datei /etc/mysql/debian.cnf und setzen Sie dort das MYSQL / MariaDB Root-Passwort zweimal in den Zeilen, die mit password beginnen.
nano /etc/mysql/debian.cnfDas MySQL-Root-Passwort, das hinzugefügt werden muss, wird rot angezeigt, in diesem Beispiel ist das Passwort “howtoforge”.
# Automatisch für Debian-Skripte generiert. NICHT ANFASSEN!
[client]
host = localhost
user = root
password = howtoforge
socket = /var/run/mysqld/mysqld.sock
[mysql_upgrade]
host = localhost
user = root
password = howtoforge
socket = /var/run/mysqld/mysqld.sock
basedir = /usrUm den Fehler ‘ Error in accept: Too many open files ‘ zu verhindern, setzen wir jetzt höhere offene Dateigrenzen für MariaDB.
Öffnen Sie die Datei /etc/security/limits.conf mit einem Editor:
nano /etc/security/limits.confund fügen Sie diese Zeilen am Ende der Datei hinzu.
mysql soft nofile 65535
mysql hard nofile 65535Erstellen Sie als Nächstes ein neues Verzeichnis /etc/systemd/system/mysql.service.d/ mit dem mkdir-Befehl.
mkdir -p /etc/systemd/system/mysql.service.d/und fügen Sie eine neue Datei darin hinzu:
nano /etc/systemd/system/mysql.service.d/limits.confFügen Sie die folgenden Zeilen in diese Datei ein:
[Service]
LimitNOFILE=infinitySpeichern Sie die Datei und schließen Sie den Nano-Editor.
Dann laden wir systemd neu und starten MariaDB neu:
systemctl daemon-reload
service mysql restartÜberprüfen Sie nun, ob das Networking aktiviert ist. Führen Sie aus
netstat -tap | grep mysqlDie Ausgabe sollte so aussehen:
root@server1:~# netstat -tap | grep mysql
tcp6 0 0 [::]:mysql [::]:* LISTEN 4027/mysqld
root@server1:~#9 Installieren Sie Amavisd-new, SpamAssassin und ClamAV
Um amavisd-new, SpamAssassin und ClamAV zu installieren, führen wir aus:
apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl libdbd-mysql-perl postgreyDie ISPConfig 3 Einrichtung verwendet amavisd, das die SpamAssassin-Filterbibliothek intern lädt, sodass wir SpamAssassin stoppen können, um etwas RAM freizugeben:
service spamassassin stop
systemctl disable spamassassin9.1 Installieren Sie den Metronome XMPP-Server (optional)
Dieser Schritt installiert den Metronome XMPP-Server, der einen Chat-Server bereitstellt, der mit dem XMPP-Protokoll kompatibel ist. Dieser Schritt ist optional; wenn Sie keinen Chat-Server benötigen, können Sie diesen Schritt überspringen. Keine anderen ISPConfig-Funktionen hängen von dieser Software ab.
Fügen Sie das Prosody-Paket-Repository in Debian hinzu.
echo "deb http://packages.prosody.im/debian stretch main" > /etc/apt/sources.list.d/metronome.list
wget http://prosody.im/files/prosody-debian-packages.key -O - | sudo apt-key add -Aktualisieren Sie die Paketliste:
apt-get updateInstallieren Sie die Programme, die für den Build-Prozess erforderlich sind
apt-get install build-essentialund installieren Sie die Pakete mit apt.
apt-get install git lua5.1 liblua5.1-0-dev lua-filesystem libidn11-dev libssl-dev lua-zlib lua-expat lua-event lua-bitop lua-socket lua-sec luarocks luarocksluarocks install lpcFügen Sie einen Shell-Benutzer für Metronome hinzu.
adduser --no-create-home --disabled-login --gecos 'Metronome' metronomeLaden Sie Metronome in das Verzeichnis /opt herunter und kompilieren Sie es.
cd /opt; git clone https://github.com/maranda/metronome.git metronome
cd ./metronome; ./configure --ostype=debian --prefix=/usr
make
make installMetronome wurde jetzt in /opt/metronome installiert.
Erhalte neue Beiträge in deinem Posteingang.
Kein Spam. Jederzeit abmelden.