Что скрывается за VestaCP

uf2jdl2msjxpa1c27mzktjid8lu.jpeg

Вряд ли сейчас кому-то может прийти в голову мысль написать свою панель управления сервером: интернет давно прикипел к ISP, cPanel, Plesk и десятку их аналогов. Все «взрослые» панели умеют примерно одно и то же, различаясь лишь интерфейсом, уровнем поддержки и специфическим функционалом. Но 13 лет назад всё было иначе:

Сейчас уже сложно сказать, когда именно я начал работу над вестой. Если считать первые скрипты добавления виртуальных хостов в апач, то это был 2007 год. Получается 5 лет тому назад. Помню тогда на работе состоялся примерно такой диалог:
— Ты решил написать свою панель управления?
— Ага, ведь cPanel это ужас, Plesk хоть и лучше, но сильно дорогой. Да и вообще у меня уже почти все готово
— Хм… для того чтобы просто приблизиться к сPanel тебе потребуется минимум 2 года

— skid, разработчик Весты

Что выросло из этой идеи спустя столько лет? Неплохой продукт, популярный среди хостеров (на сайте упоминается 25000 установок в месяц по миру), с активным комьюнити и с большим списком индивидуальных фич. Но как и в любом другом продукте, в процессе использования Весты вылезает довольно много нюансов, незаметных со стороны. Далее мы разберём принципы работы панели, её косяки и сильные стороны.

Философия


skid в той же статье описывал свою мотивацию так:

… обычно панели управления пишутся программистами для вебмастеров, а системные администраторы остаются без внимания. Ну если и участвуют в процессе проектирования, то очевидно, весьма посредственно. В то же самое время, именно системные администраторы работают с панелями управления больше всего. Это был серьезный мотив для старта, но еще большим мотивов послужило отсутсвие GPL аналогов решениям типа Plesk, cPanel и DirectAdmin.


Изначально это так и работало: был набор скриптов под апач, которые упрощали серверное администрирование, потом появился веб-интерфейс для тех, кому неудобно конфигурировать всё из терминала. Но затем, с развитием интерфейса, фокус сместился на менее подкованных пользователей, UX менялся под принцип «решаем задачу в один клик», а сложная конфигурация должна была остаться как придаток для админов-красноглазиков. В итоге это привело Весту к противоречивому настоящему: в идеальном сценарии она крайне легко устанавливается и используется, не требуя вмешательства в свои внутренние системы. Но как только что-то ломается, или не дай бог, требует новых интеграций, всё удобство начинает стремительно осыпаться. Панель не всегда адекватно работает с разными версиями модулей, требует кропотливой доработки и раскуривания конфигов в любой нестандартной ситуации. А форум (глобальный в этом плане лучше русскоязычного) может содержать больше вредных советов, чем полезных.
С другой стороны, при нормальном использовании Веста действительно удобна: тестовый сайт я сумел поднять за минут 15, при этом в наличии «из коробки» много нетривиальных плюшек, доступных по клику.

Установка


Веста может установиться и нормально работать даже на самом бюджетном сервере — минимальные требования 512 mb RAM/20 Gb HDD/1 Ghz CPU. В зависимости от количества оперативки, она может отключать некритичные модули при установке. Например, самым прожорливым считается антивирусный набор, он устанавливается, если на сервере есть хотя бы 3 Gb RAM. Разумеется, если вас такой компромисс не устраивает, можно кастомизировать установку, подобрав опции вручную или на сайте.
Кстати, в документации собраны расположения логов для всех сервисов: RHEL/CentOS, Debian/Ubuntu.

После установки можно не возвращаться к SSH, вся дальнейшая настройка доступна в веб-интерфейсе (8083 порт).

Шаблоны


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

Кластер DNS


Работает из коробки, в две команды и пару строчек в конфиге можно настроить DNS slave на запасном сервере. Документация

Бэкапы


Они удобные. Отправка по фтп настраивается одной командой:

v-add-backup-ftp-host remote.ftp-host.ltd backup-user p4ssw0rd


После этого бэкапы создаются в один клик в соответствующей вкладке. Локально они тоже сохраняются и доступны для скачивания, само собой.
z-od1t_ltehu3vyx8zepopd0ez8.png

SSL


SSL можно указать вручную, а можно прямо на этапе регистрации домена в Весте отметить галочку «Let’s Encrypt Support» и получить сертификат автоматически, удобно.

Пакеты


Пакеты, известные на форуме как «тарифные планы» позволяют настроить количество доменов, баз данных, задач в кроне, объём трафика, диска и т.д. Это позволяет превращать панель в что-то вроде админки хостинга, устанавливая определенные категории прав и лимитов для разных пользователей.
oczeg1bu4frl0wqd9ts5ruv3fjg.png

