Серверы · 25 min read · Nov 04, 2025

Идеальный сервер - Debian 10 (Nginx, BIND, Dovecot, ISPConfig 3.2)

Этот учебник показывает, как подготовить сервер Debian 10 (с Nginx, BIND, Dovecot) для установки ISPConfig 3.2 и как установить ISPConfig 3.2. ISPConfig 3 - это панель управления веб-хостингом, которая позволяет вам настраивать следующие службы через веб-браузер: веб-сервер Apache или nginx, почтовый сервер Postfix, IMAP/POP3 сервер Courier или Dovecot, MySQL, BIND или MyDNS сервер имен, PureFTPd, SpamAssassin, ClamAV и многие другие. Эта настройка охватывает веб-сервер Nginx, BIND в качестве DNS-сервера и Dovecot в качестве IMAP / POP3 сервера.

1 Предварительная заметка

В этом учебнике я использую имя хоста server1.example.com с IP-адресом 192.168.0.100 и шлюзом 192.168.0.1. Эти настройки могут отличаться у вас, поэтому вам нужно заменить их, где это необходимо. Прежде чем продолжить, вам необходимо иметь минимальную установку Debian 10. Это может быть минимальный образ Debian от вашего хостинг-провайдера или вы можете использовать учебник по минимальному серверу Debian для настройки базовой системы.

Все команды ниже выполняются от имени пользователя root. Либо войдите как пользователь root напрямую, либо войдите как ваш обычный пользователь, а затем используйте команду

su -

чтобы стать пользователем root на вашем сервере, прежде чем продолжить. ВАЖНО: Вы должны использовать ‘su -‘ и не просто ‘su’, иначе ваша переменная PATH будет установлена неправильно Debian.

2 Установите SSH-сервер

Если вы не установили сервер OpenSSH во время установки системы, вы можете сделать это сейчас:

apt-get -y install ssh openssh-server

С этого момента вы можете использовать SSH-клиент, такой как PuTTY, и подключаться с вашего рабочего места к вашему серверу Debian 10 и следовать оставшимся шагам из этого учебника.

3 Установите текстовый редактор оболочки (необязательно)

Я буду использовать текстовый редактор nano в этом учебнике. Некоторые пользователи предпочитают классический редактор vi, поэтому я установлю оба редактора здесь. Программа vi по умолчанию имеет странное поведение на Debian и Ubuntu; чтобы исправить это, мы устанавливаем vim-nox:

apt-get -y install nano vim-nox

(Вам не нужно делать это, если вы используете другой текстовый редактор, такой как joe.)

4 Настройте имя хоста

Имя хоста вашего сервера должно быть поддоменом, например “server1.example.com”. Не используйте имя домена без части поддомена, например “example.com”, в качестве имени хоста, так как это приведет к проблемам позже с вашей почтовой настройкой. Сначала вам следует проверить имя хоста в /etc/hosts и изменить его при необходимости. Строка должна выглядеть так: “IP-адрес - пробел - полное имя хоста с доменом - пробел - часть поддомена”. Отредактируйте /etc/hosts. Пусть это будет выглядеть так:

nano /etc/hosts
127.0.0.1       localhost.localdomain   localhost
192.168.0.100   server1.example.com     server1

# Следующие строки желательны для хостов, поддерживающих IPv6
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

Затем отредактируйте файл /etc/hostname:

nano /etc/hostname

Он должен содержать только часть поддомена, в нашем случае:

server1

Наконец, перезагрузите сервер, чтобы применить изменения:

reboot

Войдите снова и проверьте, правильно ли теперь имя хоста с помощью этих команд:

hostname  
hostname -f

Вывод должен выглядеть так:

root@server1:/tmp# hostname  
server1  
root@server1:/tmp# hostname -f  
server1.example.com

5 Обновите вашу установку Debian

Сначала убедитесь, что ваш /etc/apt/sources.list содержит репозиторий buster/updates (это гарантирует, что вы всегда получаете самые новые обновления для вирусного сканера ClamAV - этот проект часто публикует релизы, и иногда старые версии перестают работать), и что репозитории contrib и non-free включены.

nano /etc/apt/sources.list
deb 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-free

Запустите

apt-get update

чтобы обновить базу данных пакетов apt и

apt-get upgrade

чтобы установить последние обновления (если они есть).

6 Измените оболочку по умолчанию

/bin/sh является символической ссылкой на /bin/dash, однако нам нужна /bin/bash, а не /bin/dash. Поэтому мы делаем это:

