Serveur Debian · 29 min read · Nov 04, 2025
Le Serveur Parfait - Debian 10 (Nginx, BIND, Dovecot, ISPConfig 3.2)

Ce tutoriel montre comment préparer un serveur Debian 10 (avec Nginx, BIND, Dovecot) pour l’installation d’ISPConfig 3.2, et comment installer ISPConfig 3.2. ISPConfig 3 est un panneau de contrôle d’hébergement web qui vous permet de configurer les services suivants via un navigateur web : serveur web Apache ou nginx, serveur de messagerie Postfix, serveur IMAP/POP3 Courier ou Dovecot, MySQL, serveur de noms BIND ou MyDNS, PureFTPd, SpamAssassin, ClamAV, et bien d’autres. Cette configuration couvre le serveur web Nginx, BIND en tant que serveur DNS, et Dovecot en tant que serveur IMAP / POP3.
1 Note Préliminaire
Dans ce tutoriel, j’utilise le nom d’hôte server1.example.com avec l’adresse IP 192.168.0.100 et la passerelle 192.168.0.1. 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 Debian 10. Cela peut être une image minimale de Debian de votre fournisseur d’hébergement ou vous pouvez utiliser le tutoriel Minimal Debian Server pour configurer le système de base.
Toutes les commandes ci-dessous sont exécutées en tant qu’utilisateur root. Connectez-vous soit en tant qu’utilisateur root directement, soit connectez-vous en tant qu’utilisateur normal et utilisez ensuite la commande
su -pour devenir utilisateur root sur votre serveur avant de continuer. IMPORTANT : Vous devez utiliser ‘su -‘ et pas seulement ‘su’, sinon votre variable PATH est mal définie par Debian.
2 Installer le Serveur SSH
Si vous n’avez pas installé le serveur OpenSSH lors de l’installation du système, vous pouvez le faire maintenant :
apt-get -y install ssh openssh-serverÀ partir de maintenant, vous pouvez utiliser un client SSH tel que PuTTY et vous connecter depuis votre station de travail à votre serveur Debian 10 et suivre les étapes restantes de ce tutoriel.
3 Installer un éditeur de texte en ligne de commande (Optionnel)
J’utiliserai l’éditeur de texte nano dans ce tutoriel. Certains utilisateurs préfèrent l’éditeur classique vi, c’est pourquoi j’installerai les deux éditeurs ici. Le programme vi par défaut a un comportement étrange sur Debian et Ubuntu ; pour corriger cela, nous installons vim-nox :
apt-get -y install nano vim-nox(Vous n’avez pas à faire cela si vous utilisez un éditeur de texte différent tel que joe.)
4 Configurer le Nom d’Hôte
Le nom d’hôte de votre serveur doit être un sous-domaine comme “server1.example.com”. N’utilisez pas un nom de domaine sans partie sous-domaine comme “example.com” comme nom d’hôte car cela causera des problèmes plus tard avec votre configuration de messagerie. Tout d’abord, vous devez vérifier le nom d’hôte dans /etc/hosts et le changer si nécessaire. La ligne doit être : “Adresse IP - espace - nom d’hôte complet incl. domaine - espace - partie sous-domaine”. Éditez /etc/hosts. Faites-le ressembler à ceci :
nano /etc/hosts127.0.0.1 localhost.localdomain localhost
192.168.0.100 server1.example.com server1
# Les lignes suivantes sont souhaitables pour les hôtes compatibles IPv6
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allroutersEnsuite, éditez le fichier /etc/hostname :
nano /etc/hostnameIl doit contenir uniquement la partie sous-domaine, dans notre cas :
server1Enfin, redémarrez le serveur pour appliquer le changement :
rebootReconnectez-vous et vérifiez si le nom d’hôte est correct maintenant avec ces commandes :
hostname
hostname -fLa sortie doit ressembler à ceci :
root@server1:/tmp# hostname
server1
root@server1:/tmp# hostname -f
server1.example.com5 Mettre à Jour Votre Installation Debian
Tout d’abord, assurez-vous que votre /etc/apt/sources.list contient le dépôt buster/updates (cela garantit que vous obtenez toujours les dernières mises à jour pour le scanner de virus ClamAV - ce projet publie des versions très souvent, et parfois les anciennes versions cessent de fonctionner), et que les dépôts contrib et non-free sont activés.
nano /etc/apt/sources.listdeb http://deb.debian.org/debian/ buster main contrib non-free
deb-src http://deb.debian.org/debian/ buster main contrib non-free
deb http://security.debian.org/debian-security buster/updates main contrib non-free
deb-src http://security.debian.org/debian-security buster/updates main contrib non-freeExécutez
apt-get updatepour mettre à jour la base de données des paquets apt et
apt-get upgradepour installer les dernières mises à jour (s’il y en a).
6 Changer 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 dashUtiliser dash comme shell système par défaut (/bin/sh) ? <– Non
Si vous ne faites pas cela, l’installation d’ISPConfig échouera.
7 Synchroniser l’Horloge du Système
Il est judicieux de synchroniser l’horloge du système avec un serveur NTP ( network time protocol) sur Internet. Il suffit d’exécuter
apt-get install ntpet votre heure système sera toujours synchronisée.
8 Installer Postfix, Dovecot, MySQL, rkhunter, et binutils
Nous pouvons installer Postfix, Dovecot, MySQL, rkhunter, et Binutils avec une seule commande :
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 sudo curlVous serez invité à répondre aux questions suivantes :
Type général de configuration de messagerie : <– Internet Site
Nom de messagerie système : <– server1.example.com
Pour sécuriser l’installation de MariaDB / MySQL et désactiver la base de données de test, exécutez cette commande :
mysql_secure_installationNous n’avons pas à changer le mot de passe root de MariaDB car nous venons d’en définir un nouveau lors de l’installation. Répondez aux questions comme suit :
Changer le mot de passe root ? [Y/n] <-- y
Nouveau mot de passe : <-- Entrez un nouveau mot de passe root de base de données
Répétez le nouveau mot de passe : <-- Répétez le mot de passe root de base de données
Supprimer les utilisateurs anonymes ? [Y/n] <-- y
Interdire la connexion root à distance ? [Y/n] <-- y
Supprimer la base de données de test et l'accès à celle-ci ? [Y/n] <-- y
Recharger les tables de privilèges maintenant ? [Y/n] <-- yEnsuite, ouvrez les ports TLS/SSL et de soumission dans Postfix :
nano /etc/postfix/master.cfDécommentez les sections de soumission et smtps comme suit et ajoutez des lignes si nécessaire afin que cette section du fichier master.cf ressemble exactement à celle ci-dessous. IMPORTANT : Supprimez le # devant les lignes qui commencent par smtps et submission aussi et pas seulement des lignes -o après ces lignes !
[...]
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
[...] Redémarrez Postfix ensuite :
service postfix restartNous voulons que MariaDB écoute sur toutes les interfaces, pas seulement localhost, donc nous éditons /etc/mysql/mariadb.conf.d/50-server.cnf et commentons la ligne bind-address = 127.0.0.1 :
nano /etc/mysql/mariadb.conf.d/50-server.cnf[...]
# Au lieu de skip-networking, la valeur par 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
[...] Enregistrez le fichier. Ensuite, définissez la méthode d’authentification par mot de passe dans MariaDB sur native afin que nous puissions utiliser PHPMyAdmin plus tard pour nous connecter en tant qu’utilisateur root :
echo "update mysql.user set plugin = 'mysql_native_password' where user='root';" | mysql -u rootÉditez le fichier /etc/mysql/debian.cnf et définissez le mot de passe root MYSQL / MariaDB là deux fois dans les lignes qui commencent par le mot mot de passe.
nano /etc/mysql/debian.cnfLe mot de passe root MySQL qui doit être ajouté est affiché en rouge. Dans cet exemple, le mot de passe est “howtoforge”.
# Généré automatiquement pour les scripts Debian. NE PAS TOUCHER !
[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 = /usrPour éviter l’erreur ‘ Erreur dans accept : Trop de fichiers ouverts ‘, nous allons définir des limites de fichiers ouverts plus élevées pour MariaDB maintenant.
Ouvrez le fichier /etc/security/limits.conf avec un éditeur :
nano /etc/security/limits.confet ajoutez ces lignes à la fin du fichier.
mysql soft nofile 65535
mysql hard nofile 65535Ensuite, créez un nouveau répertoire /etc/systemd/system/mysql.service.d/ avec la commande mkdir.
mkdir -p /etc/systemd/system/mysql.service.d/et ajoutez un nouveau fichier à l’intérieur :
nano /etc/systemd/system/mysql.service.d/limits.confcollez les lignes suivantes dans ce fichier :
[Service]
LimitNOFILE=infinityEnregistrez le fichier et fermez l’éditeur nano.
Ensuite, nous rechargeons systemd et redémarrons MariaDB :
systemctl daemon-reload
systemctl restart mariadbIgnorez l’avertissement : “ Avertissement : Le fichier d’unité, le fichier de configuration source ou les fichiers de configuration de mariadb.service ont changé sur le disque. Exécutez ‘systemctl daemon-reload’ pour recharger les unités. “.
Installez le système dbconfig-common :
apt-get install dbconfig-common dbconfig-mysqlIl y a actuellement un problème avec le système dbconfig-common de Debian qui empêche l’installation de RoundCube plus tard, corrigez-le en exécutant cette commande :
sed -i -r 's/_dbc_nodb="yes" dbc_mysql_exec/_dbc_nodb="yes"; dbc_mysql_exec/g' /usr/share/dbconfig-common/internal/mysqlMaintenant, vérifiez que le réseau est activé. Exécutez
netstat -tap | grep mysqlLa sortie doit ressembler à ceci :
root@server1:~# netstat -tap | grep mysql
tcp6 0 0 [::]:mysql [::]:* LISTEN 4027/mysqld
root@server1:~#9 Installer Amavisd-new, SpamAssassin, et ClamAV
Pour installer amavisd-new, SpamAssassin, et ClamAV, nous exécutons :
apt-get install amavisd-new spamassassin clamav clamav-daemon unzip bzip2 arj nomarch lzop cabextract p7zip p7zip-full unrar lrzip 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 postgreyLa configuration d’ISPConfig 3 utilise amavisd qui charge la bibliothèque de filtre SpamAssassin en interne, donc nous pouvons arrêter SpamAssassin pour libérer de la RAM :
systemctl stop spamassassin
systemctl disable spamassassin10 Installer Nginx, PHP (PHP-FPM), et Fcgiwrap
Nginx est disponible en tant que paquet pour Debian que nous pouvons installer comme suit :
apt-get install nginxSi Apache2 est déjà installé sur le système, arrêtez-le maintenant…
systemctl stop apache2Le message “ Échec de l’arrêt du service apache2 : Unité apache2.service non chargée. “ est normal et n’indique pas une erreur.
… et supprimez les liens de démarrage système d’Apache :
systemctl disable apache2Démarrez nginx ensuite :
systemctl start nginx(Si Apache2 et nginx sont tous deux installés, l’installateur d’ISPConfig vous demandera lequel vous souhaitez utiliser - répondez nginx dans ce cas. Si l’un de ces deux est installé, ISPConfig effectuera la configuration nécessaire automatiquement.)
Nous pouvons faire fonctionner PHP 7.3 dans nginx via PHP-FPM (PHP-FPM (FastCGI Process Manager) est une implémentation PHP FastCGI alternative avec quelques fonctionnalités supplémentaires utiles pour les sites de toute taille, en particulier les sites plus fréquentés) que nous installons comme suit :
apt-get install php7.3-fpmPHP-FPM est un processus daemon qui exécute un serveur FastCGI sur le socket /var/run/php/php7.3-fpm.sock.
Pour obtenir le support MySQL dans PHP, nous pouvons installer le paquet php7.3-mysql. Il est judicieux d’installer quelques autres modules PHP car vous pourriez en avoir besoin pour vos applications. Vous pouvez rechercher les modules PHP disponibles comme ceci :
apt-cache search php7Choisissez ceux dont vous avez besoin et installez-les comme ceci :
apt-get install php7.3 php7.3-common php7.3-gd php7.3-mysql php7.3-imap php7.3-cli php7.3-cgi php-pear mcrypt imagemagick libruby php7.3-curl php7.3-intl php7.3-pspell php7.3-recode php7.3-sqlite3 php7.3-tidy php7.3-xmlrpc php7.3-xsl memcached php-memcache php-imagick php-gettext php7.3-zip php7.3-mbstring memcached php7.3-soap php7.3-fpm php7.3-opcache php-apcuEnsuite, ouvrez /etc/php/7.3/fpm/php.ini…
nano /etc/php/7.3/fpm/php.ini… et définissez cgi.fix_pathinfo=0 et votre fuseau horaire :
[...]
cgi.fix_pathinfo=0
[...]
date.timezone="Europe/Berlin"
[...] (Vous pouvez trouver tous les fuseaux horaires disponibles dans les répertoires /usr/share/zoneinfo et ses sous-répertoires.)
Maintenant, rechargez PHP-FPM :
systemctl restart php7.3-fpmPour obtenir le support CGI dans nginx, nous installons Fcgiwrap.
Fcgiwrap est un wrapper CGI qui devrait également fonctionner pour des scripts CGI complexes et peut être utilisé pour des environnements d’hébergement partagé car il permet à chaque vhost d’utiliser son propre répertoire cgi-bin.
Installez le paquet fcgiwrap :
apt-get install fcgiwrapAprès l’installation, le daemon fcgiwrap devrait déjà être démarré ; son socket est /var/run/fcgiwrap.socket. S’il n’est pas en cours d’exécution, vous pouvez utiliser le script fservice fcgiwrap pour le démarrer.
C’est tout ! Maintenant, lorsque vous créez un vhost nginx, ISPConfig s’occupera de la configuration correcte du vhost.
10.1 Installer phpMyAdmin
Depuis Debian 10, PHPMyAdmin n’est plus disponible en tant que paquet .deb. Par conséquent, nous allons l’installer à partir des sources.
Créez des dossiers pour PHPMyadmin :
mkdir /usr/share/phpmyadmin
mkdir /etc/phpmyadmin
mkdir -p /var/lib/phpmyadmin/tmp
chown -R www-data:www-data /var/lib/phpmyadmin
touch /etc/phpmyadmin/htpasswd.setupAllez dans le répertoire /tmp et téléchargez les sources de PHPMyAdmin :
cd /tmp
wget https://files.phpmyadmin.net/phpMyAdmin/4.9.0.1/phpMyAdmin-4.9.0.1-all-languages.tar.gzDécompressez le fichier d’archive téléchargé et déplacez les fichiers dans le dossier /usr/share/phpmyadmin et nettoyez le répertoire /tmp.
tar xfz phpMyAdmin-4.9.0.1-all-languages.tar.gz
mv phpMyAdmin-4.9.0.1-all-languages/* /usr/share/phpmyadmin/
rm phpMyAdmin-4.9.0.1-all-languages.tar.gz
rm -rf phpMyAdmin-4.9.0.1-all-languagesCréez un nouveau fichier de configuration pour PHPMyaAdmin basé sur le fichier d’exemple fourni :
cp /usr/share/phpmyadmin/config.sample.inc.php /usr/share/phpmyadmin/config.inc.phpOuvrez le fichier de configuration avec l’éditeur nano :
nano /usr/share/phpmyadmin/config.inc.phpDéfinissez un mot de passe sécurisé (secret blowfish) qui doit faire 32 caractères de long :
$cfg['blowfish_secret'] = 'bD3e6wva9fnd93jVsb7SDgeiBCd452Dh'; /* VOUS DEVEZ REMPLIR CECI POUR L'AUTHENTIFICATION PAR COOKIE ! */N’utilisez pas mon exemple de secret blowfish, définissez le vôtre !
Ensuite, ajoutez une ligne pour définir le répertoire que PHPMyAdmin doit utiliser pour stocker les fichiers temporaires :
$cfg['TempDir'] = '/var/lib/phpmyadmin/tmp';Dans l’étape suivante, nous allons configurer le magasin de configuration de phpMyadmin (base de données).
Connectez-vous à MariaDB en tant qu’utilisateur root :
mysql -u root -pDans le shell MariaDB, créez une nouvelle base de données pour PHPMyAdmin :
MariaDB [(none)]> CREATE DATABASE phpmyadmin;Ensuite, créez un nouvel utilisateur :
MariaDB [(none)]> CREATE USER 'pma'@'localhost' IDENTIFIED BY 'mypassword';Remplacez le mot mypassword par un mot de passe sécurisé de votre choix dans les commandes ci-dessus et ci-dessous, utilisez le même mot de passe deux fois. Ensuite, accordez à l’utilisateur l’accès à cette base de données et rechargez les autorisations de base de données.
MariaDB [(none)]> GRANT ALL PRIVILEGES ON phpmyadmin.* TO 'pma'@'localhost' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> EXITEnfin, chargez les tables SQL dans la base de données :
mysql -u root -p phpmyadmin < /usr/share/phpmyadmin/sql/create_tables.sqlEntrez le mot de passe root de MariaDB lorsque cela est demandé.
Tout ce que nous avons à faire maintenant est de définir les détails de l’utilisateur phpmyadmin dans le fichier de configuration. Ouvrez à nouveau le fichier dans l’éditeur nano :
nano /usr/share/phpmyadmin/config.inc.phpFaites défiler vers le bas jusqu’à ce que vous voyiez les lignes ci-dessous et modifiez-les :
/* Utilisateur utilisé pour manipuler avec le stockage */
$cfg['Servers'][$i]['controlhost'] = 'localhost';
$cfg['Servers'][$i]['controlport'] = '';
$cfg['Servers'][$i]['controluser'] = 'pma';
$cfg['Servers'][$i]['controlpass'] = 'mypassword';
/* Base de données de stockage et tables */
$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
$cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark';
$cfg['Servers'][$i]['relation'] = 'pma__relation';
$cfg['Servers'][$i]['table_info'] = 'pma__table_info';
$cfg['Servers'][$i]['table_coords'] = 'pma__table_coords';
$cfg['Servers'][$i]['pdf_pages'] = 'pma__pdf_pages';
$cfg['Servers'][$i]['column_info'] = 'pma__column_info';
$cfg['Servers'][$i]['history'] = 'pma__history';
$cfg['Servers'][$i]['table_uiprefs'] = 'pma__table_uiprefs';
$cfg['Servers'][$i]['tracking'] = 'pma__tracking';
$cfg['Servers'][$i]['userconfig'] = 'pma__userconfig';
$cfg['Servers'][$i]['recent'] = 'pma__recent';
$cfg['Servers'][$i]['favorite'] = 'pma__favorite';
$cfg['Servers'][$i]['users'] = 'pma__users';
$cfg['Servers'][$i]['usergroups'] = 'pma__usergroups';
$cfg['Servers'][$i]['navigationhiding'] = 'pma__navigationhiding';
$cfg['Servers'][$i]['savedsearches'] = 'pma__savedsearches';
$cfg['Servers'][$i]['central_columns'] = 'pma__central_columns';
$cfg['Servers'][$i]['designer_settings'] = 'pma__designer_settings';
$cfg['Servers'][$i]['export_templates'] = 'pma__export_templates';J’ai marqué les lignes en rouge que j’ai modifiées. Remplacez mypassword par le mot de passe que vous avez choisi pour l’utilisateur phpmyadmin. Notez que les // devant les lignes ont également été supprimés !
Après avoir installé ISPConfig 3.2, vous pouvez accéder à phpMyAdmin comme suit :
Le vhost d’applications ISPConfig sur le port 8081 pour nginx est livré avec une configuration phpMyAdmin, donc vous pouvez utiliser http://server1.example.com:8081/phpmyadmin ou http://server1.example.com:8081/phpMyAdmin pour accéder à phpMyAdmin.
Si vous souhaitez utiliser un alias /phpmyadmin ou /phpMyAdmin que vous pouvez utiliser depuis vos sites web, c’est un peu plus compliqué que pour Apache car nginx n’a pas d’alias globaux (c’est-à-dire des alias qui peuvent être définis pour tous les vhosts). Par conséquent, vous devez définir ces alias pour chaque vhost à partir duquel vous souhaitez accéder à phpMyAdmin.
Pour ce faire, collez ce qui suit dans le champ Directives nginx de l’onglet Options du site web dans ISPConfig plus tard :
location /phpmyadmin {
root /usr/share/;
index index.php index.html index.htm;
location ~ ^/phpmyadmin/(.+\.php)$ {
try_files $uri =404;
root /usr/share/;
fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $request_filename;
include /etc/nginx/fastcgi_params;
fastcgi_param PATH_INFO $fastcgi_script_name;
fastcgi_buffer_size 128k;
fastcgi_buffers 256 4k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
fastcgi_intercept_errors on;
}
location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
root /usr/share/;
}
}
location /phpMyAdmin {
rewrite ^/* /phpmyadmin last;
}Si vous utilisez http s au lieu de http pour votre vhost, vous devez ajouter la ligne fastcgi_param HTTPS on; à votre configuration phpMyAdmin comme ceci :
location /phpmyadmin {
root /usr/share/;
index index.php index.html index.htm;
location ~ ^/phpmyadmin/(.+\.php)$ {
try_files $uri =404;
root /usr/share/;
fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
fastcgi_param HTTPS on; # <-- ajoutez cette ligne
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $request_filename;
include /etc/nginx/fastcgi_params;
fastcgi_param PATH_INFO $fastcgi_script_name;
fastcgi_buffer_size 128k;
fastcgi_buffers 256 4k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
fastcgi_intercept_errors on;
}
location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
root /usr/share/;
}
}
location /phpMyAdmin {
rewrite ^/* /phpmyadmin last;
}Si vous utilisez à la fois http et https pour votre vhost, vous pouvez utiliser la variable $https. Retournez au champ Directives nginx, et au lieu de fastcgi_param HTTPS on; vous ajoutez la ligne fastcgi_param HTTPS $https; afin que vous puissiez utiliser phpMyAdmin pour les requêtes http et https :
location /phpmyadmin {
root /usr/share/;
index index.php index.html index.htm;
location ~ ^/phpmyadmin/(.+\.php)$ {
try_files $uri =404;
root /usr/share/;
fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
fastcgi_param HTTPS $https; # <-- ajoutez cette ligne
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $request_filename;
include /etc/nginx/fastcgi_params;
fastcgi_param PATH_INFO $fastcgi_script_name;
fastcgi_buffer_size 128k;
fastcgi_buffers 256 4k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
fastcgi_intercept_errors on;
}
location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
root /usr/share/;
}
}
location /phpMyAdmin {
rewrite ^/* /phpmyadmin last;
}11 Installer Let’s Encrypt
ISPConfig utilise maintenant acme.sh comme client Let’s Encrypt. Installez acme.sh en utilisant la commande suivante :
curl https://get.acme.sh | sh -s12 Installer Mailman
ISPConfig vous permet de gérer (créer/modifier/supprimer) des listes de diffusion Mailman. Si vous souhaitez utiliser cette fonctionnalité, installez Mailman comme suit :
apt-get install mailmanSélectionnez au moins une langue, par exemple :
Langues à prendre en charge : <– en (Anglais)
Liste de sites manquante <– Ok
Avant de pouvoir démarrer Mailman, une première liste de diffusion appelée mailman doit être créée :
newlist mailmanroot@server1:~# newlist mailman
Entrez l’email de la personne gérant la liste : <– adresse email de l’administrateur, par exemple [email protected]
Mot de passe initial de mailman : <– mot de passe administrateur pour la liste mailman
Pour terminer la création de votre liste de diffusion, vous devez éditer votre fichier /etc/aliases (ou équivalent) en ajoutant les lignes suivantes, et éventuellement en exécutant le programme newaliases :
liste de diffusion mailman
mailman: “|/var/lib/mailman/mail/mailman post mailman”
mailman-admin: “|/var/lib/mailman/mail/mailman admin mailman”
mailman-bounces: “|/var/lib/mailman/mail/mailman bounces mailman”
mailman-confirm: “|/var/lib/mailman/mail/mailman confirm mailman”
mailman-join: “|/var/lib/mailman/mail/mailman join mailman”
mailman-leave: “|/var/lib/mailman/mail/mailman leave mailman”
mailman-owner: “|/var/lib/mailman/mail/mailman owner mailman”
mailman-request: “|/var/lib/mailman/mail/mailman request mailman”
mailman-subscribe: “|/var/lib/mailman/mail/mailman subscribe mailman”
mailman-unsubscribe: “|/var/lib/mailman/mail/mailman unsubscribe mailman”
Appuyez sur entrer pour notifier le propriétaire de mailman… <– ENTRER
root@server1:~#
Ouvrez ensuite /etc/aliases…
nano /etc/aliases… et ajoutez les lignes suivantes :
[...]
## liste de diffusion mailman
mailman: "|/var/lib/mailman/mail/mailman post mailman"
mailman-admin: "|/var/lib/mailman/mail/mailman admin mailman"
mailman-bounces: "|/var/lib/mailman/mail/mailman bounces mailman"
mailman-confirm: "|/var/lib/mailman/mail/mailman confirm mailman"
mailman-join: "|/var/lib/mailman/mail/mailman join mailman"
mailman-leave: "|/var/lib/mailman/mail/mailman leave mailman"
mailman-owner: "|/var/lib/mailman/mail/mailman owner mailman"
mailman-request: "|/var/lib/mailman/mail/mailman request mailman"
mailman-subscribe: "|/var/lib/mailman/mail/mailman subscribe mailman"
mailman-unsubscribe: "|/var/lib/mailman/mail/mailman unsubscribe mailman" Exécutez
newaliasesaprès cela et redémarrez Postfix :
systemctl restart postfixEnsuite, démarrez le daemon Mailman :
systemctl restart mailmanAprès avoir installé ISPConfig 3, vous pouvez accéder à Mailman comme suit :
Le vhost d’applications ISPConfig sur le port 8081 pour nginx est livré avec une configuration Mailman, donc vous pouvez utiliser http://server1.example.com:8081/cgi-bin/mailman/admin/
Si vous souhaitez utiliser Mailman depuis vos sites web, c’est un peu plus compliqué que pour Apache car nginx n’a pas d’alias globaux (c’est-à-dire des alias qui peuvent être définis pour tous les vhosts). Par conséquent, vous devez définir ces alias pour chaque vhost à partir duquel vous souhaitez accéder à Mailman.
Pour ce faire, collez ce qui suit dans le champ Directives nginx de l’onglet Options du site web dans ISPConfig :
location /cgi-bin/mailman {
root /usr/lib/;
fastcgi_split_path_info (^/cgi-bin/mailman/[^/]*)(.*)$;
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
fastcgi_intercept_errors on;
fastcgi_pass unix:/var/run/fcgiwrap.socket;
}
location /images/mailman {
alias /usr/share/images/mailman;
}
location /pipermail {
alias /var/lib/mailman/archives/public;
autoindex on;
}Cela définit l’alias /cgi-bin/mailman/ pour votre vhost, ce qui signifie que vous pouvez accéder à l’interface d’administration Mailman pour une liste à http://
Sous http://
13 Installer PureFTPd et Quota
PureFTPd et quota peuvent être installés avec la commande suivante :
apt-get install pure-ftpd-common pure-ftpd-mysql quota quotatoolÉditez le fichier /etc/default/pure-ftpd-common…
nano /etc/default/pure-ftpd-common… et assurez-vous que le mode de démarrage est défini sur standalone et définissez VIRTUALCHROOT=true :
[...]
STANDALONE_OR_INETD=standalone
[...]
VIRTUALCHROOT=true
[...] Maintenant, nous configurons PureFTPd pour autoriser les sessions FTP et TLS. FTP est un protocole très peu sécurisé car tous les mots de passe et toutes les données sont transférés en texte clair. En utilisant TLS, toute la communication peut être chiffrée, rendant ainsi FTP beaucoup plus sécurisé.
Si vous souhaitez autoriser les sessions FTP et TLS, exécutez
echo 1 > /etc/pure-ftpd/conf/TLSPour utiliser TLS, nous devons créer un certificat SSL. Je le crée dans /etc/ssl/private/, donc je crée d’abord ce répertoire :
mkdir -p /etc/ssl/private/Ensuite, nous pouvons générer le certificat SSL comme suit :
openssl req -x509 -nodes -days 7300 -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pemNom du pays (code à 2 lettres) [AU] : <– Entrez le nom de votre pays (par exemple, “DE”).
Nom de l’état ou de la province (nom complet) [Some-State] : <– Entrez le nom de votre état ou province.
Nom de la localité (par exemple, ville) [] : <– Entrez votre ville.
Nom de l’organisation (par exemple, entreprise) [Internet Widgits Pty Ltd] : <– Entrez le nom de votre organisation (par exemple, le nom de votre entreprise).
Nom de l’unité organisationnelle (par exemple, section) [] : <– Entrez le nom de votre unité organisationnelle (par exemple, “Département IT”).
Nom commun (par exemple, VOTRE nom) [] : <– Entrez le nom de domaine entièrement qualifié du système (par exemple, “server1.example.com”).
Adresse e-mail [] : <– Entrez votre adresse e-mail.
Changez les permissions du certificat SSL :
chmod 600 /etc/ssl/private/pure-ftpd.pemEnsuite, redémarrez PureFTPd :
systemctl restart pure-ftpd-mysqlÉditez /etc/fstab. Le mien ressemble à ceci (j’ai ajouté,usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0 à la partition avec le point de montage /) :
nano /etc/fstab# /etc/fstab : informations statiques sur le système de fichiers.
#
# Utilisez 'blkid' pour imprimer l'identifiant universel unique pour un
# périphérique ; cela peut être utilisé avec UUID= comme un moyen plus robuste de nommer des périphériques
# qui fonctionne même si des disques sont ajoutés et retirés. Voir fstab(5).
#
#
# / était sur /dev/sda1 pendant l'installation
UUID=45576b38-39e8-4994-b8c1-ea4870e2e614 / ext4 errors=remount-ro,usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0 0 1
# swap était sur /dev/sda5 pendant l'installation
UUID=8bea0d1e-ec37-4b20-9976-4b7daaa3eb69 none swap sw 0 0
/dev/sr0 /media/cdrom0 udf,iso9660 user,noauto 0 0 Pour activer le quota, exécutez ces commandes :
mount -o remount /quotacheck -avugm
quotaon -avug14 Installer le Serveur DNS BIND
BIND peut être installé comme suit :
apt-get install bind9 dnsutilsSi votre serveur est une machine virtuelle, il est fortement recommandé d’installer le démon haveged pour obtenir une plus grande entropie pour la signature DNSSEC. Vous pouvez installer haveged sur des serveurs non virtuels également, cela ne devrait pas nuire.
apt-get -y install haveged
systemctl enable haveged
systemctl start havegedUne explication sur ce sujet peut être trouvée ici.
15 Installer Webalizer, AWStats et GoAccess
Webalizer et AWStats peuvent être installés comme suit :
apt-get install webalizer awstats geoip-database libtimedate-perl libclass-dbi-mysql-perlOuvrez ensuite /etc/cron.d/awstats…
nano /etc/cron.d/awstats… et commentez tout dans ce fichier :
#MAILTO=root
#*/10 * * * * www-data [ -x /usr/share/awstats/tools/update.sh ] && /usr/share/awstats/tools/update.sh
# Générer des rapports statiques :
#10 03 * * * www-data [ -x /usr/share/awstats/tools/buildstatic.sh ] && /usr/share/awstats/tools/buildstatic.shInstallation de la dernière version de GoAccess directement depuis le dépôt GoAccess :
echo "deb https://deb.goaccess.io/ $(lsb_release -cs) main" | sudo tee -a /etc/apt/sources.list.d/goaccess.list
wget -O - https://deb.goaccess.io/gnugpg.key | sudo apt-key --keyring /etc/apt/trusted.gpg.d/goaccess.gpg add -
apt-get update
apt-get install goaccess16 Installer Jailkit
Jailkit est nécessaire uniquement si vous souhaitez chrooter les utilisateurs SSH. Il peut être installé comme suit (important : Jailkit doit être installé avant ISPConfig - il ne peut pas être installé après !) :
apt-get install build-essential autoconf automake libtool flex bison debhelper binutilscd /tmp
wget http://olivier.sessink.nl/jailkit/jailkit-2.20.tar.gz
tar xvfz jailkit-2.20.tar.gz
cd jailkit-2.20
echo 5 > debian/compat
./debian/rules binaryVous pouvez maintenant installer le paquet Jailkit.deb comme suit :
cd ..
dpkg -i jailkit_2.20-1_*.deb
rm -rf jailkit-2.20*17 Installer Fail2ban et le Pare-feu UFW
C’est optionnel mais recommandé, car le moniteur ISPConfig essaie de montrer le journal :
apt-get install fail2banPour faire en sorte que fail2ban surveille PureFTPd et Dovecot, créez le fichier /etc/fail2ban/jail.local :
nano /etc/fail2ban/jail.local[pure-ftpd]
enabled = true
port = ftp
filter = pure-ftpd
logpath = /var/log/syslog
maxretry = 3
[dovecot]
enabled = true
filter = dovecot
logpath = /var/log/mail.log
maxretry = 5
[postfix-sasl]
enabled = true
port = smtp
filter = postfix[mode=auth]
logpath = /var/log/mail.log
maxretry = 3Redémarrez fail2ban ensuite :
systemctl restart fail2banPour installer le pare-feu UFW, exécutez cette commande apt :
apt-get install ufw18 Installer RoundCube
Installez RoundCube avec cette commande :
apt-get install roundcube roundcube-core roundcube-mysql roundcube-pluginsL’installateur posera les questions suivantes :
Configurer la base de données pour roundcube avec dbconfig.common ? <-- oui
Mot de passe de l'application MySQL pour roundcube : <-- appuyez sur entrer
Mot de passe de l'utilisateur administratif des bases de données : <-- entrez le mot de passe root MySQL ici.Ensuite, éditez le fichier de configuration RoundCube /etc/roundcube/config.inc.php et ajustez quelques paramètres :
nano /etc/roundcube/config.inc.phpDéfinissez le default_host sur localhost et le smtp_server.
$config['default_host'] = 'localhost';
$config['smtp_server'] = 'localhost';
$config['smtp_port'] = 25;ISPConfig a quelques configurations dans le vhost d’applications nginx pour squirrelmail qui fonctionnent également pour roundcube. Nous l’activons avec :
ln -s /usr/share/roundcube /usr/share/squirrelmailhttp://192.168.0.100:8081/webmail
http://server1.example.com:8081/webmail (après avoir installé ISPConfig, voir le chapitre suivant)

19 Installer ISPConfig 3
Avant de commencer l’installation d’ISPConfig, assurez-vous qu’Apache est arrêté (s’il est installé - il est possible que certains de vos paquets installés aient installé Apache en tant que dépendance sans que vous le sachiez). Si Apache2 est déjà installé sur le système, arrêtez-le maintenant…
systemctl stop apache2… et supprimez les liens de démarrage système d’Apache :
update-rc.d -f apache2 removeAssurez-vous qu’nginx fonctionne :
systemctl start nginx(Si vous avez à la fois Apache et nginx installés, l’installateur vous demandera lequel vous souhaitez utiliser : Apache et nginx détectés. Sélectionnez le serveur à utiliser pour ISPConfig : (apache,nginx) [apache] :
Tapez nginx. Si seul Apache ou nginx est installé, cela est automatiquement détecté par l’installateur, et aucune question n’est posée.)
Pour installer ISPConfig 3.2 à partir de la dernière version publiée, faites ceci :
cd /tmp
wget http://www.ispconfig.org/downloads/ISPConfig-3-stable.tar.gz
tar xfz ISPConfig-3-stable.tar.gz
cd ispconfig3_install/install/L’étape suivante consiste à exécuter
php -q install.phpCela démarrera l’installateur d’ISPConfig 3. L’installateur configurera tous les services comme Postfix, Nginx, Dovecot, etc. pour vous.
# php -q install.php
--------------------------------------------------------------------------------
_____ ___________ _____ __ _ ____
|_ _/ ___| ___ \ / __ \ / _(_) /__ \
| | \ `--.| |_/ / | / \/ ___ _ __ | |_ _ __ _ _/ /
| | `--. \ __/ | | / _ \| '_ \| _| |/ _` | |_ |
_| |_\__/ / | | \__/\ (_) | | | | | | | (_| | ___\ \
\___/\____/\_| \____/\___/|_| |_|_| |_\__, | \____/
__/ |
|___/
--------------------------------------------------------------------------------
>> Configuration initialeSystème d'exploitation : Debian 10.0 (Buster) ou compatibleLes questions suivantes seront pour la configuration principale, donc soyez prudent.
Les valeurs par défaut sont entre [crochets] et peuvent être acceptées avec .
Tapez "quit" (sans les guillemets) pour arrêter l'installateur.
Sélectionnez la langue (en,de) [en] : <-- Appuyez sur EntréeMode d'installation (standard,expert) [standard] : <-- Appuyez sur EntréeNom d'hôte entièrement qualifié (FQDN) du serveur, par ex. server1.domain.tld [server1.canomi.com] : <-- Appuyez sur EntréeNom d'hôte du serveur MySQL [localhost] : <-- Appuyez sur EntréePort du serveur MySQL [3306] : <-- Appuyez sur EntréeNom d'utilisateur root MySQL [root] : <-- Appuyez sur EntréeMot de passe root MySQL [] : <-- Entrez votre mot de passe root MySQLBase de données MySQL à créer [dbispconfig] : <-- Appuyez sur EntréeJeu de caractères MySQL [utf8] : <-- Appuyez sur EntréeApache et nginx détectés. Sélectionnez le serveur à utiliser pour ISPConfig : (apache,nginx) [apache] : <-- nginx
Configuration de Postgrey
Configuration de Postfix
Génération d'une clé privée RSA de 4096 bits
.......................................................................++
........................................................................................................................................++
écriture de la nouvelle clé privée dans 'smtpd.key'
-----
Vous allez être invité à entrer des informations qui seront incorporées
dans votre demande de certificat.
Ce que vous allez entrer est ce qu'on appelle un Nom Distingué ou DN.
Il y a pas mal de champs mais vous pouvez laisser certains vides
Pour certains champs, il y aura une valeur par défaut,
Si vous entrez '.', le champ sera laissé vide.
-----
Nom du pays (code à 2 lettres) [AU] : <-- Entrez le code pays à 2 lettres
Nom de l'état ou de la province (nom complet) [Some-State] : <-- Entrez le nom de l'état
Nom de la localité (par exemple, ville) [] : <-- Entrez votre ville
Nom de l'organisation (par exemple, entreprise) [Internet Widgits Pty Ltd] : <-- Entrez le nom de votre entreprise ou appuyez sur entrer
Nom de l'unité organisationnelle (par exemple, section) [] : <-- Appuyez sur Entrée
Nom commun (par exemple, serveur FQDN ou VOTRE nom) [] : <-- Entrez le nom d'hôte du serveur, dans mon cas : server1.example.com
Adresse e-mail [] : <-- Appuyez sur Entrée
Configuration de Mailman
Configuration de Dovecot
Configuration de Spamassassin
Configuration d'Amavisd
Configuration de Getmail
Configuration de BIND
Configuration de Jailkit
Configuration de Pureftpd
Configuration de Nginx
Configuration de vlogger
[INFO] service Metronome XMPP Server non détectéConfiguration du Pare-feu UFW
Configuration de Fail2ban
[INFO] service OpenVZ non détecté
Configuration du vhost d'applications
Installation d'ISPConfig
Port ISPConfig [8080] :Mot de passe administrateur [admin] : <-- Entrez le mot de passe utilisateur administrateur ISPConfig souhaité iciSouhaitez-vous une connexion sécurisée (SSL) à l'interface web d'ISPConfig (y,n) [y] : <-- Appuyez sur EntréeGénération de la clé privée RSA, longueur de 4096 bits
.......................++
................................................................................................................................++
Vous allez être invité à entrer des informations qui seront incorporées
dans votre demande de certificat.
Ce que vous allez entrer est ce qu'on appelle un Nom Distingué ou DN.
Il y a pas mal de champs mais vous pouvez laisser certains vides
Pour certains champs, il y aura une valeur par défaut,
Si vous entrez '.', le champ sera laissé vide.
-----
Nom du pays (code à 2 lettres) [AU] : <-- Entrez le code pays à 2 lettres
Nom de l'état ou de la province (nom complet) [Some-State] : <-- Entrez le nom de l'état
Nom de la localité (par exemple, ville) [] : <-- Entrez votre ville
Nom de l'organisation (par exemple, entreprise) [Internet Widgits Pty Ltd] : <-- Entrez le nom de votre entreprise ou appuyez sur entrer
Nom de l'unité organisationnelle (par exemple, section) [] : <-- Appuyez sur Entrée
Nom commun (par exemple, serveur FQDN ou VOTRE nom) [] : <-- Entrez le nom d'hôte du serveur, dans mon cas : server1.example.com
Adresse e-mail [] : <-- Appuyez sur EntréeVeuillez entrer les 'attributs' supplémentaires suivants
à envoyer avec votre demande de certificat
Un mot de passe de défi [] : <-- Appuyez sur Entrée
Un nom d'entreprise optionnel [] : <-- Appuyez sur Entrée
écriture de la clé RSA
Configuration du Serveur de Base de Données
Installation de la crontab d'ISPConfig
aucune crontab pour root
aucune crontab pour getmail
Détecter les adresses IP
Redémarrage des services ...
Installation terminée.L’installateur configure automatiquement tous les services sous-jacents, donc aucune configuration manuelle n’est nécessaire.
Après cela, vous pouvez accéder à ISPConfig 3 sous http(s)://server1.example.com:8080/ ou http(s)://192.168.1.100:8080/ (http ou https dépend de ce que vous avez choisi lors de l’installation). Connectez-vous avec le nom d’utilisateur admin et le mot de passe admin (vous devriez changer le mot de passe par défaut après votre première connexion) :


Enfin, nous corrigeons certaines permissions de l’installation de RoundCube.
chown root:ispapps /etc/roundcube/debian-db.php
chmod 640 /etc/roundcube/debian-db.php
chown root:ispapps /etc/roundcube/config.inc.php
chmod 640 /etc/roundcube/config.inc.php
chown -R ispapps:adm /var/log/roundcube
chmod -R 750 /var/log/roundcube
chown -R ispapps:ispapps /var/lib/roundcube/temp
chmod -R 750 /var/lib/roundcube/tempLe système est maintenant prêt à être utilisé.
Il existe certains plugins pour intégrer RoundCube Webmail avec ISPConfig, consultez ici les instructions d’installation du plugin ISPConfig RoundCube.
20.1 Manuel d’ISPConfig 3
Pour apprendre à utiliser ISPConfig 3, je recommande fortement de télécharger le Manuel d’ISPConfig 3.
Sur plus de 300 pages, il couvre le concept derrière ISPConfig (administrateur, revendeurs, clients), explique comment installer et mettre à jour ISPConfig 3, inclut une référence pour tous les formulaires et champs de formulaire dans ISPConfig avec des exemples d’entrées valides, et fournit des tutoriels pour les tâches les plus courantes dans ISPConfig 3. Il décrit également comment sécuriser votre serveur et comprend une section de dépannage à la fin.
21 Téléchargement de l’image de machine virtuelle de ce tutoriel
Ce tutoriel est disponible sous forme d’image de machine virtuelle prête à l’emploi au format ovf/ova compatible avec VMWare et Virtualbox. L’image de machine virtuelle utilise les détails de connexion suivants :
Connexion SSH / Shell
Nom d’utilisateur : administrator
Mot de passe : howtoforge
Nom d’utilisateur : root
Mot de passe : howtoforge
Connexion ISPConfig
Nom d’utilisateur : admin
Mot de passe : howtoforge
Connexion MySQL
Nom d’utilisateur : root
Mot de passe : howtoforge
L’IP de la VM est 192.168.0.100, elle peut être changée dans le fichier /etc/network/interfaces. Veuillez changer tous les mots de passe ci-dessus pour sécuriser la machine virtuelle.
22 Liens
- Debian : http://www.debian.org/
- ISPConfig : http://www.ispconfig.org/
Recevez de nouveaux articles dans votre boîte de réception.
Aucun spam. Désabonnez-vous à tout moment.