Аренда VPS за скромные деньги даёт полный контроль над сервером, но за контроль платят временем. Nginx, PHP, MariaDB, почта, DNS, брандмауэр: каждое звено по отдельности настраивается за вечер, а вот поддерживать зоопарк из десятка сайтов уже похоже на вторую работу. Панель HestiaCP собирает весь этот зоопарк в один аккуратный интерфейс и раздаёт бесплатно, без ограничений на число доменов. Ниже разобрано, чем панель выделяется среди свободных собратьев, как поставить её на чистый Ubuntu Server за полчаса и как не наступить на грабли в первые дни эксплуатации.

Чем панель HestiaCP выделяется среди бесплатных собратьев

HestiaCP выросла из VestaCP, культовой панели начала 2010-х, которую любили за простоту. Исходная ветка почти перестала развиваться, и в 2019 году сообщество сделало форк, с тех пор живущий самостоятельной жизнью: регулярные релизы, обновления безопасности, поддержка свежих версий PHP и Ubuntu. На момент подготовки материала актуальная стабильная ветка панели 1.10.x, свежие сборки выходят регулярно. Код открыт под лицензией GPL, поэтому панель честно бесплатна, без деления на "бесплатную" и "профессиональную" версии. За панелью стоит живое сообщество с форумом и документацией, редкая роскошь для бесплатного продукта.

Под капотом у HestiaCP знакомый многим стек. Nginx работает фронтендом, а бэкендом выбирается либо Apache, либо чистый PHP-FPM, и это два типовых сценария: максимальная совместимость со старыми сайтами или максимальная скорость без посредника. Базы данных обслуживает MariaDB или PostgreSQL. Почта построена на связке Exim и Dovecot, к ней подключаются антивирус ClamAV и антиспам-фильтр. Файлы раздаёт vsftpd или ProFTPD, доменные зоны держит BIND, а периметр закрывают брандмауэр на iptables и fail2ban, который ловит перебор паролей. Все компоненты стандартные, ничего экзотического, и каждый при желании тюнингуется руками через привычные конфиги.

Панель умеет то, за что коммерческие аналоги просят подписку: несколько версий PHP с переключением на каждый домен в отдельности, двухфакторная аутентификация, API для внешних скриптов, планировщик резервных копий, веб-интерфейс для почты Roundcube и встроенный файловый менеджер. Отдельная приятность для переезжающих: импорт данных из VestaCP и полноценный CLI, где каждая операция дублируется командой вида v-add-что-нибудь, что удобно для скриптов миграции.

Кому панель подойдёт? Веб-студии, ведущей десяток клиентских сайтов, владельцу небольшой сети проектов, фрилансеру, переезжающему с виртуального хостинга на VPS и не желающему платить за коммерческую панель. Кому не подойдёт: команде, разворачивающей один сервис в контейнерах, там панель лишняя сущность, и админам, которым проще править конфиги напрямую, не отвлекаясь на графику.

Какой сервер нужен панели и как подготовить его к установке

Первое правило, экономящее часы: HestiaCP ставится только на чистую операционную систему. Поверх уже настроенного стека, поверх другой панели или второй копией установка не поддерживается. Берите свежий Ubuntu Server LTS или стабильный Debian, разрядность x86_64.

По ресурсам ориентиры скромные: панель стартует от 1 ГБ оперативной памяти, но с почтой, антивирусом и несколькими сайтами комфортнее от 2 ГБ и выше. Антивирус ClamAV при сканировании способен занять почти гигабайт сам, поэтому на слабых VPS его разумно не ставить вовсе или вынести почту на сторонний сервис. Если памяти ровно гигабайт, не поленитесь добавить файл подкачки на пару гигабайт: установка прожорливее эксплуатации, и именно на ней слабые серверы спотыкаются. Диск: около 10 ГБ уходит на систему и сам стек, дальше считайте по объёму сайтов и почты.

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

apt update && apt upgrade -y
hostnamectl set-hostname panel.example.com
getent hosts panel.example.com

