Table of Contents
1 Предисловие
Статья написана как дополнение к инструкции «Настройка VPS для быстрой работы WordPress (VestaCP+Nginx+MySQL)», чтобы вы знали, как обстоят дела с Вестой в 2019 году. В 2020-м всё только хуже.
Пожалуй, даже самый ленивый админ что-то да слышал о панели VestaCP. Эта штука позволяет превратить сервер в легко управляемый мини-хостинг, способный быстро создавать сайты и базы данных, переносить существующие, мониторить нагрузку и так далее. Однако, как и в любом человеческом творении, у Весты есть косяки, о которых стоит знать до того, как связывать с ней админскую жизнь.
2 Проблема совместимости
Чтобы управлять сервером, требуется понимать устройство Linux. Панель облегчает рутинные операции, но не избавляет админа от понимания того, что творится «там». Из-за недостатка знаний начинающие пользователи, у которых всё сломалось, рассматривают проблему в контексте панели, что, в общем-то, логично. Но на деле проблема в позиционировании панели. Она не универсальна. На самом деле VestaCP беспомощна с настройками по умолчанию при какой-либо мало-мальски нестандартной конфигурации.
Вебсерверный софт, позволяющий сайтам работать, не является частью Весты. Он ставится отдельно, пускай даже и скриптом панели. Nginx, Apache, PHP и вообще любой софт может иметь разные названия служб, исполняемых файлов, их файлы конфигурации могут находится на одной ОС в одном каталоге, другой системе — в другом каталоге. Например, служба PHP-FPM может называться php-fpm, а может php7.3-fpm. Такое разнообразие Вестой не поддерживается, поэтому в какой-момент после обновления софта всё может превратиться в тыкву. Приходится либо подгонять систему под панель, либо модифицировать панель самостоятельно, либо отказываться от такой панели вовсе.
3 Система шаблонов
Файлы конфигураций в Linux — это обычные текстовые файлы. Vesta не редактирует их напрямую. Для того, чтобы сказать вебсерверу Nginx о новых сайтах, она генерирует файлы конфигураций, используя шаблоны — заготовки, где вместо значений параметров используются ключевые слова. Об этом я рассказывал в статье «VestaCP и WordPress: несколько советов по настройке».
Сгенерированные файлы конфигураций править нельзя — VestaCP почему-то не пересоздаёт при изменении настроек эти файлы, а пытается внедрить туда конфиг, сгенерированный по шаблону. В итоге всё ломается, потому что в текстовом документе получается мешанина из кусков старых настроек и новых. Зачем так сделано — не знаю. На мой взгляд лучше затирать пользовательские настройки, чтобы сайт хоть как-то работал (кому надо — поправит конфиг снова или изменит сами шаблоны), чем пытаться совместить несовместимое.
Концепция шаблонов в целом хороша: можно одни и те же настройки применять выборочно к любому количеству сайтов. Но шаблоны реализованы в этой панели топорно:
1. Нет внятной документации (не объяснено толком, как это работает).
2. Названия предустановленных шаблонов не интуитивно понятны.
3. Нет системы версионирования (с обновлением панели модифицированный стандартный шаблон может потерять изменения).
4. Нет явного разделения на «родные» и пользовательские шаблоны.
В общем, менять настройки софта на сервере, где установлена VestaCP — занятие неблагодарное. К тому же в какой-то из версий шаблоны были кардинально изменены, что также вызвало путаницу.
4 Легкомысленное отношение создателей
VestaCP — сложный программный продукт. Отношение к его развитию должно быть соответствующим. Однако то, как разработчики управляют проектом, служит примером того, как делать не следует.
- Нет истории изменений, где можно было бы оперативно узнать, что в новых версиях сделано. На Гитхабе о новых версиях ничего не написано, на форуме новости появляются с запозданием.
- Нет анонсирования выхода новых версий. Это нужно, чтобы админы подготовились к обновлению.
- Нет баг-трекера. Когда на форуме появляются сообщения о найденных проблемах, разработчики либо посылают заводить issue на Гитхабе, либо называют это багом какого-то стороннего софта, либо, чаще всего, просто игнорируют посты. И что писать в issue — непонятно, нет процедуры получения отладочной информации. Да и смысл туда писать, если не устранены баги, описанные в 2015 году.
- В случае обнаружения явных проблем с панелью — тянут время, отмалчиваясь.
Поэтому, устанавливая VestaCP на свой VPS, знайте: вам никто не поможет. Даже я, потому что давно удалил это ПО на всех серверах, мне доступных, переведя управление на Webinoly.
Авторы работают в отрыве от сообщества, в какой-то своей параллельной Вселенной. Их позиция: максимальная внезапность выхода новых версий, игнорирование просьб пользователей и сообщений о багах.
Например, несмотря на репозиторий на Гитхабе с открытым кодом, о выходе новых версий и о том, что там изменилось, можно узнать только на форуме:
Обратите внимание на даты — разработка версии 0.9.8-18 велась больше года. За это время пользователи, уставшие от того, что панель толком не работает с новыми версиями PHP 7.x, успели по 100500 раз самостоятельно переписать скрипты панели, сделать свои костыли, чтобы актуальный софт работал правильно.
И вдруг аккурат перед новогодними праздниками VestaCP обновилась у тех, кто забыл выключить автообновление. Да, релиз 0.9.8.-18 состоялся не 9 января, как можно судить по форуму, а 29 декабря 2017-го! Не могу представить, что было в голове у разработчиков, решивших выкатить обновление ПО, от которого зависит работа сайтов, во время новогодних отпусков. Тогда-то я и заподозрил, что авторы живут в альтернативной реальности, где новогодних праздников не существует. Естественно, многое сломалось, были багфиксы, борьба с глюками и испорченные выходные, в том числе у меня. Как человеку, написавшему о настройке VestaCP, мне писали десятки людей, отчаявшиеся получить хоть какой-то ответ на официальном форуме. Некоторые просили помочь, другие требовали, третьи угрожали непонятно зачем. В целом истерия была весьма значительной.
С тех пор (декабрь 2017-го) выходят только багфиксы и обновления, непонятно что изменяющие. На гитхабе в репозитории автора некоторые релизы вовсе без описаний, других нет (хотя на форуме о них упоминается).
5 Проблема коммуникации
Обратная связь разработчиков с пользователями, когда дело касается багов, практически никакая. Это довольно странно, учитывая, что авторы получают прибыль за счёт продажи платных плагинов к панели и пакетов поддержки.
О существовании проблемы коммуникации стало известно многим, когда 8 апреля 2018 года была обнародована новость о баге в VestaCP, позволяющем злоумышленникам выполнить команды с наивысшими правами под пользователем root. Крупному облачному хостингу DigitalOcean даже пришлось временно заблокировать порт 8083, чтобы остановить заражение серверов своих клиентов. Т.е. отключить доступ к Весте.
Судя по всему, уязвимость эксплуатировали уже на протяжении месяца, просто 7-8 апреля масштабы приняли гигантский размах и история получила огласку на IT-шных сайтах. О том, что злоумышленники давно нацелились на взлом Весты, указывает одно из сообщений пользователя на официальном форуме панели управления сервером:
На сайте нет раздела новостей, поэтому оповещения о проблеме со стороны разработчиков не было. Общение проходило на официальном форуме, для актуальных новостей приходилось искать сообщения от модераторов среди десятков постов возмущённых и расстроенных пользователей.
Вначале разработчики не смогли разобраться в причине взлома и за пару дней переписали возможную уязвимую функцию проверки пароля. Хорошо хоть честно признали, что уверенности в устранении уязвимости нет, просто о взломе новых версий никто не сообщил. Тут, правда, было и остаётся одно «но»: на Github не у всех аккаунты есть, чтобы issue заводить, а для регистрации на форуме требуется пройти весьма странную капчу, задающую весьма сложные для новичков вопросы:
Либо просто выглядящими издевательски для людей с нарушенным восприятием цвета:
Причём в случае неверного ответа капча исчезает и нужно полностью обновить страницу, потеряв введённые в другие поля данные.
Поэтому быть уверенными в том, что взломы прекратились, они никак не могли. До них слишком сложно достучаться.
Если вы думаете, что я сгущаю краски, что разработчики не обязаны были общаться с сообществом пользователей их творения, расскажу продолжение истории: один из модераторов (разработчиков?) под ником skid 17 октября 2018 года опубликовал на форуме сообщение, где рассказал, что инфраструктура Весты была взломана, и посоветовал скорее обновиться до свежей версии панели. Выяснилось, что с 31 мая по 13 июня установочный скрипт VestaCP был модифицирован злоумышленниками. Подробный разбор можно почитать здесь (на английском).
Каждый день, когда авторы панели управления знали о взломе и не сообщали пользователям всеми возможными средствами, можно считать гвоздями в крышку гроба для доверия. Игнорирование того факта, что о проблемах, как и успехах, нужно сообщать, окончательно подорвало позитивное расположение к этому, в общем-то, неплохому программному продукту.
Какие изменения в VestaCP будут дальше — непонятно. Если разработчики, участвующие в проекте, окончательно его забросят, если сервера с VestaCP снова взломают, а на форуме никто не ответит — это будет, безусловно, печальным событием. Такое случается.
Обновление от 3.05.2020
Увидел недавно в комментарии на Хабре:
«Уже больше месяца авторы не закрывают 0day, так как автор пропал, я думаю стоит вынести эту информацию в статью.
github.com/serghey-rodin/vesta/issues/1984«
В свете данного события VestaCP нет никакого резона устанавливать: автор пропал, исправление уязвимости в репозиторий, используемый для обновления панели, никто кроме него добавить не может.
6 Альтернативы VestaCP
Полноценных альтернатив, кроме форка HestiaCP, не осталось. Вот чтоб были красивые странички с кнопками, система статистики, резервирование и DNS сервер. Наступило время, когда выгоднее написать своё решение, чем ковыряться с чужим. Возможно, где-то на Github растёт проект, который станет образцом для подражания и назидания всем панелям, но в данный момент ситуация с бесплатными панелями складывается несколько… пессимистично.
BrainyCP, довольно удобная внешне, похоже, заброшена авторами. Вы только поглядите, во что превратился их официальный форум:
Если авторы не могут разобраться со спамом на собственном форуме, могут ли они своевременно исправлять баги основного продукта?
Обновление: спустя год после написания данной статьи зашёл на форум и обнаружил, что со спамом разобрались. Однако появилось как-то много сообщений о проблемах:
Также я не нашёл истории изменений, поэтому судить о том, что авторы наконец-то взялись за улучшение функций продукта, нельзя. Напишите, пожалуйста, в комментарии, если у вас есть опыт использования этой панели. Что-то мне подсказывает, что проект всё ещё в спячке.
Virtualmin, модуль для панели Webmin, вроде как развивается, но это не самый удобная панель. IMHO, проще вручную создавать виртуальные хосты.
cPanel — продукт, подходящий больше для организации хостингов, чем для управления сервером. К тому же cPanel платный и для взаимодействия с Nginx нужно долго и тщательно настраивать.
Plesk — платная платформа для веб-хостинга, слишком дорогая замена для Весты.
ISPmanager — спорное и дорогое решение, особенно в свете статей вроде «Мошенничество ISPmanager или просто хотим ваших денег». Я сам неоднократно сталкивался со страннейшими багами этой панели.
Картина получается безрадостная. В продакшне VestaCP использовать, по моему мнению, категорически нельзя, для начинающих пользователей она тоже не подходит — слишком уж «вещь в себе» и нет качественной обратной связи с разработчиками. Можно пользоваться скриптами типа Webinoly и надеяться, что кто-нибудь создаст достойную панель управления: бесплатную, с открытым исходным кодом и понятную новичкам. Правда, есть форк панели, о ней ниже — для кого-то, полагаю, это будет спасением.
7 HestiaCP
Домашняя страница: https://github.com/hestiacp/hestiacp
В комментариях и личных сообщениях меня неоднократно спрашивали о данном ПО. Насколько могу судить, это форк (модификация) панели от стороннего автора. Главное преимущество HestiaCP — её автор никуда не пропал, работает над ней, уязвимость оригинальной панели устранена.
Если вам не хочется терять опыт использования Весты, то переход на данную панель — разумный шаг. Есть информация, что можно перенести настройки из VestaCP в HestiaCP. Так это или не так, какие могут быть подводные камни — к сожалению, не подскажу, потому что не пользуюсь ею.