dpkg-reconfigure dash

Использовать dash в качестве оболочки по умолчанию для системы (/bin/sh)? <– Нет

Если вы этого не сделаете, установка ISPConfig завершится неудачей.

7 Синхронизируйте системные часы

Хорошей идеей является синхронизация системных часов с сервером NTP ( n etwork t ime p rotocol) через Интернет. Просто выполните

apt-get install ntp

и ваше системное время всегда будет синхронизировано.

8 Установите Postfix, Dovecot, MySQL, rkhunter и binutils

Мы можем установить Postfix, Dovecot, MySQL, rkhunter и Binutils одной командой:

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 curl

Вам будут заданы следующие вопросы:

Общий тип конфигурации почты: <– Интернет-сайт
Системное имя почты: <– server1.example.com

Чтобы обеспечить безопасность установки MariaDB / MySQL и отключить тестовую базу данных, выполните эту команду:

mysql_secure_installation

Нам не нужно менять пароль root для MariaDB, так как мы только что установили новый во время установки. Ответьте на вопросы следующим образом:

Изменить пароль root? [Y/n] <-- y  
Новый пароль: <-- Введите новый пароль root для базы данных  
Повторите новый пароль: <-- Повторите пароль root для базы данных  
Удалить анонимных пользователей? [Y/n] <-- y  
Запретить удаленный вход root? [Y/n] <-- y  
Удалить тестовую базу данных и доступ к ней? [Y/n] <-- y  
Перезагрузить таблицы привилегий сейчас? [Y/n] <-- y

Далее откройте порты TLS/SSL и отправки в Postfix:

nano /etc/postfix/master.cf

Раскомментируйте разделы отправки и smtps следующим образом и добавьте строки, где это необходимо, чтобы этот раздел файла master.cf выглядел точно так же, как ниже. ВАЖНО: Удалите # перед строками, которые начинаются с smtps и отправки, а не только перед строками -o после этих строк!

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

Перезапустите Postfix после этого:

service postfix restart

Мы хотим, чтобы MariaDB слушал на всех интерфейсах, а не только на localhost, поэтому редактируем /etc/mysql/mariadb.conf.d/50-server.cnf и закомментируем строку bind-address = 127.0.0.1:

nano /etc/mysql/mariadb.conf.d/50-server.cnf
[...]  

# Вместо skip-networking по умолчанию теперь слушает только на  
# localhost, что более совместимо и не менее безопасно.  
#bind-address           = 127.0.0.1  
  
[...]  

Сохраните файл. Затем установите метод аутентификации пароля в MariaDB на native, чтобы мы могли использовать PHPMyAdmin позже для подключения в качестве пользователя root:

echo "update mysql.user set plugin = 'mysql_native_password' where user='root';" | mysql -u root

Отредактируйте файл /etc/mysql/debian.cnf и дважды установите пароль root для MYSQL / MariaDB в строках, которые начинаются со слова password.

nano /etc/mysql/debian.cnf

Пароль root для MySQL, который необходимо добавить, показан красным. В этом примере пароль - “howtoforge”.