Имя хоста задаётся полным, вида panel.example.com, а не коротким "panel". Почтовые серверы чужих провайдеров придирчиво проверяют имя хоста по PTR-записи, и без неё письма охотно улетают в спам. Если панель будет обслуживать почту, заранее попросите хостера прописать PTR, указывающий на panel.example.com. Заодно решите вопрос с DNS: если домены уже живут на сторонних серверах имён, компонент DNS при установке не нужен, это экономит память и один открытый порт.

Пошаговая установка HestiaCP одной командой с выбором стека

Установка сводится к скачиванию официального скрипта и его запуску с параметрами. Скрипт сам подключит репозиторий панели, поставит выбранные компоненты и создаст администратора.

wget https://raw.githubusercontent.com/hestiacp/hestiacp/release/install/hst-install.sh
bash hst-install.sh --interactive yes --hostname panel.example.com --email Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в браузере должен быть включен Javascript. --password СЛОЖНЫЙ_ПАРОЛЬ --lang ru --nginx yes --apache no --phpfpm yes --multiphp yes --named yes --clamav yes --iptables yes --fail2ban yes --quota no --api yes --port 8083

Флаги определяют характер будущего сервера, поэтому их стоит понять заранее. Пара --nginx yes --apache no --phpfpm yes даёт быструю связку Nginx и PHP-FPM без посредника, такой вариант тянет статические сайты и современные CMS. Если проекты старые и зависят от .htaccess, берите --apache yes: тогда Nginx отдаст статику, а динамикой займётся Apache. Флаг --multiphp разрешает несколько версий PHP одновременно, после чего в карточке каждого домена появляется выпадающий список, удобно, когда один сайт живёт на PHP 8.3, а другой не переносит ничего новее 7.4. Параметр --named поднимает собственный DNS, --clamav добавляет антивирус почте, а связка --iptables с --fail2ban строит брандмауэр и защиту от подбора паролей. Флаг --quota включает дисковые квоты пользователей, вещь полезная при работе с клиентами, хотя на отдельных файловых системах она может не заработать. Параметры --email и --lang задают почту администратора и язык интерфейса, русский доступен из коробки. Порт панели задаётся флагом --port, по умолчанию 8083.

Скрипт работает от 10 до 30 минут, время зависит от диска и мощности VPS, и всё это время сессию SSH закрывать нельзя. В конце установщик выведет адрес панели, логин admin и пароль. Пароль тут же меняется на собственный, об этом ниже.

Первичная настройка панели после установки и вход по защищённому адресу

Панель открывается по адресу с номером IP сервера и портом 8083, уже по HTTPS. Браузер пожалуется на самоподписанный сертификат, для первого входа это нормально. После входа делаются четыре вещи: смена пароля в профиле, включение двухфакторной аутентификации, сверка правил брандмауэра и выпуск нормального сертификата для самой панели. Сертификат выпускается командой v-add-letsencrypt-host, она сработает, когда имя panel.example.com уже указывает на сервер, и тогда предупреждения браузера исчезнут навсегда. Порт панели при желании меняется в настройках, нестандартный номер режет фоновый шум сканеров, которые дёргают 8083 по всему интернету круглосуточно.

Брандмауэр установлен вместе с панелью, и перед созданием сайтов полезно сверить открытые порты со списком ниже.

В базовой конфигурации панель и её службы занимают следующие порты:

  1. 22, SSH для администрирования сервера;
  2. 80 и 443, сайты и переадресация на HTTPS;
  3. 8083, сама панель, phpMyAdmin и веб-почта Roundcube;
  4. 25, 465 и 587, отправка писем;
  5. 143, 993, 110 и 995, получение почты по IMAP и POP3;
  6. 53, служба DNS, если панель держит доменные зоны;
  7. 21 вместе с пассивным диапазоном 12000-12100, если поднят FTP.

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

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

Администратор в HestiaCP не одинок: панель рассчитана на работу с несколькими учётными записями. Для каждого клиента заводится пользователь, ему назначается пакет лимитов, число доменов, баз, ящиков и дисковая квота, и пользователь видит в интерфейсе только собственные проекты. Это превращает сервер в мини-хостинг: клиенты самостоятельно управляют сайтами и почтой, не трогая чужое и не видя настроек сервера.

