Server Setup · 9 min read · Sep 11, 2025
Der perfekte Server - Ubuntu 18.04 (Nginx, MySQL, PHP, Postfix, BIND, Dovecot, Pure-FTPD und ISPConfig 3.1)
Dieses Tutorial zeigt die Schritte zur Installation eines Ubuntu 18.04 (Bionic Beaver) Servers mit Nginx, PHP, MariaDB, Postfix, pure-ftpd, BIND, Dovecot und ISPConfig 3.1. ISPConfig ist ein Webhosting-Kontrollpanel, das es Ihnen ermöglicht, die installierten Dienste über einen Webbrowser zu konfigurieren. Dieses Setup bietet einen vollständigen Hosting-Server mit Web-, E-Mail- (inkl. Spam- und Antivirusfilter), Datenbank-, FTP- und DNS-Diensten.
1. Vorbemerkung
In diesem Tutorial werde ich den Hostnamen server1.example.com mit der IP-Adresse 192.168.1.100 und dem Gateway 192.168.1.1 für die Netzwerkkonfiguration verwenden. Diese Einstellungen können bei Ihnen abweichen, daher müssen Sie sie gegebenenfalls anpassen. Bevor Sie fortfahren, benötigen Sie eine grundlegende Minimalinstallation von Ubuntu 18.04, wie in diesem Tutorial beschrieben.
Die Schritte in diesem Tutorial müssen als Root-Benutzer ausgeführt werden, daher werde ich “sudo” nicht vor die Befehle setzen. Melden Sie sich entweder als Root-Benutzer auf Ihrem Server an, bevor Sie fortfahren, oder führen Sie aus:
sudo -sum Root zu werden, wenn Sie als ein anderer Benutzer in der Shell angemeldet sind.
Die Befehle zum Bearbeiten von Dateien verwenden den Editor “nano”; Sie können ihn durch einen Editor Ihrer Wahl ersetzen. Nano ist ein einfach zu bedienender Dateieditor für die Shell. Wenn Sie nano verwenden möchten und es noch nicht installiert haben, führen Sie aus:
apt-get install nano2. Aktualisieren Sie Ihre Linux-Installation
Bearbeiten Sie /etc/apt/sources.list. Kommentieren Sie die Installations-CD in der Datei aus oder entfernen Sie sie und stellen Sie sicher, dass die Universe- und Multiverse-Repositorys aktiviert sind. Es sollte so aussehen:
nano /etc/apt/sources.list#
# deb cdrom:[Ubuntu-Server 18.04 LTS _Bionic Beaver_ - Release amd64 (20180425.1)]/ bionic main restricted
#deb cdrom:[Ubuntu-Server 18.04 LTS _Bionic Beaver_ - Release amd64 (20180425.1)]/ bionic main restricted
# Siehe http://help.ubuntu.com/community/UpgradeNotes, wie man auf
# neuere Versionen der Distribution aktualisiert.
deb http://de.archive.ubuntu.com/ubuntu/ bionic main restricted
# deb-src http://de.archive.ubuntu.com/ubuntu/ bionic main restricted
## Wichtige Fehlerbehebungsupdates, die nach der endgültigen Veröffentlichung der
## Distribution erstellt wurden.
deb http://de.archive.ubuntu.com/ubuntu/ bionic-updates main restricted
# deb-src http://de.archive.ubuntu.com/ubuntu/ bionic-updates main restricted
## N.B. Software aus diesem Repository wird VOLLSTÄNDIG VON DEM UBUNTU
## TEAM UNTERSTÜTZT. Bitte beachten Sie auch, dass Software im Universe KEINE
## Überprüfung oder Updates vom Ubuntu-Sicherheitsteam erhält.
deb http://de.archive.ubuntu.com/ubuntu/ bionic universe
# deb-src http://de.archive.ubuntu.com/ubuntu/ bionic universe
deb http://de.archive.ubuntu.com/ubuntu/ bionic-updates universe
# deb-src http://de.archive.ubuntu.com/ubuntu/ bionic-updates universe
## N.B. Software aus diesem Repository wird VOLLSTÄNDIG VON DEM UBUNTU
## TEAM UNTERSTÜTZT und könnte nicht unter einer freien Lizenz stehen. Bitte stellen Sie sicher, dass Sie
## das Recht haben, die Software zu verwenden. Bitte beachten Sie auch, dass Software im
## Multiverse KEINE Überprüfung oder Updates vom Ubuntu-Sicherheitsteam erhält.
deb http://de.archive.ubuntu.com/ubuntu/ bionic multiverse
# deb-src http://de.archive.ubuntu.com/ubuntu/ bionic multiverse
deb http://de.archive.ubuntu.com/ubuntu/ bionic-updates multiverse
# deb-src http://de.archive.ubuntu.com/ubuntu/ bionic-updates multiverse
## N.B. Software aus diesem Repository wurde möglicherweise nicht so
## umfassend getestet wie die in der Hauptversion enthaltene, obwohl sie
## neuere Versionen einiger Anwendungen enthält, die nützliche Funktionen bieten können.
## Bitte beachten Sie auch, dass Software in Backports KEINE Überprüfung
## oder Updates vom Ubuntu-Sicherheitsteam erhält.
deb http://de.archive.ubuntu.com/ubuntu/ bionic-backports main restricted universe multiverse
# deb-src http://de.archive.ubuntu.com/ubuntu/ bionic-backports main restricted universe multiverse
## Kommentieren Sie die folgenden beiden Zeilen aus, um Software aus Canonicals
## 'Partner'-Repository hinzuzufügen.
## Diese Software ist kein Teil von Ubuntu, wird jedoch von Canonical und den
## jeweiligen Anbietern als Dienst für Ubuntu-Benutzer angeboten.
# deb http://archive.canonical.com/ubuntu bionic partner
# deb-src http://archive.canonical.com/ubuntu bionic partner
deb http://security.ubuntu.com/ubuntu bionic-security main restricted
# deb-src http://security.ubuntu.com/ubuntu bionic-security main restricted
deb http://security.ubuntu.com/ubuntu bionic-security universe
# deb-src http://security.ubuntu.com/ubuntu bionic-security universe
deb http://security.ubuntu.com/ubuntu bionic-security multiverse
# deb-src http://security.ubuntu.com/ubuntu bionic-security multiverseFühren Sie dann aus:
apt-get updateUm die apt-Paketdatenbank zu aktualisieren und dann:
apt-get upgradeum die neuesten Updates zu installieren (sofern vorhanden). Wenn Sie sehen, dass ein neuer Kernel als Teil der Updates installiert wird, sollten Sie das System danach neu starten:
reboot3. Ändern Sie die Standard-Shell
/bin/sh ist ein Symlink zu /bin/dash, wir benötigen jedoch /bin/bash, nicht /bin/dash. Daher tun wir dies:
dpkg-reconfigure dashVerwenden Sie dash als die Standard-System-Shell (/bin/sh)? <– Nein
Wenn Sie dies nicht tun, schlägt die Installation von ISPConfig fehl.
4. Deaktivieren Sie AppArmor
AppArmor ist eine Sicherheitserweiterung (ähnlich wie SELinux), die erweiterte Sicherheit bieten soll. Wir werden überprüfen, ob es installiert ist, und es bei Bedarf entfernen. Meiner Meinung nach benötigen Sie es nicht, um ein sicheres System zu konfigurieren, und es verursacht normalerweise mehr Probleme als Vorteile (denken Sie daran, nachdem Sie eine Woche lang Fehlerbehebung betrieben haben, weil ein Dienst nicht wie erwartet funktionierte, und dann stellen Sie fest, dass alles in Ordnung war, nur AppArmor das Problem verursachte). Daher deaktiviere ich es (dies ist ein Muss, wenn Sie später ISPConfig installieren möchten).
Wir können es so deaktivieren:
service apparmor stop
update-rc.d -f apparmor remove
apt-get remove apparmor apparmor-utils5. Synchronisieren Sie die Systemuhr
Es ist eine gute Idee, die Systemuhr mit einem NTP ( n etwork t ime p rotocol) Server über das Internet zu synchronisieren. Führen Sie einfach aus
apt-get -y install ntp ntpdateund Ihre Systemzeit wird immer synchronisiert sein.
6. Installieren Sie Postfix, Dovecot, MariaDB, phpMyAdmin, rkhunter, Binutils
Um Postfix zu installieren, müssen wir sicherstellen, dass sendmail nicht installiert und aktiv ist. Um sendmail zu stoppen und zu entfernen, führen Sie diesen Befehl aus:
service sendmail stop; update-rc.d -f sendmail removeDie Fehlermeldung:
Failed to stop sendmail.service: Unit sendmail.service not loaded.ist in Ordnung, es bedeutet nur, dass sendmail nicht installiert war, also gab es nichts zu entfernen.
Wir können Postfix, Dovecot, MariaDB (als MySQL-Ersatz), rkhunter und binutils mit einem einzigen Befehl installieren:
apt-get -y install postfix postfix-mysql postfix-doc mariadb-client mariadb-server openssl getmail4 rkhunter binutils dovecot-imapd dovecot-pop3d dovecot-mysql dovecot-sieve dovecot-lmtpd sudoMariaDB ist ein Fork des MySQL-Datenbankservers, entwickelt von dem ursprünglichen MySQL-Entwickler Monty Widenius. Laut Tests, die im Internet gefunden wurden, ist MariaDB schneller als MySQL und die Entwicklung schreitet schneller voran, daher haben die meisten Linux-Distributionen MySQL durch MariaDB als standardmäßigen “MySQL-ähnlichen” Datenbankserver ersetzt. Falls Sie MySQL bevorzugen, ersetzen Sie “mariadb-client mariadb-server” im obigen Befehl durch “mysql-client mysql-server”.
Sie werden nach den folgenden Fragen gefragt:
Allgemeine Art der Mailkonfiguration: <-- Internet Site
System-Mail-Name: <-- server1.example.comÖffnen Sie als Nächstes die TLS/SSL- und Übermittlungsports in Postfix:
nano /etc/postfix/master.cfKommentieren Sie die Abschnitte für die Übermittlung und smtps wie folgt aus - fügen Sie die Zeile -o smtpd_client_restrictions=permit_sasl_authenticated,reject zu beiden Abschnitten hinzu und lassen Sie alles danach auskommentiert:
[...]
submission inet n - - - - 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=permit_sasl_authenticated,reject
# -o milter_macro_daemon_name=ORIGINATING
smtps inet n - - - - 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=permit_sasl_authenticated,reject
# -o milter_macro_daemon_name=ORIGINATING
[...] HINWEIS: Die Leerzeichen vor den “-o …. “-Zeilen sind wichtig!
Starten Sie Postfix danach neu:
service postfix restartWir möchten, dass MariaDB/MySQL auf allen Schnittstellen hört, nicht nur auf localhost. Daher bearbeiten wir /etc/mysql/mariadb.conf.d/50-server.cnf (für MariaDB) oder /etc/mysql/my.cnf (für MySQL) und kommentieren die Zeile bind-address = 127.0.0.1 aus:
MariaDB
nano /etc/mysql/mariadb.conf.d/50-server.cnf[...]
# Anstelle von skip-networking hört die Standardkonfiguration jetzt nur auf
# localhost, was kompatibler ist und nicht weniger sicher.
#bind-address = 127.0.0.1
[...] Jetzt setzen wir ein Root-Passwort in MariaDB. Führen Sie aus:
mysql_secure_installationSie werden nach diesen Fragen gefragt:
Geben Sie das aktuelle Passwort für root ein (drücken Sie Enter für keines): <-- drücken Sie Enter
Soll das Root-Passwort gesetzt werden? [Y/n] <-- y
Neues Passwort: <-- Geben Sie hier das neue MariaDB-Root-Passwort ein
Neues Passwort erneut eingeben: <-- Wiederholen Sie das Passwort
Anonyme Benutzer entfernen? [Y/n] <-- y
Root-Login aus der Ferne verbieten? [Y/n] <-- y
Privilegientabellen jetzt neu laden? [Y/n] <-- ySetzen 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 das MYSQL / MariaDB-Root-Passwort dort zweimal in den Zeilen, die mit password beginnen.
nano /etc/mysql/debian.cnfDas MySQL-Root-Passwort, das hinzugefügt werden muss, wird hier in lesbarer Form 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 = /usrDann starten wir MariaDB neu:
service mysql restartDer systemd-Dienstname für MariaDB und MySQL ist “mysql”, daher ist der Neustartbefehl für beide Datenbankserver derselbe.
MySQL
nano /etc/mysql/my.cnf[...]
# Anstelle von skip-networking hört die Standardkonfiguration jetzt nur auf
# localhost, was kompatibler ist und nicht weniger sicher.
#bind-address = 127.0.0.1
[...] Dann starten wir MySQL neu:
service mysql restartDer systemd-Dienstname für MariaDB und MySQL ist “mysql”, daher ist der Neustartbefehl für beide Datenbankserver derselbe.
Für MySQL und MariaDB:
Überprüfen Sie jetzt, 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 12210/mysqld7. Installieren Sie Amavisd-new, SpamAssassin und ClamAV
Um amavisd-new, SpamAssassin und ClamAV zu installieren, führen wir aus
apt-get -y install amavisd-new spamassassin clamav clamav-daemon 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 postgrey libdbd-mysql-perlDie ISPConfig 3-Installation verwendet amavisd-new, das die SpamAssassin-Filterbibliothek intern lädt, sodass wir SpamAssassin stoppen können, um RAM freizugeben:
service spamassassin stop
update-rc.d -f spamassassin removeUm die ClamAV-Virensignaturen zu aktualisieren und den Clamd-Dienst zu starten. Der Aktualisierungsprozess kann einige Zeit in Anspruch nehmen, unterbrechen Sie ihn nicht.
freshclam
service clamav-daemon startDie folgende Fehlermeldung kann beim ersten Ausführen von freshclam ignoriert werden.
ERROR: /var/log/clamav/freshclam.log is locked by another process
ERROR: Problem with internal logger (UpdateLogFile = /var/log/clamav/freshclam.log).Das Programm amavisd-new hat derzeit einen Fehler in Ubuntu 18.04, der verhindert, dass E-Mails korrekt mit Dkim signiert werden. Führen Sie die folgenden Befehle aus, um amavisd-new zu patchen.
cd /tmp
wget https://git.ispconfig.org/ispconfig/ispconfig3/raw/stable-3.1/helper_scripts/ubuntu-amavisd-new-2.11.patch
cd /usr/sbin
cp -pf amavisd-new amavisd-new_bak
patch < /tmp/ubuntu-amavisd-new-2.11.patchFalls Sie einen Fehler beim letzten ‘patch’-Befehl erhalten, hat Ubuntu das Problem wahrscheinlich inzwischen behoben, sodass es sicher sein sollte, diesen Fehler zu ignorieren.
7.1 Installieren Sie den Metronome XMPP-Server (optional)
Der Metronome XMPP-Server bietet einen XMPP-Chatserver. Dieser Schritt ist optional; wenn Sie keinen Chatserver benötigen, können Sie diesen Schritt überspringen. Keine anderen ISPConfig-Funktionen hängen von dieser Software ab.
Installieren Sie die folgenden Pakete mit apt.
apt-get -y 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.