Menu

ISPConfig 3 и Debian 9: профессиональный хостинг своими руками

К сожалению, замечательная обкатанная технология на базе Debian 8 постепенно устаревает.

В данной статье я расскажу, как под операционной системой Debian 9 реализовать собственный хостинг с панелью управления ISPConfig 3, причём будут использоваться Apache2, BIND, Dovecot. Панель управления ISPConfig 3 хороша тем, что позволяет конфигурировать целый спектр служб через браузер: веб-сервер Apache (или nginx), почтовый сервер Postfix, Courier или Dovecot для IMAP/POP3, MariaDB, BIND или MyDNS, PureFTPd, SpamAssassin, ClamAV и др. Мы рассмотрим вариант с Apache, BIND и Dovecot.

00. Начало

Будем использовать hostname hosting.drach.pro с IP-адресом 185.46.86.3 в качестве примера. Естественно, каждый читатель должен будет использовать свои параметры. Кроме того, мною все действия проделаны на минимальной версии Debian, которая была установлена на выделенный сервер или на виртуальный сервер.

01. Позаботимся об SSH (по желанию)

Для своего собственного удобства я обязательно устанавливаю OpenSSH:

apt-get -y install openssh-server ssh

Это особенно ценно потому, что в будущем можно будет использовать великолепный клиент putty для подключения к нашему серверу из-под Windows.

02. Текстовый редактор

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

apt-get -y install nano mc vim-nox

Конечно, можно установить только и один требуемый пакет в данном пункте.

03. Hostname

Имя сервера должно быть третьего уровня, например "hosting.drach.pro". Лучше не использовать доменное имя  "example.com", так как в будущем возникнут проблемы с настройкой почтовика. С самого начала проверьте, что имя указано правильно (чтобы избежать в будущем огромной головной боли!) в файле настроек  /etc/hosts and change. Формат каждой строчки "IP Address - табуляция - полное-имя - табуляция - часть-поддомена". В моём случае, для hosting.drach.pro, надо получить что-то подобное:

mcedit /etc/hosts
127.0.0.1       localhost.localdomain   localhost
185.46.86.3   hosting.drach.pro     hosting
# The following lines are for IPv6
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

Теперь редактируем /etc/hostname:

mcedit /etc/hostname

Должно остаться только имя поддомена, то есть в нашем случае:

hosting

Перезагружаемся:

reboot

А после перезагрузки обязательно проверим, какое имя  у нашей системы:

hostname
hostname -f

Должно получиться что-то вроде:

# hostname
hosting
# hostname -f
hosting.drach.pro

04. Полное обновление Debian

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

mcedit /etc/apt/sources.list
deb http://ftp.us.debian.org/debian/ stretch main contrib non-free
deb-src http://ftp.us.debian.org/debian/ stretch main contrib non-free

deb http://security.debian.org/debian-security stretch/updates main contrib non-free
deb-src http://security.debian.org/debian-security stretch/updates main contrib non-free

Выполним:

apt-get update

А для обновления запустим:

apt-get upgrade -y

Система должна обновиться, не задавая лишних вопросов.

05. Изменим Shell

/bin/sh это символьная ссылка на /bin/dash, но нам нужно /bin/bash, а не /bin/dash. Выполним:

dpkg-reconfigure dash

Use dash as the default system shell (/bin/sh)? <- no

Если этого не сделать, установка ISPConfig закончится провалом.

06. Синхронизация времени

Постараемся поддерживать точное время на нашей системе, используя службу NTP (network time protocol). Выполним:

apt-get install ntp

Этого достаточно, чтобы точное время синхронизировалось по Интернету.

07. Установка пакетов Postfix, Dovecot, MariaDB, rkhunter и Binutils

Достаточно одной команды, чтобы установить Postfix, Dovecot, MariaDB, 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

