Serveur Ubuntu · 9 min read · Sep 10, 2025

Le Serveur Parfait - Ubuntu 16.04 (Nginx, MySQL, PHP, Postfix, BIND, Dovecot, Pure-FTPD et ISPConfig 3.1)

Ce tutoriel montre les étapes pour installer un serveur Ubuntu 16.04 (Xenial Xerus) avec Nginx, PHP, MariaDB, Postfix, pure-ftpd, BIND, Dovecot et ISPConfig 3.1. ISPConfig est un panneau de contrôle d’hébergement web qui vous permet de configurer les services installés via un navigateur web. Cette configuration fournit un serveur d’hébergement complet avec des services web, email (y compris le filtre anti-spam et antivirus), base de données, FTP et DNS.

1. Remarque Préliminaire

Dans ce tutoriel, j’utiliserai le nom d’hôte server1.example.com avec l’adresse IP 192.168.1.100 et la passerelle 192.168.1.1 pour la configuration réseau. Ces paramètres peuvent différer pour vous, donc vous devez les remplacer là où cela est approprié. Avant de continuer, vous devez avoir une installation minimale de base d’Ubuntu 16.04 comme expliqué dans le tutoriel.

Les étapes de ce tutoriel doivent être exécutées en tant qu’utilisateur root, donc je ne préfixerai pas “sudo” devant les commandes. Connectez-vous en tant qu’utilisateur root sur votre serveur avant de continuer ou exécutez :

sudo -s

pour devenir root lorsque vous êtes connecté en tant qu’utilisateur différent dans le shell.

Les commandes pour éditer des fichiers utiliseront l’éditeur “nano”, vous pouvez le remplacer par un éditeur de votre choix. Nano est un éditeur de fichiers facile à utiliser pour le shell. Si vous aimez utiliser nano et ne l’avez pas encore installé, exécutez :

apt-get install nano

2. Mettez à Jour Votre Installation Linux

Éditez /etc/apt/sources.list. Commentez ou supprimez le CD d’installation du fichier et assurez-vous que les dépôts universe et multiverse sont activés. Cela devrait ressembler à ceci :

nano /etc/apt/sources.list
#  
# deb cdrom:[Ubuntu-Server 16.04 LTS _Xenial Xerus_ - Release amd64 (20160420)]/ xenial main restricted  
#deb cdrom:[Ubuntu-Server 16.04 LTS _Xenial Xerus_ - Release amd64 (20160420)]/ xenial main restricted  
# Voir http://help.ubuntu.com/community/UpgradeNotes pour comment mettre à niveau vers  
# des versions plus récentes de la distribution.  
deb http://de.archive.ubuntu.com/ubuntu/ xenial main restricted  
# deb-src http://de.archive.ubuntu.com/ubuntu/ xenial main restricted  
  
## Mises à jour majeures de correction de bogues produites après la version finale de la  
## distribution.  
deb http://de.archive.ubuntu.com/ubuntu/ xenial-updates main restricted  
# deb-src http://de.archive.ubuntu.com/ubuntu/ xenial-updates main restricted  
  
## N.B. le logiciel de ce dépôt est ENTIÈREMENT NON SOUTENU par l'équipe Ubuntu,  
## et peut ne pas être sous une licence libre. Veuillez vous assurer de  
## vos droits d'utilisation du logiciel. De plus, veuillez noter que le logiciel dans  
## universe NE RECEVRA AUCUN examen ni mises à jour de l'équipe de sécurité d'Ubuntu.  
deb http://de.archive.ubuntu.com/ubuntu/ xenial universe  
# deb-src http://de.archive.ubuntu.com/ubuntu/ xenial universe  
deb http://de.archive.ubuntu.com/ubuntu/ xenial-updates universe  
# deb-src http://de.archive.ubuntu.com/ubuntu/ xenial-updates universe  
  
## N.B. le logiciel de ce dépôt est ENTIÈREMENT NON SOUTENU par l'équipe Ubuntu,  
## et peut ne pas être sous une licence libre. Veuillez vous assurer de  
## vos droits d'utilisation du logiciel. De plus, veuillez noter que le logiciel dans  
## multiverse NE RECEVRA AUCUN examen ni mises à jour de l'équipe de sécurité d'Ubuntu.  
deb http://de.archive.ubuntu.com/ubuntu/ xenial multiverse  
# deb-src http://de.archive.ubuntu.com/ubuntu/ xenial multiverse  
deb http://de.archive.ubuntu.com/ubuntu/ xenial-updates multiverse  
# deb-src http://de.archive.ubuntu.com/ubuntu/ xenial-updates multiverse  
  