# Автоматически сгенерировано для скриптов Debian. НЕ ТРОГАЙТЕ!  
[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 = /usr

Чтобы предотвратить ошибку ‘ Ошибка в accept: Слишком много открытых файлов ‘, мы сейчас установим более высокие лимиты открытых файлов для MariaDB.

Откройте файл /etc/security/limits.conf с помощью редактора:

nano /etc/security/limits.conf

и добавьте эти строки в конец файла.

mysql soft nofile 65535  
mysql hard nofile 65535

Затем создайте новый каталог /etc/systemd/system/mysql.service.d/ с помощью команды mkdir.

mkdir -p /etc/systemd/system/mysql.service.d/

и добавьте новый файл внутри:

nano /etc/systemd/system/mysql.service.d/limits.conf

вставьте следующие строки в этот файл:

[Service]  
LimitNOFILE=infinity

Сохраните файл и закройте редактор nano.

Затем мы перезагрузим systemd и перезапустим MariaDB:

systemctl daemon-reload  
systemctl restart mariadb

Игнорируйте предупреждение: “ Предупреждение: Файл юнита, файл конфигурации источника или drop-ins службы mariadb.service изменились на диске. Запустите ‘systemctl daemon-reload’, чтобы перезагрузить юниты. “.

Установите систему dbconfig-common:

apt-get install dbconfig-common dbconfig-mysql

В настоящее время существует проблема с системой dbconfig-common Debian, которая предотвращает установку RoundCube позже, исправьте это, выполнив эту команду:

sed -i -r 's/_dbc_nodb="yes" dbc_mysql_exec/_dbc_nodb="yes"; dbc_mysql_exec/g' /usr/share/dbconfig-common/internal/mysql

Теперь проверьте, что сеть включена. Выполните

netstat -tap | grep mysql

Вывод должен выглядеть так:

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

9 Установите Amavisd-new, SpamAssassin и ClamAV

Чтобы установить amavisd-new, SpamAssassin и ClamAV, мы выполняем:

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 postgrey

Настройка ISPConfig 3 использует amavisd, который загружает библиотеку фильтра SpamAssassin внутренне, поэтому мы можем остановить SpamAssassin, чтобы освободить немного ОЗУ:

systemctl stop spamassassin  
systemctl disable spamassassin

10 Установите Nginx, PHP (PHP-FPM) и Fcgiwrap

Nginx доступен в виде пакета для Debian, который мы можем установить следующим образом:

apt-get install nginx

Если Apache2 уже установлен в системе, остановите его сейчас…

systemctl stop apache2

Сообщение “ Не удалось остановить apache2.service: Юнит apache2.service не загружен. “ нормально и не указывает на ошибку.

… и удалите ссылки на запуск системы Apache:

systemctl disable apache2

Запустите nginx после этого:

systemctl start nginx

(Если оба Apache2 и nginx установлены, установщик ISPConfig спросит вас, какой из них вы хотите использовать - ответьте nginx в этом случае. Если установлен только один из этих двух, ISPConfig автоматически выполнит необходимую конфигурацию.)

Мы можем заставить PHP 7.3 работать в nginx через PHP-FPM (PHP-FPM (FastCGI Process Manager) - это альтернативная реализация PHP FastCGI с некоторыми дополнительными функциями, полезными для сайтов любого размера, особенно более загруженных сайтов), который мы устанавливаем следующим образом:

apt-get install php7.3-fpm

PHP-FPM - это демон, который запускает сервер FastCGI на сокете /var/run/php/php7.3-fpm.sock.

Чтобы получить поддержку MySQL в PHP, мы можем установить пакет php7.3-mysql. Также неплохо установить некоторые другие модули PHP, так как они могут понадобиться для ваших приложений. Вы можете искать доступные модули PHP так:

apt-cache search php7

Выберите те, которые вам нужны, и установите их так:

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-apcu

Затем откройте /etc/php/7.3/fpm/php.ini…

nano /etc/php/7.3/fpm/php.ini

… и установите cgi.fix_pathinfo=0 и ваш часовой пояс:

[...]  
cgi.fix_pathinfo=0  
[...]  
date.timezone="Europe/Berlin"

(Вы можете найти все доступные часовые пояса в каталогах /usr/share/zoneinfo и его подкаталогах.)

Теперь перезагрузите PHP-FPM:

systemctl restart php7.3-fpm

Чтобы получить поддержку CGI в nginx, мы устанавливаем Fcgiwrap.

Fcgiwrap - это обертка CGI, которая также должна работать для сложных CGI-скриптов и может использоваться для сред совместного хостинга, так как она позволяет каждому vhost использовать свой собственный каталог cgi-bin.

Установите пакет fcgiwrap:

apt-get install fcgiwrap

После установки демон fcgiwrap должен уже быть запущен; его сокет - /var/run/fcgiwrap.socket. Если он не работает, вы можете использовать скрипт fservice fcgiwrap, чтобы запустить его.

Вот и все! Теперь, когда вы создаете vhost nginx, ISPConfig позаботится о правильной конфигурации vhost.

10.1 Установите phpMyAdmin

С тех пор как Debian 10, PHPMyAdmin больше не доступен в виде пакета .deb. Поэтому мы установим его из исходников.

Создайте папки для 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.setup

Перейдите в каталог /tmp и загрузите исходники PHPMyAdmin:

cd /tmp  
wget https://files.phpmyadmin.net/phpMyAdmin/4.9.0.1/phpMyAdmin-4.9.0.1-all-languages.tar.gz

Распакуйте загруженный архив и переместите файлы в папку /usr/share/phpmyadmin и очистите каталог /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-languages

Создайте новый файл конфигурации для PHPMyaAdmin на основе предоставленного образца:

cp /usr/share/phpmyadmin/config.sample.inc.php /usr/share/phpmyadmin/config.inc.php

Откройте файл конфигурации с помощью редактора nano:

nano /usr/share/phpmyadmin/config.inc.php

Установите безопасный пароль (секрет blowfish), который должен быть длиной 32 символа:

$cfg['blowfish_secret'] = 'bD3e6wva9fnd93jVsb7SDgeiBCd452Dh'; /* ВЫ ДОЛЖНЫ ЗАПОЛНИТЬ ЭТО ДЛЯ АУТЕНТИФИКАЦИИ COOKIE! */

Не используйте мой пример секрета blowfish, установите свой собственный!

Затем добавьте строку, чтобы установить каталог, который PHPMyAdmin будет использовать для хранения временных файлов:

$cfg['TempDir'] = '/var/lib/phpmyadmin/tmp';

На следующем этапе мы настроим хранилище конфигурации phpMyadmin (базу данных).

Войдите в MariaDB как пользователь root:

mysql -u root -p

В оболочке MariaDB создайте новую базу данных для PHPMyAdmin:

MariaDB [(none)]> CREATE DATABASE phpmyadmin;

Затем создайте нового пользователя:

MariaDB [(none)]> CREATE USER 'pma'@'localhost' IDENTIFIED BY 'mypassword';

Замените слово mypassword на безопасный пароль по вашему выбору в приведенных выше и ниже командах, используйте один и тот же пароль дважды. Затем предоставьте пользователю доступ к этой базе данных и перезагрузите разрешения базы данных.

MariaDB [(none)]> GRANT ALL PRIVILEGES ON phpmyadmin.* TO 'pma'@'localhost' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;  
MariaDB [(none)]> FLUSH PRIVILEGES;  
MariaDB [(none)]> EXIT

Наконец, загрузите SQL-таблицы в базу данных:

mysql -u root -p phpmyadmin < /usr/share/phpmyadmin/sql/create_tables.sql

Введите пароль root для MariaDB по запросу.

Все, что нам нужно сделать сейчас, это установить данные пользователя phpmyadmin в файле конфигурации. Откройте файл снова в редакторе nano:

nano /usr/share/phpmyadmin/config.inc.php

Прокрутите вниз, пока не увидите строки ниже, и отредактируйте их:

/* Пользователь, используемый для манипуляций с хранилищем */  
$cfg['Servers'][$i]['controlhost'] = 'localhost';  
$cfg['Servers'][$i]['controlport'] = '';  
$cfg['Servers'][$i]['controluser'] = 'pma';  
$cfg['Servers'][$i]['controlpass'] = 'mypassword';  
  
/* База данных и таблицы хранилища */  
$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';

Я выделил строки красным, которые я отредактировал. Замените mypassword на пароль, который вы выбрали для пользователя phpmyadmin. Обратите внимание, что // перед строками также были удалены!

После установки ISPConfig 3.2 вы можете получить доступ к phpMyAdmin следующим образом:

Vhost приложений ISPConfig на порту 8081 для nginx поставляется с конфигурацией phpMyAdmin, поэтому вы можете использовать http://server1.example.com:8081/phpmyadmin или http://server1.example.com:8081/phpMyAdmin для доступа к phpMyAdmin.

Если вы хотите использовать псевдоним /phpmyadmin или /phpMyAdmin, который вы можете использовать с ваших веб-сайтов, это немного сложнее, чем для Apache, потому что nginx не имеет глобальных псевдонимов (т.е. псевдонимов, которые могут быть определены для всех vhosts). Поэтому вам нужно определить эти псевдонимы для каждого vhost, с которого вы хотите получить доступ к phpMyAdmin.

Для этого вставьте следующее в поле Директивы nginx на вкладке Опции веб-сайта в ISPConfig позже:

        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;
        }