Лично мне больше нравится MySQL, чем MariaDB (о чём я уже говорил), однако простая замена в вышеприведённой команде "mariadb-client mariadb-server" на "mysql-client mysql-server" не привела к положительным результатам. А после нескольких неудачных попыток установить MySQL, я смирился с MariaDB.

Потребуется ответить на вопросы:

General type of mail configuration: <-- Internet Site
System mail name: <-- hosting.drach.pro

С точки зрения безопасности крайне рекомендуется запустить специальную утилиту для MariaDB / MySQL:

mysql_secure_installation

Отвечаем последовательно на вопросы:

Change root password? [Y/n] <-- y
New password: <-- вводим новый пароль
Re-enter new password: <-- повторяем пароль
Remove anonymous users? [Y/n] <-- y
Disallow root login remotely? [Y/n] <-- y
Remove test database? [Y/n] <-- y
Reload privilege tables? [Y/n] <-- y

Откроем TLS/SSL для  Postfix:

mcedit /etc/postfix/master.cf

Надо раскомментировать секции submission и smtps добавить несколько строк. Внимательно смотрим на пример:

[...]
submission inet n - - - - smtpd
-o syslog_name=postfix/submission
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
# -o smtpd_reject_unlisted_recipient=no
# -o smtpd_client_restrictions=$mua_client_restrictions
# -o smtpd_helo_restrictions=$mua_helo_restrictions
# -o smtpd_sender_restrictions=$mua_sender_restrictions
# -o smtpd_recipient_restrictions=
# -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
# -o milter_macro_daemon_name=ORIGINATING
smtps inet n - - - - smtpd
-o syslog_name=postfix/smtps
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
# -o smtpd_reject_unlisted_recipient=no
# -o smtpd_client_restrictions=$mua_client_restrictions
# -o smtpd_helo_restrictions=$mua_helo_restrictions
# -o smtpd_sender_restrictions=$mua_sender_restrictions
# -o smtpd_recipient_restrictions=
# -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
# -o milter_macro_daemon_name=ORIGINATING [...]

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

service postfix restart

Наша СУБД должна слушать на всех интерфейсах, а не только на localhost, поэтому редактируем /etc/mysql/mariadb.conf.d/50-server.cnf и комментируем bind-address = 127.0.0.1, также добавляем sql-mode="NO_ENGINE_SUBSTITUTION":

mcedit /etc/mysql/mariadb.conf.d/50-server.cnf
[...]
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
#bind-address           = 127.0.0.1

sql-mode="NO_ENGINE_SUBSTITUTION"

[...]

Метод авторизации по паролю для MariaDB выставляем в режим "native", тогда в будущем мы сможем использовать phpMyAdmin из-под root:

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

Редактируем  /etc/mysql/debian.cnf и устанавливаем пароль для MariaDB дважды!

mcedit /etc/mysql/debian.cnf

Пароль для root в моём примере - "secret".

[client]
host = localhost
user = root
password = secret
socket = /var/run/mysqld/mysqld.sock
[mysql_upgrade]
host = localhost
user = root
password = secret
socket = /var/run/mysqld/mysqld.sock
basedir = /usr

Для предотвращения появления ошибки 'Error in accept: Too many open files' поднимем лимиты MariaDB.

mcedit /etc/security/limits.conf

Надо добавить две строки.

mysql soft nofile 65535
mysql hard nofile 65535

08. Тонкая настройка MariaDB

Создаём директорию /etc/systemd/system/mysql.service.d/ из командной строки:

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

Добавляем в

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

несколько строк:

[Service]
LimitNOFILE=infinity

Сохраняем файл. Перезагружаем systemd и MariaDB:

systemctl daemon-reload
service mysql restart

Проверяем работу в сети:

netstat -tap | grep mysql

Видим что-то типа:

# netstat -tap | grep mysql
tcp6 0 0 [::]:mysql [::]:* LISTEN 17776/mysqld

09. Установка Amavisd-new, SpamAssassin, ClamAV

Выполним одну команду:

apt-get install -y amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl libdbd-mysql-perl postgrey

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

