Серверы · 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/hosts127.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.com5 Обновите вашу установку Debian
Сначала убедитесь, что ваш /etc/apt/sources.list содержит репозиторий buster/updates (это гарантирует, что вы всегда получаете самые новые обновления для вирусного сканера ClamAV - этот проект часто публикует релизы, и иногда старые версии перестают работать), и что репозитории contrib и non-free включены.
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-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 spamassassin10 Установите 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-fpmPHP-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 -s12 Установите Mailman
ISPConfig позволяет вам управлять (создавать/изменять/удалять) почтовыми списками Mailman. Если вы хотите воспользоваться этой функцией, установите Mailman следующим образом:
apt-get install mailmanВыберите хотя бы один язык, например:
Языки для поддержки: <– en (английский)
Отсутствующий список сайтов <– Ок
Прежде чем мы сможем запустить Mailman, необходимо создать первый почтовый список под названием mailman:
newlist mailmanroot@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/
Если вы хотите использовать 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://
По адресу http://
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 -avug14 Установите 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 goaccess16 Установите Jailkit
Jailkit нужен только в том случае, если вы хотите chroot пользователей SSH. Его можно установить следующим образом (важно: Jailkit должен быть установлен до ISPConfig - его нельзя установить позже!):
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 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 ufw18 Установите 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/squirrelmailhttp://192.168.0.100:8081/webmail
http://server1.example.com:8081/webmail (после установки ISPConfig, смотрите следующий раздел)

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 (вы должны изменить пароль по умолчанию после первого входа):


Наконец, мы исправим некоторые разрешения установки 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/Get new posts in your inbox
No spam. Unsubscribe anytime.