Содержание

Установка и настройка Hestia CP на VPS

Панель управления HestiaCP распространяется под лицензией GPL v3 и основана на проекте VestaCP, который давно не поддерживается. Hestia CP позволяет добавлять новые сайты, работать с почтой и базами данных, cron, обновления, файловый менеджер, возможность добавить SSL .

В статье Обзор ТОП 10 Панелей Управления Хостингом VPS я кратко рассказываю об известных мне хостинг панелях.

Системные требования Hestia:

Панель управления сервером (web server control panel) Hestia поддерживает только 64 битные операционные системы Linux: Debian 9, Debian 10, Ubuntu 16.04 LTS, Ubuntu 18.04 LTS, Ubuntu 20.04 LTS, Ubuntu 22.04 LTS. Дистрибутивы CentOS не поддерживаются.

Плюсы Hestia CP:

Минусы Hestia CP:

Шаг 1 - выбор VPS для Hestia

Мой выбор в сфере VPS-хостинга пал на PQ Hosting, Aeza (AÉZA) и DigitalOcean. Приятно, что эти провайдеры ценят своих клиентов и сохраняют выгодные условия даже при изменении базовых тарифов. Они предлагают широкий выбор конфигураций, что позволяет подобрать оптимальный вариант под любые нужды. Кроме того, у них часто проводятся акции и действуют специальные предложения для постоянных клиентов, что позволяет значительно сэкономить на аренде сервера. У них отличная техническая поддержка, которая всегда готова помочь с любыми вопросами.

Операционные системы, которые использовались для написание этого обзора установки Hestia: Ubuntu 20 LTS, Ubuntu 22 LTS.

Шаг 2 - Войдите как системный пользователь (root)

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

Обновите операционную систему, проверьте имя компьютера, локаль, время. Обычно достаточно просто обновить дистрибутив командами:

# apt update; apt upgrade

и добавить несколько системных утилит:

# apt install lsb-release htop net-tools

Также проверьте имя компьютера командой hostname с ключом f. Имя сервера должно соответствовать FQDN, говоря по простому если вы можете используя имя сервера (а не его IP) получить доступ используй протокол SSH - то ОК. Безусловно, если вы планируете использовать полноценный почтовый сервер вам требуется сделать дополнительные проверки - изучите чек лист по настройке VPS/VDS, выделенного сервера Linux с нуля.

Шаг 3 - Установка Hestia

Недавно на сайте Hestia появился конфигуратор установщика. Очень удобно! Поэтому я переписал эту часть и привожу скриншот выбора моих настроек. Например, я отключаю установку поддержки iptables (чтобы спокойно использовать UFW), не устанавливаю Fail2Ban так как SSH порт у меня открыт только для моих VPN, а для других блокировок Fail2Ban не эффективен (особенно весело смотреть когда на слабой VPS Fail2Ban выжирает все ресурсы).

cd /root; wget https://raw.githubusercontent.com/hestiacp/hestiacp/release/install/hst-install.sh

Для запуска установщика с параметрами по умолчанию используйте команду:

# bash hst-install.sh
Welcome to the Hestia Control Panel installer!

Запуска установщика Hestia с параметрами из конфигуратора установщика:

bash hst-install.sh --apache no --iptables no --fail2ban no

Если по каким-то причинам вам нужно изменить параметры по умолчанию, вы можете воспользоваться такой командой

bash hst-install.sh -f -y no -e email@domain.tld -p p4ssw0rd -s hostname.domain.tld

Шаг 4 - Nginx без Apache

Скрипт ручного обновления с Nginx + Apache2 + PHP-FPM до Nginx + PHP-FPM.

Шаг 5 - Вопросы установщика

После запуска установщика на Шаг 4, я получил предупреждение, что Hestia не хочет работать с iptables для начинающих: Простое управление брандмауэром с UFW.

Я собcвенно привык работать напрямую с iptables, поэтому я подтверждаю удаления пакета ufw. WARNING: The following packages are already installed ufw* Would you like to remove the conflicting packages? [y/n] y