## N.B. le logiciel de ce dépôt peut ne pas avoir été testé aussi  
## largement que celui contenu dans la version principale, bien qu'il inclue  
## des versions plus récentes de certaines applications qui peuvent fournir des fonctionnalités utiles.  
## De plus, veuillez noter que le logiciel dans backports NE RECEVRA AUCUN examen  
## ni mises à jour de l'équipe de sécurité d'Ubuntu.  
deb http://de.archive.ubuntu.com/ubuntu/ xenial-backports main restricted universe multiverse  
# deb-src http://de.archive.ubuntu.com/ubuntu/ xenial-backports main restricted universe multiverse  
## Décommentez les deux lignes suivantes pour ajouter des logiciels du dépôt  
## 'partenaire' de Canonical.  
## Ce logiciel ne fait pas partie d'Ubuntu, mais est proposé par Canonical et les  
## fournisseurs respectifs comme un service aux utilisateurs d'Ubuntu.  
# deb http://archive.canonical.com/ubuntu xenial partner  
# deb-src http://archive.canonical.com/ubuntu xenial partner  
  
deb http://security.ubuntu.com/ubuntu xenial-security main restricted  
# deb-src http://security.ubuntu.com/ubuntu xenial-security main restricted  
deb http://security.ubuntu.com/ubuntu xenial-security universe  
# deb-src http://security.ubuntu.com/ubuntu xenial-security universe  
deb http://security.ubuntu.com/ubuntu xenial-security multiverse  
# deb-src http://security.ubuntu.com/ubuntu xenial-security multiverse

Ensuite, exécutez :

apt-get update

Pour mettre à jour la base de données des paquets apt et ensuite :

apt-get upgrade

pour installer les dernières mises à jour (s’il y en a). Si vous voyez qu’un nouveau noyau est installé dans le cadre des mises à jour, vous devriez redémarrer le système par la suite :

reboot

3. Changez le Shell Par Défaut

/bin/sh est un lien symbolique vers /bin/dash, cependant nous avons besoin de /bin/bash, pas de /bin/dash. Par conséquent, nous faisons ceci :

dpkg-reconfigure dash

Utiliser dash comme shell système par défaut (/bin/sh) ? <– Non

Si vous ne faites pas cela, l’installation d’ISPConfig échouera.

4. Désactivez AppArmor

AppArmor est une extension de sécurité (similaire à SELinux) qui devrait fournir une sécurité étendue. Nous allons vérifier s’il est installé et le supprimer si nécessaire. À mon avis, vous n’en avez pas besoin pour configurer un système sécurisé, et cela cause généralement plus de problèmes que d’avantages (pensez-y après avoir passé une semaine à résoudre des problèmes parce qu’un service ne fonctionnait pas comme prévu, et ensuite vous découvrez que tout allait bien, seul AppArmor causait le problème). Par conséquent, je le désactive (c’est un must si vous souhaitez installer ISPConfig par la suite).

Nous pouvons le désactiver comme ceci :

service apparmor stop  
update-rc.d -f apparmor remove  
apt-get remove apparmor apparmor-utils

5. Synchronisez l’Horloge du Système

Il est bon de synchroniser l’horloge du système avec un serveur NTP ( n etwork t ime p rotocol) sur Internet. Il suffit d’exécuter

apt-get -y install ntp ntpdate

et votre heure système sera toujours synchronisée.

6. Installez Postfix, Dovecot, MariaDB, phpMyAdmin, rkhunter, Binutils

Pour installer postfix, nous devons nous assurer que sendmail n’est pas installé et en cours d’exécution. Pour arrêter et supprimer sendmail, exécutez cette commande :

service sendmail stop; update-rc.d -f sendmail remove

Le message d’erreur :

Failed to stop sendmail.service: Unit sendmail.service not loaded.

est correct, cela signifie simplement que sendmail n’était pas installé, donc il n’y avait rien à supprimer.

Nous pouvons installer Postfix, Dovecot, MariaDB (comme remplacement de MySQL), rkhunter et binutils avec une seule commande :

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 sudo

MariaDB est un fork du serveur de base de données MySQL, développé par le développeur original de MySQL Monty Widenius. Selon les tests trouvés sur Internet, MariaDB est plus rapide que MySQL et son développement se poursuit à un rythme plus soutenu, par conséquent, la plupart des distributions Linux ont remplacé MySQL par MariaDB comme serveur de base de données par défaut “semblable à MySQL”. Dans le cas où vous préférez MySQL à MariaDB, remplacez “mariadb-client mariadb-server” dans la commande ci-dessus par “mysql-client mysql-server”.