Если вы используете http s вместо http для вашего vhost, вы должны добавить строку fastcgi_param HTTPS on; в вашу конфигурацию phpMyAdmin следующим образом:

        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; # <-- добавьте эту строку
                       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;
        }

Если вы используете как http, так и https для вашего vhost, вы можете использовать переменную $https. Снова перейдите в поле Директивы nginx и вместо fastcgi_param HTTPS on; добавьте строку fastcgi_param HTTPS $https; чтобы вы могли использовать phpMyAdmin как для http, так и для 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; # <-- добавьте эту строку
                       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 Установите Let’s Encrypt

ISPConfig теперь использует acme.sh в качестве клиента Let’s Encrypt. Установите acme.sh, используя следующую команду:

curl https://get.acme.sh | sh -s

12 Установите Mailman

ISPConfig позволяет вам управлять (создавать/изменять/удалять) почтовыми списками Mailman. Если вы хотите воспользоваться этой функцией, установите Mailman следующим образом:

apt-get install mailman

Выберите хотя бы один язык, например:

Языки для поддержки: <– en (английский)
Отсутствующий список сайтов <– Ок

Прежде чем мы сможем запустить Mailman, необходимо создать первый почтовый список под названием mailman:

newlist mailman

root@server1:~# newlist mailman
Введите адрес электронной почты человека, управляющего списком: <– адрес электронной почты администратора, например [email protected]
Первоначальный пароль mailman: <– пароль администратора для списка mailman
Чтобы завершить создание вашего почтового списка, вам необходимо отредактировать ваш файл /etc/aliases (или эквивалентный) файл, добавив следующие строки, и, возможно, запустив программу newaliases:

почтовый список 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”

Нажмите enter, чтобы уведомить владельца mailman… <– ENTER

root@server1:~#

Откройте /etc/aliases после этого…

nano /etc/aliases

… и добавьте следующие строки:

[...]  
## почтовый список 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"

Запустите

newaliases

после этого и перезапустите Postfix:

systemctl restart postfix

Затем запустите демон Mailman:

systemctl restart mailman

После установки ISPConfig 3 вы можете получить доступ к Mailman следующим образом:

Vhost приложений ISPConfig на порту 8081 для nginx поставляется с конфигурацией Mailman, поэтому вы можете использовать http://server1.example.com:8081/cgi-bin/mailman/admin/ или http://server1.example.com:8081/cgi-bin/mailman/listinfo/ для доступа к Mailman.

Если вы хотите использовать Mailman с ваших веб-сайтов, это немного сложнее, чем для Apache, потому что nginx не имеет глобальных псевдонимов (т.е. псевдонимов, которые могут быть определены для всех vhosts). Поэтому вам нужно определить эти псевдонимы для каждого vhost, с которого вы хотите получить доступ к Mailman.

Для этого вставьте следующее в поле Директивы nginx на вкладке Опции веб-сайта в 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;
        }

Это определяет псевдоним /cgi-bin/mailman/ для вашего vhost, что означает, что вы можете получить доступ к интерфейсу администратора Mailman для списка по адресу http:///cgi-bin/mailman/admin/, а веб-страница для пользователей почтового списка может быть найдена по адресу http:///cgi-bin/mailman/listinfo/.

По адресу http:///pipermail вы можете найти архивы почтовых списков.

13 Установите PureFTPd и Quota

PureFTPd и quota можно установить с помощью следующей команды:

apt-get install pure-ftpd-common pure-ftpd-mysql quota quotatool

Отредактируйте файл /etc/default/pure-ftpd-common…

nano /etc/default/pure-ftpd-common

… и убедитесь, что режим запуска установлен на standalone и VIRTUALCHROOT=true:

[...]  
STANDALONE_OR_INETD=standalone  
[...]  
VIRTUALCHROOT=true  
[...]  

Теперь мы настраиваем PureFTPd для разрешения FTP и TLS-сессий. FTP - это очень небезопасный протокол, так как все пароли и все данные передаются в открытом виде. Используя TLS, всю связь можно зашифровать, что делает FTP гораздо более безопасным.

Если вы хотите разрешить FTP и TLS-сессии, выполните

echo 1 > /etc/pure-ftpd/conf/TLS

Чтобы использовать TLS, мы должны создать SSL-сертификат. Я создаю его в /etc/ssl/private/, поэтому сначала создаю этот каталог:

mkdir -p /etc/ssl/private/

После этого мы можем сгенерировать SSL-сертификат следующим образом:

openssl req -x509 -nodes -days 7300 -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem

Название страны (2 буквы) [AU]: <– Введите название вашей страны (например, “DE”).
Название штата или провинции (полное название) [Some-State]: <– Введите название вашего штата или провинции.
Название населенного пункта (например, город) []: <– Введите ваш город.
Название организации (например, компания) [Internet Widgits Pty Ltd]: <– Введите название вашей организации (например, название вашей компании).
Название организационного подразделения (например, отдел) []: <– Введите название вашего организационного подразделения (например, “IT-отдел”).
Общее название (например, FQDN сервера или ВАШЕ имя) []: <– Введите имя хоста сервера, в моем случае: server1.example.com.
Адрес электронной почты []: <– Введите ваш адрес электронной почты.

Измените разрешения SSL-сертификата:

chmod 600 /etc/ssl/private/pure-ftpd.pem

Затем перезапустите PureFTPd:

systemctl restart pure-ftpd-mysql

Отредактируйте /etc/fstab. Мой выглядит так (я добавил, usrjquota=quota.user, grpjquota=quota.group, jqfmt=vfsv0 к разделу с точкой монтирования /):

nano /etc/fstab
# /etc/fstab: статическая информация о файловой системе.  
#  
# Используйте 'blkid', чтобы напечатать универсальный уникальный идентификатор для  
# устройства; это может быть использовано с UUID= как более надежный способ наименования устройств  
# которые работают даже если диски добавляются и удаляются. Смотрите fstab(5).  
#  
# <файловая система> <точка монтирования> <тип> <опции> <дамп> <проход>  
# / была на /dev/sda1 во время установки  
UUID=45576b38-39e8-4994-b8c1-ea4870e2e614 / ext4 errors=remount-ro,usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0 0 1  
# swap была на /dev/sda5 во время установки  
UUID=8bea0d1e-ec37-4b20-9976-4b7daaa3eb69 none swap sw 0 0  
/dev/sr0 /media/cdrom0 udf,iso9660 user,noauto 0 0

Чтобы включить квоты, выполните эти команды:

mount -o remount /
quotacheck -avugm  
quotaon -avug

14 Установите BIND DNS-сервер

BIND можно установить следующим образом:

apt-get install bind9 dnsutils

Если ваш сервер является виртуальной машиной, то настоятельно рекомендуется установить демон haveged, чтобы получить более высокую энтропию для подписания DNSSEC. Вы можете установить haveged и на не виртуальных серверах, это не повредит.

apt-get -y install haveged  
systemctl enable haveged  
systemctl start haveged

Объяснение на эту тему можно найти здесь.

15 Установите Webalizer, AWStats и GoAccess

Webalizer и AWStats можно установить следующим образом:

apt-get install webalizer awstats geoip-database libtimedate-perl libclass-dbi-mysql-perl

Откройте /etc/cron.d/awstats после этого…

nano /etc/cron.d/awstats

… и закомментируйте все в этом файле:

#MAILTO=root

#*/10 * * * * www-data [ -x /usr/share/awstats/tools/update.sh ] && /usr/share/awstats/tools/update.sh

# Генерировать статические отчеты:
#10 03 * * * www-data [ -x /usr/share/awstats/tools/buildstatic.sh ] && /usr/share/awstats/tools/buildstatic.sh

Установка последней версии GoAccess напрямую из репозитория 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 goaccess

16 Установите Jailkit

Jailkit нужен только в том случае, если вы хотите chroot пользователей SSH. Его можно установить следующим образом (важно: Jailkit должен быть установлен до ISPConfig - его нельзя установить позже!):

apt-get install build-essential autoconf automake libtool flex bison debhelper binutils
cd /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 binary

Теперь вы можете установить пакет Jailkit.deb следующим образом:

cd ..  
dpkg -i jailkit_2.20-1_*.deb  
rm -rf jailkit-2.20*

17 Установите Fail2ban и UFW Firewall

Это необязательно, но рекомендуется, так как монитор ISPConfig пытается показать журнал:

apt-get install fail2ban

Чтобы сделать fail2ban монитором PureFTPd и Dovecot, создайте файл /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 = 3

Перезапустите fail2ban после этого:

systemctl restart fail2ban

Чтобы установить брандмауэр UFW, выполните эту команду apt:

apt-get install ufw

18 Установите RoundCube

Установите RoundCube с помощью этой команды:

apt-get install roundcube roundcube-core roundcube-mysql roundcube-plugins

Установщик задаст следующие вопросы:

Настроить базу данных для roundcube с dbconfig.common? <-- да  
Пароль приложения MySQL для roundcube: <-- нажмите enter  
Пароль административного пользователя баз данных: <-- введите здесь пароль root для MySQL.

Затем отредактируйте файл RoundCube /etc/roundcube/config.inc.php и настройте несколько параметров:

nano /etc/roundcube/config.inc.php

Установите default_host на localhost и smtp_server.

$config['default_host'] = 'localhost';  
$config['smtp_server'] = 'localhost';  
$config['smtp_port']  = 25;

ISPConfig имеет некоторую конфигурацию в vhost приложений nginx для squirrelmail, которая также работает для roundcube. Мы активируем это с помощью:

ln -s /usr/share/roundcube /usr/share/squirrelmail

http://192.168.0.100:8081/webmail
http://server1.example.com:8081/webmail (после установки ISPConfig, смотрите следующий раздел)