На следующем шаге будет показано какие компоненты Hestia автоматически установит. Ознакомьтесь с ними и подтвердите, нажав Y.

         _   _           _   _        ____ ____
               | | | | ___  ___| |_(_) __ _ / ___|  _ \
               | |_| |/ _ \/ __| __| |/ _` | |   | |_) |
               |  _  |  __/\__ \ |_| | (_| | |___|  __/
               |_| |_|\___||___/\__|_|\__,_|\____|_|

                          Hestia Control Panel
                                  1.3.2
                            www.hestiacp.com

========================================================================

Thank you for downloading Hestia Control Panel! In a few moments,
we will begin installing the following components on your server:
  1. NGINX Web / Proxy Server
  2. Apache Web Server (as backend)
  3. PHP-FPM Application Server
  4. Exim Mail Server + ClamAV + SpamAssassin
  5. Dovecot POP3/IMAP Server
  6. MariaDB Database Server
========================================================================


Would you like to continue with the installation? [Y/N]: Y

В конце скрипт выведет ссылку (Admin URL), логин и пароль на управление панелью. И предложит перегрузить сервер. Копируем данный для доступа и перегружаем сервер.

Все! Установка Hestia CP завершена. Дальнейшее управление веб панелью Hestia CP происходит при помощи вебинтерфейса (Admin URL), с использованием порта 8083.

Проверить работу демона hestia можно командой lsof:

# lsof -i:8083
COMMAND   PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
hestia-ng 522  root    6u  IPv4  19159      0t0  TCP *:8083 (LISTEN)
hestia-ng 523 admin    6u  IPv4  19159      0t0  TCP *:8083 (LISTEN)

Шаг 5 - Настройка Hestia CP

Переходим по ссылке Admin URL, указываем логин и пароль. И попадаем в такой интерфейс.

И сразу выключаем автоматической обновление панели Hestia, ибо последствия неконтролируемого обновления, без бекапа можно разгребать долго. Для этого переходим в меню Server → Updates и нажимаем кнопку Automatic Updates, должно получиться как на скриншоте.

Шаг 6 - Настройка безопасного фаервола Hestia CP

Безопасный фаервол - это фаервол в котором по умолчанию все запрещено.

Напомню, что ранее Hestia злостно:) удалила UFW и я наделся что будет из коробки настроен iptables правильно. Но нет, были прописаны правила для определённых портов и настроен fail2ban, но правила по умолчанию открыты. Правила брандмауэра по умолчанию, после установки Hestia, посмотрим командой iptables с ключами -nL -v:

iptables -nL -v
Chain INPUT (policy ACCEPT 7166 packets, 1063K bytes)
 pkts bytes target     prot opt in     out     source               destination
 3325  773K fail2ban-HESTIA  tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:8083
   21  1324 fail2ban-MAIL  tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            multiport dports 25,465,587,110,995,143,993
    0     0 fail2ban-FTP  tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:21
  928  101K fail2ban-SSH  tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:22
 7476 1220K fail2ban-RECIDIVE  tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            multiport dports 1:65535
 
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
 
Chain OUTPUT (policy ACCEPT 7858 packets, 6693K bytes)
 pkts bytes target     prot opt in     out     source               destination

После изучения файлов с настройками фаервола /etc/iptables.rules и /usr/local/hestia/data/firewall/rules.conf я пришел к выводу, что настройки правильные, но они погрузились только частично. Используя команду iptables-restore перегружаем правила из файла /etc/iptables.rules.

# iptables-restore /etc/iptables.rules

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

Лайфхак

При установке Hestia, отключите отключите поддержку модулей iptable и Fail2Ban и далее спокойно используйте UFW.

Шаг 7 - Hestia CP переключение версии PHP

Функция переключения версии PHP для конкретного сайта должна быть в каждой панели для управления хостингом. Ибо каждая CMS выдвигает свои требования для версии интерпретатора PHP.

Итак, проверим работает ли переключатель PHP в Hestia CP. После установки Hestia, я загрузил файл phpinfo. PHPinfo показал, что у меня установлен PHP версии 7.4.15.

Теперь я хочу установить поддержку PHP например версии 7.3, которую требует например движок DataLife Engine (DLE) (на php 7.4 DLE не работает).

Перехожу в меню Server → Configure → Web server, пролистываю до раздела Enabled PHP versions и ставлю галочку напротив нужно мне версии PHP. Нажимаю кнопку Save. Разработчики предупреждают: "Сохранение изменений может занять несколько минут. Дождитесь завершения процесса и не обновляйте страницу."

Ждем какой-то время за чашкой чая. Страница обновляется. Переходим в настройки тестового сайта и в разделе "Backend Template PHP-FPM" выбираем нужную версию PHP.

Жмем кнопку Save. И обновляем страницу выводимую файлом phpinfo.

И таки да!!! Я вижу версию PHP Version 7.3.27-2+ubuntu20.04.1+deb.sury.org+1. Слава богу! Я действительно не просто потерял время на изучение этой панели и могу сказать панель HestiaCP пригодна к работе и является хорошим продуктом. Рекомендую к использованию на VDS/VPS Zomro.

Шаг 8 - Hestia CP Работа с базами данных, phpMyAdmin

Управлять базами данных можно в одноименном разделе — DВ. Для создания базы данных нажмите «Добавить БД». Панель предложит заполнить поля:

Сохраните изменения кнопкой в правой части строки операций.

Если вы хотите подключаться к базе данных удаленно, например, со своего компьютера, разрешите соединения на 3306 порт в файрволе панели и отредактируйте файл /etc/mysql/mariadb.conf.d/50-server.cnf, заменив значение в строке bind-address на 0.0.0.0.

FAQ 1 - Изменение максимального размера закачиваемого файла upload_max_filesize в панели управления Hestia CP

Обычно, без использования панелей управления сервером, лимиты меняют в php.ini любым удобным вам консольным редактором, например Nano, vim.

Но у нас панель, давайте найдем, как увеличить максимальный размер закачиваемого файла по HTTP с помощью PHP в Hestia CP.

  1. Переходим во вкладку «Server» ("Настройки"), выбираем пункт веб сервер «apache2» и нажимаем на кнопку «Редактировать».
  2. Дальше нажимаем кнопку «Configure PHP» ("Настроить PHP").
  3. В появившихся полях будет строчка «upload_max_filesize», вместо 2M можно поставить любой желаемый размер.

Не забываем нажать кнопку сохранения "Save". В данном примере, я разрешил загружать файлы до 25 Мегабайт.

FAQ 2 - Как редактировать php.ini в панели управления Hestia CP

Для редактирования php.ini в панели управления Hestia CP смотрите пример выше. Там на последнем скриншоте, в самом низу страницы, расположена кнопка "Advanced Options". При нажатии на которую откроется для редактирования файл php.ini.

FAQ 3 - Как настроить удаленное резервное копирование по FTP в Hestia CP

Для того чтобы хранить данные на удаленном сервере Hestia поддерживает резервное копирование на внешний FTP сервер.

  1. На пером шаге настраиваем доступ к внешнему FTP серверу, для этого переходим в Верхнем меню Server → Configure → Backups («Настройки сервера → Настроить → Резервные копии»). Здесь же находится вкладка для настроек Локального хранения резервных копий.
  2. Переходим в меню и открываем вкладку "Remote backup (Удалённый бекап) и заполняем все поля: «Протокол» – выбираем протокол, настроенный на вашем сервере резервного копирования - ftp или sftp (по умолчанию ftp). «Хост» – адрес ftp сервера. «Порт» – порт ftp сервера. «Аккаунт» – имя пользователя ftp сервера. «Пароль» – пароль пользователя. «Каталог» – указать адрес папки куда сохранять бэкапы сервера (адрес указываем от корня сервера, на например как в Vesta /home/backup/).
  3. Что бы резервное копирование выполнялось автоматически, необходимо настроенное задание в CRON. По умолчанию резервное копирование происходит в 5:10 утра по времени вашего сервера. Но если вы хотите поменять настройки запуска, вам следует на странице CRON найти скрипт v-backup-users и нажать кнопку конфигурирования.

Рекомендую создавать резервную копию в ночное время, при создании копии увеличивается нагрузка на сервер, из-за чего сайты могут открываться с задержкой.

Бэкап сайта в Hestia CP состоит из:

  1. Исходников сайтов, сертификатов к ним, конфигураций Nginx и самой панели управления Hestia к каждому домену.
  2. Конфигурационных файлов системного профиля на сервере.
  3. Дампа mysql баз и системных настроек для них.
  4. Cron файла пользователя.

Если выполнять вход в панель управления под Admin, то по умолчанию резервные копии будут производиться для всех пользователей, созданных в панели управления.

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

Далее для создания резервной копии с заданными параметрами нажимаем на кнопку Создать бэкап.

Для восстановления информации из резервной копии, во вкладке Backup напротив нужной резервной копии нажимаем кнопку Восстановить. В открывшемся окне выбираем необходимые пункты для восстановления или выбираем Восстановить все нажав на соответствующую кнопку.

FAQ 4 - Создание FTP-пользователей в Hestia CP

Hestia CP как и Vesta CP) использует сервер vsFTPd для настройки FTP соединении.

  1. Зайдите в панель под пользователем, которому принадлежит нужный домен.
  2. Перейдите в раздел WEB, наведите курсор на поле с доменом и нажмите Редактировать.
  3. В списке настроек поставьте галочку в пункте Additional FTP account(s) (Дополнительный ftp) и внесите данные:
  4. Нажмите Сохранить.

GnuTLS -15 в gnutls_record_recv: An unexpected TLS packet was received

При подключении клиентом Filezilla полученного доступа получаем ошибку

Ошибка:	Ошибка GnuTLS -15 в gnutls_record_recv: An unexpected TLS packet was received.

Гуглим, читаем и не понимаем :)

Много ругани на то что сервер FTP vsftpd ничего не пишет в логах, да и вообще с логами он не дружит (Как посмотреть ошибки логирования пользователей на FTP сервере vsftpd?). В чем-то ругальщики правы и vsftpd действительно не балует логами.

Выход один отключаем информационную соску в виде запросов к Google и включаем здравый смысл. На предыдущем шаге я созда FTP пользователя, но НЕ в стандартной директории, а в поддиректории. Смотрим настройки моего FTP пользователя в /etc/passwd:

# nano /etc/passwd
admin_ftpdan30:x:1000:1000::/home/admin/web/vps100.mirax-hotel.com/dan30:/usr/sbin/nologin

Видим chroot настроен на директорию /home/admin/web/vps100.mirax-hotel.com/dan30. Проверяем а существует ли эта директория командой ls:

# ls /home/admin/web/vps100.mirax-hotel.com/dan30
ls: cannot access '/home/admin/web/vps100.mirax-hotel.com/dan30': No such file or directory

Видим, что директория не создана, то есть HestiaCP как и Vesta не создает директорию. Значит создаем нужную директорию вручную, задаем нужные права chown admin:admin dan30. Все можно работать!

FAQ 5 - Как сбросить пароль в Hestia и Vesta

Иногда, возникает задача сбросить пароль доступа к панели Hestia или Vesta.

/usr/local/vesta/bin/v-change-user-password USER PASSWORD
/usr/local/hestia/bin/v-change-user-password USER

FAQ 6 - Как добавить самоподписанный SSL сертификат в панели управления Hestia CP

Создание самоподписанного сертификата с помощью openssl

openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -nodes -days 365 -subj '/CN=localhost'

где

Для настройки SSL сертификата переходим во вкладку «WEB». В новом окне находим пункт «Поддержка SSL» вводим данные от сертификата который создали с помощью openssl. В первое окно содержимое файла cert.pem, во второе окно содержимое файла key.pem.

FAQ 7 - Установка IonCube Loader на Hestia

IonCube Loader часто требуемое расширение PHP и подробно описана в статье Установка и включение IonCube в PHP на хостинг. Разработчики Hestia упростили задачу установки IonCube на свою панель и создали простой bash скрипт автоматизирующий процесс. Для использования и запуска скрипта используйте команды:

wget https://raw.githubusercontent.com/jaapmarcus/ioncube-hestia-installer/main/install_ioncube.sh
chmod +x install_ioncube.sh
./install_ioncube.sh

Заключение

Hestia очень качественная, простая и к тому же бесплатная панель. Чтобы не выводить в отдельные шаги, несколько замечаний при работе с HestiaCP:

  1. Обновляем операционную систему стандартными методами, через консоль утилитой apt.
  2. Не забудьте настроить безопасный SSH. У меня есть правило запрещать доступ пользователю root. В принципе, в Хестия правильно настроен fail2ban и если у вас хороший пароль, можно не трогать настройки демона SSH.