service spamassassin stop
systemctl disable spamassassin

10. Установка Metronome XMPP Server (по желанию)

Metronome XMPP Server позволяет получить сервер чата с протоколом XMPP. Данный пункт является необязательным. Следует выполнять его только в том случае, если необходим сервер чата. Ни одна из функций ISPConfig не является зависимой от него.

Добавим репозиторий Prosody для Debian.

echo "deb http://packages.prosody.im/debian stretch main" > /etc/apt/sources.list.d/metronome.list
wget http://prosody.im/files/prosody-debian-packages.key -O - | sudo apt-key add -

Актуализация списка пакетов:

apt-get update

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

apt-get install git lua5.1 liblua5.1-0-dev lua-filesystem libidn11-dev libssl-dev lua-zlib lua-expat lua-event lua-bitop lua-socket lua-sec luarocks luarocks
luarocks install lpc

Добавляем пользователя для Metronome

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

Скачиваем Metronome в /opt и компилируем.

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

Metronome установлен в /opt/metronome.

11. Установка веб-окружения

Установим Apache2, PHP 7, phpMyAdmin, FCGI, suExec, Pear и mcrypt:

apt-get -y install apache2 apache2-doc apache2-utils libapache2-mod-php php7.0 php7.0-common php7.0-gd php7.0-mysql php7.0-imap phpmyadmin php7.0-cli php7.0-cgi libapache2-mod-fcgid apache2-suexec-pristine php-pear php7.0-mcrypt mcrypt  imagemagick libruby libapache2-mod-python php7.0-curl php7.0-intl php7.0-pspell php7.0-recode php7.0-sqlite3 php7.0-tidy php7.0-xmlrpc php7.0-xsl memcached php-memcache php-imagick php-gettext php7.0-zip php7.0-mbstring memcached libapache2-mod-passenger php7.0-soap

Потребуется ответить на вопросы:

Web server to reconfigure automatically: <- apache2
Configure database for phpmyadmin with dbconfig-common? <- yes
Enter the phpmyadmin application password? <-  Just press enter
Enter the password of the administrative user? <- yourrootmysqlpassword

Необходимо выполнить следующую команду, чтобы сделать доступными модули Apache: suexec, rewrite, ssl, actions (плюс dav, dav_fs и auth_digest если нам захочется использовать WebDAV, например для Яндекс.Диска):

a2enmod suexec rewrite ssl actions include dav_fs dav auth_digest cgi headers

Чтобы удостовериться, что сервер не будет взломан через уязвимость HTTPROXY, запретим заголовок HTTP_PROXY в apache.

mcedit /etc/apache2/conf-available/httpoxy.conf

Вставим следующее:

<IfModule mod_headers.c>
    RequestHeader unset Proxy early
</IfModule>

Подключим модуль:

a2enconf httpoxy
service apache2 restart

11.1. HHVM (HipHop Virtual Machine)

Пакетов HHVM для Debian 9 пока нет. Придётся обойтись без этого режима PHP.

11.2. SuPHP

SuPHP больше не поддерживается под Debian 9, функции SuPHP устарели и будут удалены из ISPConfig. Придётся использовать доступные PHP-FPM или PHP-FCGI вместе с suexec вместо SuPHP.

12. Let's Encrypt

ISPConfig 3 поддерживает бесплатные сертификаты SSL от Let's encrypt. Функция Let's Encrypt позволяет создавать SSL certificates для сайта прямо из панели ISPConfig.

Добавим поддержку Let's encrypt.

apt-get -y install certbot

Больше ничего не потребуется! Сертификат SSL для сайта создаётся панелькой ISPConfig когда Вы добавляете сайт.

13. PHP-FPM

Менеджер процессов PHP-FPM позволяет резко ускорить обработки скриптов даже под Apache, но потребуется модуль mod_proxy_fcgi, который будет установлен по умолчанию (потребуется его разрешить).

apt-get -y install php7.0-fpm

