Установка и настройка 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:

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

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

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

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

# apt update; apt upgrade

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

# apt install lsb-release htop net-tools

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

Недавно на сайте 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

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

После запуска установщика на Шаг 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
  • На следующем шаге введите email администратора (Please enter admin email address)
  • Введите имя компьютера (Please enter FQDN hostname)

В конце скрипт выведет ссылку (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)

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

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

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

Напомню, что ранее 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.

Функция переключения версии 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.

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

  • База данных — имя базы данных. К введенному значению автоматически добавится префикс admin_
  • Аккаунт
  • Пароль — можно ввести вручную или генерировать
  • Остальное можно не трогать

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

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

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

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

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

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

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

Для того чтобы хранить данные на удаленном сервере 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 напротив нужной резервной копии нажимаем кнопку Восстановить. В открывшемся окне выбираем необходимые пункты для восстановления или выбираем Восстановить все нажав на соответствующую кнопку.

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

  1. Зайдите в панель под пользователем, которому принадлежит нужный домен.
  2. Перейдите в раздел WEB, наведите курсор на поле с доменом и нажмите Редактировать.
  3. В списке настроек поставьте галочку в пункте Additional FTP account(s) (Дополнительный ftp) и внесите данные:
  4. Нажмите Сохранить.
  • Аккаунт - логин создаваемого пользователя, с которым он будет подключаться по FTP.
  • Пароль - введите или сгенерируйте пароль доступа для создаваемого пользователя.
  • Путь - директория, которой будет ограничен доступ для создаваемого пользователя. По умолчанию будет предоставлен доступ к домашней директории текущего домена, и в этом случае прописывать путь не нужно. Если необходимо дать доступ к другой директории, путь к ней необходимо указать относительно домашней директории сайта: например, для выдачи доступа к /home/user1/web/mydomain.com/public_html укажите в этом поле /public_html.
  • Отправить данные ftp аккаунта по адресу - можно сразу выслать логин и пароль нового пользователя на его почту. Необязательно для заполнения.

При подключении клиентом 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. Все можно работать!

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

  • Для сброса пароля Vesta используйте команду:
/usr/local/vesta/bin/v-change-user-password USER PASSWORD
  • Для сброса пароля Hestia используйте команду:
/usr/local/hestia/bin/v-change-user-password USER

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

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

где

  • -newkey rsa:4096 Создать 4096-битный RSA ключ.
  • -keyout key.pem Сохранить ключ в файл key.pem.
  • -out cert.pem Сохранить сертификат в файл cert.pem.
  • -nodes Не защищать приватный ключ паролем.
  • -days 365 Количество дней валидности сертификата.
  • -subj '/CN=localhost' Используйте эту опцию, чтобы избежать вопросов о содержимом сертификата. Замените localhost на доменное имя.

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

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.

PQ VPS сервера в 38+ странах.

PQ VPS сервера в 38+ странах.

📌 Для тестирования скриптов, установщиков VPN, Python ботов рекомендуем использовать надежные VPS на короткий срок. Если вам нужна помощь с более сложными задачами, вы можете найти фрилансера, который поможет с настройкой. Узнайте больше о быстрой аренде VPS для экспериментов и о фриланс-бирже для настройки VPS, WordPress. 📌

💥 Подпишись в Телеграм 💥 и задай вопрос по сайтам и хостингам бесплатно!