Roundcube на Nginx

19 Установите ISPConfig 3

Прежде чем начать установку ISPConfig, убедитесь, что Apache остановлен (если он установлен - возможно, некоторые из ваших установленных пакетов установили Apache как зависимость без вашего ведома). Если Apache2 уже установлен в системе, остановите его сейчас…

systemctl stop apache2

… и удалите ссылки на запуск системы Apache:

update-rc.d -f apache2 remove

Убедитесь, что nginx запущен:

systemctl start nginx

(Если у вас установлены как Apache, так и nginx, установщик спросит вас, какой из них вы хотите использовать: Apache и nginx обнаружены. Выберите сервер для использования с ISPConfig: (apache,nginx) [apache]:

Введите nginx. Если установлен только Apache или nginx, это автоматически обнаруживается установщиком, и вопрос не задается.)

Чтобы установить ISPConfig 3.2 из последней выпущенной версии, сделайте следующее:

cd /tmp  
wget http://www.ispconfig.org/downloads/ISPConfig-3-stable.tar.gz  
tar xfz ISPConfig-3-stable.tar.gz  
cd ispconfig3_install/install/

Следующий шаг - запустить

php -q install.php

Это запустит установщик ISPConfig 3. Установщик настроит все службы, такие как Postfix, Nginx, Dovecot и т.д. для вас.

# php -q install.php
  