Разрешаем модуль и перезапускаем Apache:

a2enmod actions proxy_fcgi alias 
service apache2 restart

14. PHP Opcode Cache (на Ваше усмотрение)

Opcache это бесплатный кэшер для интерпретатора PHP. APCu это модуль совместимости APC для Opcache который испльзуется системами кэширования популярных CMS. Рекомендуется установить эти расширения для ускорения обработки РНР.

apt-get -y install php7.0-opcache php-apcu

Рестарт Apache:

service apache2 restart

15. Mailman

ISPConfig позволяет управлять (в том числе создавать/изменять/удалять) списки рассылки Mailman. Установим Mailman:

apt-get install mailman

Потребуется установить хотя бы один язык:

Languages to support: <-- en (English)
Missing site list <-- Ok

Перед запуском Mailman потребуется создать первый список рассылки с именем mailman:

newlist mailman
# newlist mailman
Enter the email of the person running the list: <-- admin email address, e.g. [email address]
Initial mailman password: <-- admin password for the mailman list
To finish creating your mailing list, you must edit your /etc/aliases (or
equivalent) file by adding the following lines, and possibly running the
`newaliases' program:

## mailman mailing list
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"

Hit enter to notify mailman owner... <-- ENTER

#

Открываем /etc/aliases ...

mcedit /etc/aliases

... и добавляем:

[...]
## mailman mailing list
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:

service postfix restart

Наконец, необходимо сделать доступной конфигурацию Mailman-Apache:

ln -s /etc/mailman/apache.conf /etc/apache2/conf-enabled/mailman.conf

Так определяется псевдоним /cgi-bin/mailman/ для виртуальных хостов (vhosts) сервера Apache, значит будет доступен админский интерфейс Mailman по адресу http://hosting.drach.pro/cgi-bin/mailman/admin/, а интерфейс для пользователя http://hosting.drach.pro/cgi-bin/mailman/listinfo/.

Архив располагается по адресу http://hosting.drach.pro/pipermail.

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

service apache2 restart

Запуск службы Mailman:

service mailman start

16. PureFTPd и Quota

PureFTPd и quota устанавливаются командой :

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

Редактируем файл настроек:

mcedit /etc/default/pure-ftpd-common

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

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

Now we configure PureFTPd to allow FTP and TLS sessions. FTP is a very insecure protocol because all passwords and all data are transferred in clear text. By using TLS, the whole communication can be encrypted, thus making FTP much more secure.

If you want to allow FTP and TLS sessions, run

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

In order to use TLS, we must create an SSL certificate. I create it in /etc/ssl/private/, therefore I create that directory first:

mkdir -p /etc/ssl/private/

Afterwards, we can generate the SSL certificate as follows:

openssl req -x509 -nodes -days 7300 -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem
Country Name (2 letter code) [AU]: <-- Enter your Country Name (e.g., "DE").
State or Province Name (full name) [Some-State]: <-- Enter your State or Province Name.
Locality Name (eg, city) []: <-- Enter your City.
Organization Name (eg, company) [Internet Widgits Pty Ltd]: <-- Enter your Organization Name (e.g., the name of your company).
Organizational Unit Name (eg, section) []: <-- Enter your Organizational Unit Name (e.g. "IT Department").
Common Name (eg, YOUR name) []: <-- Enter the Fully Qualified Domain Name of the system (e.g. "hosting.drach.pro").
Email Address []: <-- Enter your Email Address.

Change the permissions of the SSL certificate:

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

Then restart PureFTPd:

service pure-ftpd-mysql restart

Edit /etc/fstab. Mine looks like this (I added ,usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0 to the partition with the mount point /):

nano /etc/fstab
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
# / was on /dev/sda1 during installation
UUID=f539c5cb-624f-4c27-a149-1446a251a453 / ext4 errors=remount-ro,usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0 0 1
# swap was on /dev/sda5 during installation
UUID=8d3194e7-edb5-4492-937d-d066b4994baf none swap sw 0 0
/dev/sr0 /media/cdrom0 udf,iso9660 user,noauto 0 0

To enable quota, run these commands:

mount -o remount /
quotacheck -avugm
quotaon -avug

17. BIND DNS Server

BIND can be installed as follows:

apt-get install bind9 dnsutils

 If your server is a virtual machine, then it is highly recommended to install the haveged daemon to get a higher entropy for DNSSEC signing. You can install haveged on nonvirtual servers as well, it should not hurt.

apt-get install haveged

An explanation on that topic.

18. Webalizer and AWStats

Webalizer and AWStats can be installed as follows:

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

Open /etc/cron.d/awstats afterwards...

nano /etc/cron.d/awstats

... and comment out everything in that file:

#MAILTO=root

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

# Generate static reports:
#10 03 * * * www-data [ -x /usr/share/awstats/tools/buildstatic.sh ] && /usr/share/awstats/tools/buildstatic.sh

19. Install Jailkit

Jailkit is needed only if you want to chroot SSH users. It can be installed as follows (important: Jailkit must be installed before ISPConfig - it cannot be installed afterwards!):

apt-get install build-essential autoconf automake libtool flex bison debhelper binutils
cd /tmp
wget http://olivier.sessink.nl/jailkit/jailkit-2.19.tar.gz
tar xvfz jailkit-2.19.tar.gz
cd jailkit-2.19
echo 5 > debian/compat
./debian/rules binary

You can now install the Jailkit .deb package as follows:

cd ..
dpkg -i jailkit_2.19-1_*.deb
rm -rf jailkit-2.19*

20. fail2ban and UFW Firewall

This is optional but recommended, because the ISPConfig monitor tries to show the log:

apt-get install fail2ban

To make fail2ban monitor PureFTPd and Dovecot, create the file /etc/fail2ban/jail.local:

nano /etc/fail2ban/jail.local

And add the following configuration to it.

[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-sasl
logpath = /var/log/mail.log
maxretry = 3

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

service fail2ban restart

To install the UFW firewall, run this apt command:

apt-get install ufw

21. RoundCube

Установка:

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

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

Configure database for roundcube with dbconfig.common? <-- yes
MySQL application password for roundcube: <-- press enter
Password of the databases administrative user: <-- enter the MySQL root password here.

Отредактируем файл /etc/roundcube/config.inc.php:

nano /etc/roundcube/config.inc.php

Set the default_host and smtp_server to localhost.

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

Then edit the Apache roundcube configuration file /etc/apache2/conf-enabled/roundcube.conf:

mcedit /etc/apache2/conf-enabled/roundcube.conf

And add an alias line for the apache /webmail alias, you can add the line right at the beginning of the file. NOTE: Do not use /mail as alias or the ispconfig email module will stop working!

Alias /webmail /var/lib/roundcube

Then reload Apache:

service apache2 reload

Now you can access RoundCube as follows:

_http://185.46.86.3/webmail
_http://www.example.com/webmail
_http://hosting.drach.pro:8080/webmail
(after you have installed ISPConfig, see the next chapter)

22. Download ISPConfig 3

To install ISPConfig 3 from the latest released version, do this:

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

If you like to try out the pre-release of an upcoming 3.1 version, download it with this command:

cd /tmp
wget -O ISPConfig-3.1-dev.tar.gz  https://git.ispconfig.org/ispconfig/ispconfig3/repository/archive.tar.gz?ref=stable-3.1
tar xfz ISPConfig-3.1-dev.tar.gz
cd ispconfig3-stable-3.1*
cd install

23 Install ISPConfig

The next step is to run the ISPConfig installer.

php -q install.php

This will start the ISPConfig 3 installer. The installer will configure all services like Postfix, Dovecot, etc. for you. A manual setup as required for ISPConfig 2 (perfect setup guides) is not necessary.

# php -q install.php

>> Initial configuration
Operating System: Debian 9.0 (Stretch)
Following will be a few questions for primary configuration so be careful.
Default values are in [brackets] and can be accepted with <ENTER>.
Tap in "quit" (without the quotes) to stop the installer.

Select language (en,de) [en]: <-- Hit Enter
Installation mode (standard,expert) [standard]: <-- Hit Enter
Full qualified hostname (FQDN) of the server, eg hosting.domain.tld [hosting.canomi.com]: <-- Hit Enter
MySQL server hostname [localhost]: <-- Hit Enter
MySQL server port [3306]: <-- Hit Enter
MySQL root username [root]: <-- Hit Enter
MySQL root password []: <-- Enter your MySQL root password
MySQL database to create [dbispconfig]: <-- Hit Enter
MySQL charset [utf8]: <-- Hit Enter
Configuring Postgrey
Configuring Postfix
Generating a 4096 bit RSA private key
............................++
............................++
writing new private key to 'smtpd.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]: <-- Enter 2 letter country code
State or Province Name (full name) [Some-State]: <-- Enter the name of the  state
Locality Name (eg, city) []: <-- Enter your city
Organization Name (eg, company) [Internet Widgits Pty Ltd]: <-- Enter company name or press enter
Organizational Unit Name (eg, section) []: <-- Hit Enter
Common Name (e.g. server FQDN or YOUR name) []: <-- Enter the server hostname, in my case: hosting.drach.pro
Email Address []: <-- Hit Enter
Configuring Mailman
Configuring Dovecot
Configuring Spamassassin
Configuring Amavisd
Configuring Getmail
Configuring BIND
Configuring Jailkit
Configuring Pureftpd
Configuring Apache
Configuring vlogger
Configuring Metronome XMPP Server
writing new private key to 'localhost.key'
-----
Country Name (2 letter code) [AU]: <-- Enter 2 letter country code
Locality Name (eg, city) []: <-- Enter your city
Organization Name (eg, company) [Internet Widgits Pty Ltd]: <-- Enter company name or press enter
Organizational Unit Name (eg, section) []: <-- Hit Enter
Common Name (e.g. server FQDN or YOUR name) [hosting.canomi.com]: <-- Enter the server hostname, in my case: hosting.drach.pro
Email Address []: <-- Hit Enter
Configuring Ubuntu Firewall
Configuring Fail2ban
[INFO] service OpenVZ not detected
Configuring Apps vhost
Installing ISPConfig
ISPConfig Port [8080]:
Admin password [admin]:
Do you want a secure (SSL) connection to the ISPConfig web interface (y,n) [y]: <-- Hit Enter
Generating RSA private key, 4096 bit long modulus
.................++
.................++
e is 65537 (0x10001)
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]: <-- Enter 2 letter country code
State or Province Name (full name) [Some-State]: <-- Enter the name of the  state
Locality Name (eg, city) []: <-- Enter your city
Organization Name (eg, company) [Internet Widgits Pty Ltd]: <-- Enter company name or press enter
Organizational Unit Name (eg, section) []: <-- Hit Enter
Common Name (e.g. server FQDN or YOUR name) []: <-- Enter the server hostname, in my case: hosting.drach.pro
Email Address []: <-- Hit Enter
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: <-- Hit Enter
An optional company name []: <-- Hit Enter
writing RSA key

Configuring DBServer
Installing ISPConfig crontab
no crontab for root
no crontab for getmail
Detect IP addresses
Restarting services ...
Installation completed.

The installer automatically configures all underlying services, so no manual configuration is needed.

Afterwards you can access ISPConfig 3 under http(s)://hosting.drach.pro:8080/ or http(s)://185.46.86.3:8080/ ( http or https depends on what you chose during installation). Log in with the username admin and the password admin (you should change the default password after your first login):

 

The system is now ready to be used.

 

24 Additional Notes

22.1 OpenVZ

If the Debian server that you've just set up in this tutorial is an OpenVZ container (virtual machine), you should do this on the host system (assuming that the ID of the OpenVZ container is 101 - replace it with the correct VPSID on your system):

VPSID=101
for CAP in CHOWN DAC_READ_SEARCH SETGID SETUID NET_BIND_SERVICE NET_ADMIN SYS_CHROOT SYS_NICE CHOWN DAC_READ_SEARCH SETGID SETUID NET_BIND_SERVICE NET_ADMIN SYS_CHROOT SYS_NICE
do
  vzctl set $VPSID --capability ${CAP}:on --save
done

22.2 Резюме

Готово. У нас получилось.

 

5 комментарии

  • Игорь

    написал Игорь

    Вторник, 03 Август 2021 02:29

    А у нас не получилось, на Debian 9, на котором (вероятно) вообще не проверялось ничего, эта глупая панель написанная двоечниками ищет
    php5-fpm.service: Restarting services ... Failed to reload php5-fpm.service: Unit php5-fpm.service not found.
    ...которого нет и не будет уже в Debian 9, fastcgi_pass в глупом конфиге имеет значение "unix:/var/lib/php5-fpm/ispconfig.sock" Которого тоже нет, и не будет уже в Debian 9, по понятной для нормальных людей причине: представьте себе, нет никакого "php5-fpm", ни в /var/lib/, ни в /etc/, есть /etc/php, и там все версии (да! Debian 9 have native support for co-installable PHP versions, они могут работать параллельно без каких либо танцев с бубном и мук: вот так, из коробки)

    Пожаловаться
  • Игорь

    написал Игорь

    Вторник, 03 Август 2021 02:36

    В общем, всё я смог настроить, а проблема была в том, что автоматически система с Debian 9.8 распознавалась как Debian 8, а я не заметил, и удивлялся - чего поведение панели и конфиги предполагают реалии Debian 8, с его php5-fpm, /etc/php5/fpm вместо того, что реально есть на Debian 9, где нет юнита php5-fpm но есть php5.6-fpm, php7.0-fpm, php7.1-fpm, php7.2-fpm, php7.3-fpm а вместо /etc/php5/fpm соответственно /etc/php/(5.6|7.0|7.1|7.2|7.3) sourceforge.net/p/ispconfig/news/2019/02/ispconfig-3113-patch-1-released/

    Пожаловаться
  • Владимир

    написал Владимир

    Вторник, 03 Август 2021 02:37

    Мои поздравления! Игорь, спасибо за развёрнутое пояснение! Уверен, однажды эта информация будет кому-то полезной.

    Пожаловаться
  • Евгений

    написал Евгений

    Вторник, 03 Август 2021 02:39

    Здравствуйте всем! Владимир, подскажите пожалуйста, "Будем использовать hostname *** с IP-адресом 185.46.86.3", IP нужно прописывать статический? Тот, который я приобрел у Ростелекома? Или нужно прописывать типа 168.192.0.11 от локалки? Просто у меня есть статический IP, и я прописал их к купленным доменам. Спасибо!

    Пожаловаться
  • Владимир

    написал Владимир

    Вторник, 03 Август 2021 02:41

    Добрый день! Тут два варианта могут быть:
    1) Если Вы делаете домашний хостинг для тестов и будете заходить на него только с домашних устройств, то прописываем локальный адрес типа 168.192.0.11.
    2) Если же Вы на домашнем компьютере поднимаете хостинг, чтобы сайты были видны из интернета, то скорее всего надо будет прописывать статический IP, а дальше настраивать роутер: - Можно пробрасывать порт (port forwarding), то есть связать внешний и внутренний порт 80, и внешений статический IP, и локальный - Можно перевести модем в режим моста, а авторизацию поднять на компьютере. - Можно DMZ (публикация хоста) Честно говоря, я не до конца уверен, что эта панель сможет работать за роутером.

    Пожаловаться
Авторизуйтесь, чтобы получить возможность оставлять комментарии
Go to top