Пакеты редактируются в разделе Packages. Типовой набор выглядит так: пакет "визитка" с одним доменом и парой почтовых ящиков, пакет "магазин" с десятком доменов, увеличенной квотой и запасом по базам. Изменение пакета применяется к пользователю мгновенно, пересчитывать лимиты руками не нужно.

Журналы тоже под рукой. В карточке каждого домена живут логи доступа и ошибок, у почты своя статистика доставки, а брандмауэр и fail2ban ведут собственные списки событий. Свои IP-адреса стоит сразу внести в белый список fail2ban, чтобы кривая очередь запросов не заблокировала самого админа: шутка про потерянный доступ к серверу стара, но терять доступ всё равно неприятно. Из CLI полезно помнить v-list-sys-users для быстрого просмотра пользователей и v-list-web-domains для сверки доменов, вывод обеих команд читается без документации.

Создание первого сайта с базой данных и бесплатным сертификатом

Сайт создаётся в разделе WEB кнопкой добавления домена. В форме указывается имя домена, при желании алиас с www, из списка выбирается IP. После создания в карточке домена появляется галочка поддержки Let's Encrypt: панель сама выпустит сертификат, включит переадресацию на HTTPS и будет продлевать выпуск по расписанию без участия человека. Процедура занимает до минуты, от администратора требуется только корректная DNS-запись, по которой проверяется владение доменом.

База данных создаётся в разделе DB, там же кнопкой открывается phpMyAdmin. Почтовый домен заводится в разделе MAIL, у каждого ящика настраиваются квота, автоответчик и антиспам. Задания cron создаются в карточке домена, у каждого свой период и свой лог выполнения. Там же включается статистика посещений и файловый менеджер, мелочь, но спасает, когда нужен быстрый доступ к файлу без FTP-клиента. Права на файлы, переадресации и редиректы редактируются без консоли, лезть в SSH для типовых операций не требуется.

Любители консоли не обделены, каждая операция дублируется командой. Создание домена, выпуск сертификата и добавление базы выглядят так:

v-add-web-domain admin example.com
v-add-letsencrypt-domain admin example.com
v-add-database admin wordpress wp_db WPpass123

Команды выручают при миграции, когда сайтов десяток и кликать по интерфейсу дольше, чем написать цикл на три строки.

Обновления, бэкапы и типичные ошибки пользователей панели

Панель обновляется вместе с системой через apt, потому что живёт в собственном репозитории. Ручной запуск v-update-sys-hestia-all подхватит свежую версию панели и её пакетов, а перед крупным обновлением снимается резервная копия, о ней ниже. Перед обновлением версии PHP у сайта разумно проверить его работу на новой ветке на тестовом домене: переключение делается в один клик, а откатится только с бэкапом.

Резервное копирование встроено и настраивается в разделе Backup: выбирается расписание, локальное хранилище и удалённое, куда копии уходят по SSH или в облачное хранилище. Команда v-backup-user admin снимает копию вручную, восстановление выполняет v-restore-user. Проверенная практика: раз в месяц разворачивать копию на тестовом сервере, потому что бэкап, который ни разу не восстанавливали, это лотерея, а не страховка.

Чаще всего панель не открывается сразу после установки, и в девяти случаях из десяти виновата группа безопасности у провайдера, где закрыт порт 8083. Если письма улетают в спам, почти всегда не хватает PTR-записи и DKIM: ключ DKIM панель генерирует сама, его остаётся добавить TXT-записью у регистратора. А если сертификат не выпускается, значит DNS ещё не обновился или сработал лимит попыток выпуска, подождите час и повторите.

HestiaCP не отменяет понимание Linux, но убирает рутину, съедающую вечер. Панель превращает чистый VPS в полноценный хостинг за полчаса, берёт на себя сертификаты, брандмауэр и расписания, а ответственность за копии и обновления честно оставляет человеку. Для владельца десятка сайтов это размен, на который стоит идти.