--------------------------------------------------------------------------------  
_____ ___________ _____ __ _ ____  
|_ _/ ___| ___ \ / __ \ / _(_) /__ \  
| | \ `--.| |_/ / | / \/ ___ _ __ | |_ _ __ _ _/ /  
| | `--. \ __/ | | / _ \| '_ \| _| |/ _` | |_ |  
_| |_\__/ / | | \__/\ (_) | | | | | | | (_| | ___\ \  
\___/\____/\_| \____/\___/|_| |_|_| |_|
  
>> Начальная конфигурация
Операционная система: Debian 10.0 (Buster) или совместимая

Следующие будут несколько вопросов для первичной конфигурации, поэтому будьте внимательны.
Значения по умолчанию находятся в [скобках] и могут быть приняты с .
Введите “quit” (без кавычек), чтобы остановить установщик.

Выберите язык (en,de) [en]: <– Нажмите Enter

Режим установки (стандартный, эксперт) [стандартный]: <– Нажмите Enter

Полное квалифицированное имя хоста (FQDN) сервера, например server1.domain.tld [server1.canomi.com]: <– Нажмите Enter

Имя хоста MySQL [localhost]: <– Нажмите Enter

Порт MySQL [3306]: <– Нажмите Enter

Имя пользователя root MySQL [root]: <– Нажмите Enter

Пароль root MySQL []: <– Введите ваш пароль root MySQL

База данных MySQL для создания [dbispconfig]: <– Нажмите Enter

Кодировка MySQL [utf8]: <– Нажмите Enter

Обнаружены Apache и nginx. Выберите сервер для использования с ISPConfig: (apache,nginx) [apache]: <– nginx

Конфигурирование Postgrey
Конфигурирование Postfix
Генерация 4096-битного RSA закрытого ключа
……………………………………………………………..++
……………………………………………………………………………………………………………………….++
запись нового закрытого ключа в ‘smtpd.key’

—–
Вам будет предложено ввести информацию, которая будет включена
в ваш запрос сертификата.
Что вы собираетесь ввести, называется Уникальным Именем или DN.
Существует довольно много полей, но вы можете оставить некоторые пустыми
Для некоторых полей будет значение по умолчанию,
Если вы введете ‘.’, поле будет оставлено пустым.

—–
Название страны (2 буквы) [AU]: <– Введите 2-буквенный код страны
Название штата или провинции (полное название) [Some-State]: <– Введите название штата
Название населенного пункта (например, город) []: <– Введите ваш город
Название организации (например, компания) [Internet Widgits Pty Ltd]: <– Введите название компании или нажмите enter
Название организационного подразделения (например, отдел) []: <– Нажмите Enter
Общее название (например, FQDN сервера или ВАШЕ имя) []: <– Введите имя хоста сервера, в моем случае: server1.example.com
Адрес электронной почты []: <– Нажмите Enter
Конфигурирование Mailman
Конфигурирование Dovecot
Конфигурирование Spamassassin
Конфигурирование Amavisd
Конфигурирование Getmail
Конфигурирование BIND
Конфигурирование Jailkit
Конфигурирование Pureftpd
Конфигурирование Nginx
Конфигурирование vlogger
[INFO] служба Metronome XMPP Server не обнаружена

Конфигурирование брандмауэра UFW
Конфигурирование Fail2ban
[INFO] служба OpenVZ не обнаружена
Конфигурирование vhost приложений
Установка ISPConfig
Порт ISPConfig [8080]:

Пароль администратора [admin]: <– Введите желаемый пароль пользователя администратора ISPConfig

Хотите ли вы безопасное (SSL) соединение с веб-интерфейсом ISPConfig (y,n) [y]: <– Нажмите Enter

Генерация RSA закрытого ключа, длиной 4096 бит
…………………..++
………………………………………………………………………………………………………………..++
e = 65537 (0x10001)
Вам будет предложено ввести информацию, которая будет включена
в ваш запрос сертификата.
Что вы собираетесь ввести, называется Уникальным Именем или DN.
Существует довольно много полей, но вы можете оставить некоторые пустыми
Для некоторых полей будет значение по умолчанию,
Если вы введете ‘.’, поле будет оставлено пустым.

—–
Название страны (2 буквы) [AU]: <– Введите 2-буквенный код страны
Название штата или провинции (полное название) [Some-State]: <– Введите название штата
Название населенного пункта (например, город) []: <– Введите ваш город
Название организации (например, компания) [Internet Widgits Pty Ltd]: <– Введите название компании или нажмите enter
Название организационного подразделения (например, отдел) []: <– Нажмите Enter
Общее название (например, FQDN сервера или ВАШЕ имя) []: <– Введите имя хоста сервера, в моем случае: server1.example.com
Адрес электронной почты []: <– Нажмите Enter

Пожалуйста, введите следующие ‘дополнительные’ атрибуты
для отправки с вашим запросом сертификата
Пароль для проверки []: <– Нажмите Enter
Необязательное название компании []: <– Нажмите Enter
запись RSA ключа

Конфигурирование DBServer
Установка crontab ISPConfig
нет crontab для root
нет crontab для getmail
Обнаружение IP-адресов
Перезапуск служб …
Установка завершена.


Установщик автоматически настраивает все подлежащие службы, поэтому ручная настройка не требуется.

После этого вы можете получить доступ к ISPConfig 3 по адресу http(s)://server1.example.com:8080/ или http(s)://192.168.1.100:8080/ (http или https зависит от того, что вы выбрали во время установки). Войдите с именем пользователя admin и паролем admin (вы должны изменить пароль по умолчанию после первого входа):

![Страница входа ISPConfig](/files/85463c68-29fa-4e9c-8439-5b968109a6a9.png)

![Панель управления ISPConfig на Debian 10](/files/db4db368-1147-4ced-b543-09a4945acfaf.png)

Наконец, мы исправим некоторые разрешения установки 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/temp


Система теперь готова к использованию.

Существуют некоторые плагины для интеграции RoundCube Webmail с ISPConfig, ознакомьтесь с инструкциями по установке плагина ISPConfig RoundCube.

## 20.1 Руководство по ISPConfig 3

Чтобы узнать, как использовать ISPConfig 3, я настоятельно рекомендую скачать Руководство по ISPConfig 3.

На более чем 300 страницах оно охватывает концепцию, стоящую за ISPConfig (администраторы, реселлеры, клиенты), объясняет, как установить и обновить ISPConfig 3, включает справочник для всех форм и полей форм в ISPConfig вместе с примерами допустимых вводов и предоставляет учебники для самых распространенных задач в ISPConfig 3. Оно также описывает, как сделать ваш сервер более безопасным и содержит раздел по устранению неполадок в конце.

## 21 Ссылка на загрузку образа виртуальной машины этого учебника

Этот учебник доступен в виде готового к использованию образа виртуальной машины в формате ovf/ova, который совместим с VMWare и Virtualbox. Образ виртуальной машины использует следующие данные для входа:

SSH / Shell Вход

Имя пользователя: administrator  
Пароль: howtoforge

Имя пользователя: root  
Пароль: howtoforge

Вход в ISPConfig

Имя пользователя: admin  
Пароль: howtoforge

Вход в MySQL

Имя пользователя: root  
Пароль: howtoforge

IP виртуальной машины - 192.168.0.100, его можно изменить в файле /etc/network/interfaces. Пожалуйста, измените все вышеперечисленные пароли для обеспечения безопасности виртуальной машины.

## 22 Ссылки

- Debian: http://www.debian.org/
- ISPConfig: http://www.ispconfig.org/
Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.