Бесплатная панель управления сервером Hestia

Панель управления 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:

Задача: экономить, экономить и еще раз экономить, но диски большие нужны и не очень медленные.

И вы знаете нашел и я рекомендую если нужен быстрый VDS/VPS с большими дисками заказывайте у

  1. Friendhosting Диск: 100 Gb 2.99€/мес. если выбрать Болгарию и 3.49€ в месяц в Нидерландах. Поддержка IPv6. Перейти на страницу актуальных акции.
  2. Или здесь, но дороже Zomro Диск: 100 Gb 10.79€/мес.

Операционную система установил Ubuntu 20.04.2 LTS.

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

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

# apt update; apt upgrade

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

# apt install lsb-release htop net-tools

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

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

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

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

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

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

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

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