Установка бесплатной панели ISPConfig с нуля с Nginx, PHP (PHP-FPM)

После того, как мы установили систему, настроили в ней сеть и доступ по ssh, установим бесплатную панель управления сервером ISPConfig, nginx и php-fpm, mysql, почту, файрвол, антивирус, и опробуем всё это в действии. Поехали:

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

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

Синхронизируем системные часы с NTP (Network Time Protocol)

теперь за точность времени можно не волноваться.

Устанавливаем Postfix, Dovecot, MySQL, rkhunter и binutils

Отвечаем на вопросы. Тип почтовой конфигурации — интернет сайт. Имя почты системы — server1.example.com

Защищаем mysql

Настраиваем Postfix конфиг следующим образом:

Перезапуск Postfix:

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

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

Задаем корневой пароль mysql в /etc/mysql/debian.cnf

Для предотвращения ошибки Too many open files установим более высокие лимиты на открытие файлов MariaDB

в конец файла добавляем:

Создаем каталог и файл:

В файл пишем:

Перезагружаем systemd и перезапускаем MariaDB

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

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

Теперь убедитесь, что сеть включена

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

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

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

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

останавливаем Apache2 если он был у нас в системе

и стартуем nginx

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

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

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

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

Далее откройте /etc/php/7.3/fpm/php.ini

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

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

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

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

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

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

После установки демон fcgiwrap уже должен быть запущен; это сокет /var/run/fcgiwrap.socket . Если он не запущен, вы можете использовать  команду  service fcgiwrap start  для его запуска.

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

Установите phpMyAdmin

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

Создайте папки для PHPMyadmin:

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

Распакуйте загруженный архивный файл, переместите файлы в папку /usr/share/phpmyadmin и приберите за собой в /tmp

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

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

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

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

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

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

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

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

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

Теперь нужно установить данные пользователя phpmyadmin в файле конфигурации. Снова откройте файл в редакторе и отредактируйте в следующий вид:

Замените mypassword на пароль, который вы выбрали для пользователя 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 позже:

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

Если вы используете http и https для вашего vhost, вы можете использовать переменную $https . Снова перейдите в поле Директив nginx и вместо fastcgi_param включите HTTPS;  Добавляете строку fastcgi_param HTTPS $https; и можете использовать phpMyAdmin для запросов http и https:

Установка Let’s Encrypt

ISPConfig 3.1 поддерживает бесплатный центр сертификации SSL. Давайте зашифруем. Функция Let’s Encrypt позволяет создавать бесплатные сертификаты SSL для вашего сайта из ISPConfig.

Установите почтальон

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

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

Введите адрес электронной почты человека, управляющего списком и пароль администратора для списка почтальонов. Чтобы завершить создание списка рассылки. Вы должны отредактировать свой файл /etc/aliases

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

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

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

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

Для этого вставьте следующее в поле « Директивы nginx» на вкладке « Параметры » веб-сайта в ISPConfig:

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

В http://<vhost>/pipermail вы можете найти архивы списка рассылки.

Установите PureFTPd и квоту

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

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

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

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

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

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

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

Нам предложат ответить на несколько вопросов:

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

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

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

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

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

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

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

Установите Webalizer и AWStats

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

Откройте /etc/cron.d/awstats

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

Установите Jailkit

Jailkit нужен только если вы хотите синхронизировать пользователей SSH. Он может быть установлен следующим образом ( важно: Jailkit должен быть установлен до ISPConfig — он не может быть установлен позже! ):

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

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

Чтобы заставить fail2ban контролировать PureFTPd и Dovecot, создайте файл /etc/fail2ban/jail.local

с таким содержимым

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

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

Установите RoundCube

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

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

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

Установите для default_host и smtp_server значение localhost.

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

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

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

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

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

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

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

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

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

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

Мы сможем выбрать порт и указать тип поключения к панели http или https

Программа установки автоматически настраивает все базовые службы, поэтому ручная настройка не требуется.

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

Наконец, мы исправляем некоторые права на установку RoundCube.

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

ISPConfig 3 Руководство

По 5 баксов торгуют. Метод тыка и гугл никто не отменял.

После установки не помешает заняться безопасностью:

Почему 22 порт SSH нужно обязательно менять на не стандартный

Настройка SSH доступа по сертификатам

Защищаем phpmyadmin от перебора паролей при помощи fail2ban