Статистика и логи


Их тут много, и они тоже удобные. Панель даёт сводную статистику использования диска/трафика/доменов/крона и всего остального, есть красивые графики ресурсов. А ещё можно смотреть журнал событий и логи access/error, не вылезая из браузера.
7ahjrmn3dvx_qidgzehioypmc9s.png
Логи смотреть полезно, но графики симпатичнее

Управление серверами


Nginx, httpd, почтовые сервера, NS, ftp, сервера БД, файрвол и крон управляются из той же админки, что позволяет не лезть перезапускать нужный сервис из консоли при малейшем изменении в конфиге. Который тоже можно править прямо в браузере в той же вкладке, win!

Шорткаты


Наверное, ни один обзор Весты не обходится без упоминания горячих клавиш. Их преподносят как некую киллер-фичу, переворачивающую наше представление об управлении панельками… стоп, что? Окей, я понимаю что это может быть удобно при работе с файловым менеджером, тем более что там комбинации позаимствованы из Midnight Commander, но в чём их преимущество в управлении самой Вестой, я так и не понял. Панель это не терминал и в ней не зависаешь часами напролёт, взаимодействие как правило ограничивается быстрыми подходами по несколько кликов в разных разделах — заглянуть в лог, поправить конфиг. Управление с клавиатуры как замена 5–10 кликов мышкой для меня довольно избыточно, но смотрится прикольно.
nf9dvetyb2qnloqfrfo0gxezuke.png
Шорткаты панели
afalgegaxcdtmugw_y_v4rjakjw.png
Шорткаты файлового менеджера

Проблемы


Прежде всего надо помнить, что Веста — это GPL продукт, и деньги приносит только за платные модули, интеграции у хостеров и поддержку. Разработчиков, по моим оценкам, от 4 до 11 человек плюс энтузиасты-контрибьюторы, поэтому сравнивать её с крупными проектами вроде ISPManager или Plesk не совсем корректно. Однако, с такой небольшой командой Веста смогла занять приличный кусок рынка «простых» панелей, это здорово и достойно уважения. Теперь можно перейти к минусам.

Поддержка


Формально поддержка осуществляется только платно по приличной цене. Когда админ Весты сталкивается с проблемами, он идёт на официальный форум или создаёт issue. Если повезёт, ему помогут. Если не повезёт (и это не редкость), его топик или issue останется без ответа навеки.

Обновления


Они прилетают редко. Например, за последний год год вышло два обновления: одно с security bugfixes, другое состоит из одной строчки

*** WHATS NEW in 0.9.8–26 ****
Let’s Encrypt HTTP/2 support


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

Совместимость


Ещё одна проблема с внезапными обновлениями — неизвестно, что и где они могут сломать. Цитата из пропитанного болью поста:

… разработка версии 0.9.8–18 велась больше года. За это время пользователи, уставшие от того, что панель толком не работает с новыми версиями PHP 7.x, успели по 100500 раз самостоятельно переписать скрипты панели, сделать свои костыли, чтобы актуальный софт работал правильно.

И вдруг аккурат перед новогодними праздниками VestaCP обновилась у тех, кто забыл выключить автообновление. Да, релиз 0.9.8.-18 состоялся не 9 января, как можно судить по форуму, а 29 декабря 2017-го! Не могу представить, что было в голове у разработчиков, решивших выкатить обновление ПО, от которого зависит работа сайтов, во время новогодних отпусков.


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

Кстати, VDSina давно предлагает шаблон с VestaCP и выбором версии PHP для конкретного домена:

cyljc_samipprcdrdufbt4cqdbu.png

Продвинутые сценарии использования


Ручная модификация панели тоже дело неблагодарное, так как заключается в правках конфигов и скриптов, которые при обновлении благополучно заменятся оригинальными. Некоторые интеграции и плагины можно писать с помощью API, но в целом всё равно получается сложно поддерживать свой код.

Выводы


Веста — это панель для простых задач. Она позволяет быстро публиковать сайты и даёт весь необходимый функционал для их администрирования, и в этом её сильная сторона. Она проста в освоении и отлично подойдёт для небольших проектов, вроде корпоративного сайта или небольшого интернет-магазина, здесь она во многом даёт фору тому же ISP, оставаясь при этом бесплатной. В общем, если вы хотите «просто захостить» без лишнего геморроя, вышеперечисленные проблемы, скорее всего, вас не касаются.

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

И напоследок, Веста — это open source проект с минимумом коммерции с небольшой командой и отличным результатом. Превозмогая трудности, skid с командой прошел путь от дерзкой идеи до популярного, востребованного продукта, и это круто. Попробуйте его, если еще не успели.

wxbb4vwvszimkmyozm3q4b-wpqy.png

© Habrahabr.ru