Vous serez invité à répondre aux questions suivantes :

General type of mail configuration: <-- Internet Site  
System mail name: <-- server1.example.com

Ensuite, ouvrez les ports TLS/SSL et de soumission dans Postfix :

nano /etc/postfix/master.cf

Décommentez les sections de soumission et smtps comme suit - ajoutez la ligne -o smtpd_client_restrictions=permit_sasl_authenticated,reject aux deux sections et laissez tout le reste commenté :

[...]  
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  
[...]  

Redémarrez Postfix par la suite :

service postfix restart

Nous voulons que MariaDB/MySQL écoute sur toutes les interfaces, pas seulement localhost. Par conséquent, nous éditons /etc/mysql/mariadb.conf.d/50-server.cnf (pour MariaDB) ou /etc/mysql/my.cnf (pour MySQL) et commentons la ligne bind-address = 127.0.0.1 :

MariaDB

nano /etc/mysql/mariadb.conf.d/50-server.cnf
[...]  
# Au lieu de skip-networking, le défaut est maintenant d'écouter uniquement sur  
# localhost, ce qui est plus compatible et n'est pas moins sécurisé.  
#bind-address           = 127.0.0.1  
[...]  

Ensuite, nous redémarrons MariaDB :

service mysql restart

Le nom du service systemd pour MariaDB et MySQL est “ mysql “, donc la commande de redémarrage est la même pour les deux serveurs de base de données.

Maintenant, nous définissons un mot de passe root dans MariaDB. Exécutez :

mysql_secure_installation

Vous serez invité à répondre à ces questions :

Enter current password for root (enter for none): <-- appuyez sur entrer  
Set root password? [Y/n] <-- y  
New password: <-- Entrez le nouveau mot de passe root de MariaDB ici  
Re-enter new password: <-- Répétez le mot de passe  
Remove anonymous users? [Y/n] <-- y  
Disallow root login remotely? [Y/n] <-- y  
Reload privilege tables now? [Y/n] <-- y

MySQL

nano /etc/mysql/my.cnf
[...]  
# Au lieu de skip-networking, le défaut est maintenant d'écouter uniquement sur  
# localhost, ce qui est plus compatible et n'est pas moins sécurisé.  
#bind-address           = 127.0.0.1  
[...]  

Ensuite, nous redémarrons MySQL :

service mysql restart

Le nom du service systemd pour MariaDB et MySQL est “mysql”, donc la commande de redémarrage est la même pour les deux serveurs de base de données.

Pour MySQL et MariaDB :

Maintenant, vérifiez que le réseau est activé. Exécutez :

netstat -tap | grep mysql

La sortie devrait ressembler à ceci :

root@server1:~# netstat -tap | grep mysql  
tcp6 0 0 [::]:mysql [::]:* LISTEN 13796/mysqld  
root@server1:~#

7. Installez Amavisd-new, SpamAssassin et ClamAV

Pour installer amavisd-new, SpamAssassin et ClamAV, nous exécutons

apt-get -y 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 postgrey

La configuration d’ISPConfig 3 utilise amavisd-new qui charge la bibliothèque de filtre SpamAssassin en interne, donc nous pouvons arrêter SpamAssassin pour libérer de la RAM :

service spamassassin stop  
update-rc.d -f spamassassin remove

Pour mettre à jour les signatures antivirus de ClamAV et démarrer le service Clamd. Le processus de mise à jour peut prendre un certain temps, ne l’interrompez pas.

service clamav-freshclam restart  
service clamav-daemon start

7.1 Installer le Serveur XMPP Metronome (optionnel)

Le Serveur XMPP Metronome fournit un serveur de chat XMPP. Cette étape est optionnelle, si vous n’avez pas besoin d’un serveur de chat, vous pouvez sauter cette étape. Aucune autre fonction d’ISPConfig ne dépend de ce logiciel.

Installez les packages suivants avec 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 luarocks
luarocks install lpc

Ajoutez un utilisateur shell pour Metronome.

adduser --no-create-home --disabled-login --gecos 'Metronome' metronome

Téléchargez Metronome dans le répertoire /opt et compilez-le.

cd /opt; git clone https://github.com/maranda/metronome.git metronome  
cd ./metronome; ./configure --ostype=debian --prefix=/usr  
make  
make install

Metronome a maintenant été installé dans /opt/metronome.

Share: X/Twitter LinkedIn

Recevez de nouveaux articles dans votre boîte de réception.

Aucun spam. Désabonnez-vous à tout moment.