Архив рассылок сообщества снова открыт. Читать письма 2003-2009
Главная/Блог/Инфраструктура
Инфраструктура14 мин чтенияНиколай Ковалёв

Веб-панели управления Linux-сервером: Cockpit, Webmin, HestiaCP и другие

Панели администрирования и хостинг-панели: возможности, порты, лицензии, алгоритм выбора и защита после установки.

Ноутбук с графиками состояния сервера в браузере на столе администратора, на фоне серверная стойка

Коротко: веб-панели для Linux делятся на два класса. Панели администрирования (Cockpit, Webmin) управляют самой системой: службами, дисками, сетью, пользователями. Хостинг-панели (HestiaCP, FASTPANEL, ISPmanager, CloudPanel) разворачивают стек для сайтов: веб-сервер, PHP, базы, почту, DNS. Для одного сервера без сайтов хватит Cockpit, для хостинга нескольких сайтов — HestiaCP или FASTPANEL. Порт любой панели не должен быть открыт всему интернету.

Вопрос «какую панель поставить» обычно возникает в двух ситуациях. Либо сервер передают человеку, которому неудобно жить в терминале: разработчику, менеджеру, заказчику. Либо администратор устал руками заводить виртуальные хосты, сертификаты и почтовые ящики для десятка сайтов. Это разные задачи, и панель, хорошая для одной, во второй будет мешать.

Заодно панели — наглядный пример того, как интерфейс решает судьбу инструмента. Функционально Webmin умеет больше, чем Cockpit, но новичкам чаще советуют Cockpit: у него продуманная навигация и единая дизайн-система PatternFly, а у Webmin — сотни модулей со своей логикой экранов. Если вы делаете собственную панель — кабинет для клиентов хостинга или внутренний пульт поддержки, — сценарии и экраны лучше сразу проектировать как продукт, а не «как получится у бэкендера»; для этого есть команды, которые проектируют интерфейсы админ-панелей. Ниже — разбор готовых решений, чтобы понять, нужна ли своя панель вообще.

Что такое веб-панель управления сервером и чем она не является?

Веб-панель — это служба на сервере, которая слушает отдельный порт и через браузер выполняет те же действия, что вы делали бы в терминале: systemctl, правку конфигов, useradd, установку пакетов. Никакой магии в ней нет: панель работает с теми же файлами и демонами, просто с формой вместо командной строки.

Отсюда три следствия, которые стоит держать в голове:

  • Панель работает с правами root. Уязвимость в ней равна компрометации всего сервера. Это главный аргумент за осторожность, а не против панелей как таковых.
  • Хостинг-панель считает конфигурацию своей. HestiaCP или ISPmanager генерируют конфиги nginx, PHP-FPM и почты из шаблонов. Ручная правка файла может быть перезаписана при следующем изменении через интерфейс.
  • Панель не заменяет понимания системы. Когда сайт падает, ошибку всё равно ищут в journalctl и логах веб-сервера. Основы стоит знать — хотя бы на уровне systemd на практике.

Чем панель администрирования отличается от хостинг-панели?

Это главный критерий выбора, и большинство ошибок происходит именно здесь: человек ставит хостинг-панель на сервер, где крутится одно приложение в Docker, или пытается развернуть сайты через Cockpit, который этого не умеет.

КритерийПанель администрированияХостинг-панель
ПримерыCockpit, WebminHestiaCP, FASTPANEL, ISPmanager, CloudPanel, Virtualmin
Что управляетСистема: службы, диски, сеть, пользователи, обновленияСайты: домены, вебсервер, PHP, базы, почта, DNS, SSL
УстановкаНа любой сервер, в том числе рабочийТолько на чистую систему
Ручные правки конфиговСовместимыМогут быть перезаписаны шаблонами
УдалениеПакетным менеджером, без последствийФактически только переустановкой системы

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

Cockpit: системная панель для одного или нескольких серверов

Cockpit развивает Red Hat, в RHEL, Fedora Server, Rocky и AlmaLinux он есть в стандартных репозиториях, а в Debian и Ubuntu ставится одной командой:

# Debian / Ubuntu
sudo apt install cockpit
# RHEL / Rocky / Alma / Fedora
sudo dnf install cockpit
sudo systemctl enable --now cockpit.socket

Панель открывается на порту 9090, вход — обычной учётной записью системы с правами sudo. Важная деталь архитектуры: Cockpit запускается через активацию сокетом systemd. Пока к нему никто не подключился, процесс не висит в памяти, а после выхода завершается. Своей базы пользователей и своих конфигов у него нет — он вызывает системные API, поэтому то, что вы сделали в терминале, сразу видно в интерфейсе, и наоборот.

Что умеет: графики нагрузки, журнал systemd с фильтрами, управление службами и таймерами, разметка дисков и LVM, сетевые интерфейсы и bonding, файрвол (firewalld), учётные записи и SSH-ключи, обновления, встроенный терминал. Через дополнительные пакеты — виртуальные машины (cockpit-machines), контейнеры Podman (cockpit-podman), файловый менеджер. Соседние серверы добавляются по SSH, и ими можно управлять из одного окна.

Чего не умеет: сайтов, доменов, почты, DNS-зон, баз данных. Это не хостинг-панель и не пытается ей быть. Подробности и список модулей — в официальном руководстве Cockpit.

Первые 15 минут с Cockpit: пошагово

Чтобы панель приносила пользу, а не просто висела на порту, после установки стоит пройти короткий маршрут.

  1. Закройте порт до первого входа. Если сервер в интернете, сначала откройте Cockpit через туннель (ssh -L 9090:localhost:9090 admin@server) и только потом решайте, нужен ли доступ снаружи. Подробнее — в разделе о защите ниже.
  2. Войдите обычным пользователем с sudo, а не root. В Debian и Ubuntu вход под root в Cockpit по умолчанию запрещён файлом /etc/cockpit/disallowed-users — и это правильно. Административные действия включаются переключателем «Административный доступ» в шапке.
  3. Откройте «Журналы» и отфильтруйте по приоритету «Ошибка». Часто именно тут обнаруживаются падающие службы и забытые таймеры, о которых никто не знал.
  4. Проверьте «Службы». Вкладка показывает все юниты, таймеры и сокеты systemd с состоянием. Неактивные, но включённые в автозагрузку службы — повод разобраться, нужны ли они.
  5. Посмотрите «Хранилище». Заполненность разделов, SMART-статус дисков, RAID и LVM. Здесь удобно расширить логический том, не вспоминая порядок команд lvextend и resize2fs.
  6. Включите автоматические обновления безопасности на вкладке «Обновления программного обеспечения». Cockpit настроит dnf-automatic или unattended-upgrades в зависимости от дистрибутива.
  7. Добавьте остальные серверы. В меню выбора хоста укажите адрес соседней машины: Cockpit подключится к ней по SSH, ставить на неё панель и открывать порт 9090 не нужно — достаточно пакета cockpit-bridge.

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

Webmin: швейцарский нож с сотнями модулей

Webmin существует с конца 1990-х и написан на Perl. В отличие от Cockpit, это постоянно работающий демон (собственный веб-сервер miniserv.pl) на порту 10000. Ставится из официального репозитория проекта по инструкции на webmin.com.

Сильная сторона Webmin — модули для правки конфигураций конкретных демонов: BIND, Postfix, Dovecot, Samba, Squid, Apache, MySQL, cron, квоты. Для старого сервера, где всё это уже настроено руками, это удобнее любой хостинг-панели: Webmin не навязывает шаблоны, а редактирует существующие файлы.

Слабые стороны — перегруженный интерфейс и история безопасности. В 2019 году выяснилось, что в официальные сборки 1.890–1.920 через скомпрометированную инфраструктуру сборки попал бэкдор, дававший удалённое выполнение команд без пароля (CVE-2019-15107). Его давно закрыли, но вывод универсален: панель с правами root на открытом порту — первая цель сканеров.

На базе Webmin сделан Virtualmin — полноценная хостинг-панель с доменами, почтой и базами. Если нужен хостинг, а не администрирование, смотрите сразу его, а не голый Webmin.

HestiaCP, FASTPANEL, ISPmanager и CloudPanel: какую хостинг-панель взять?

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

HestiaCP

Бесплатная панель под GPL, форк VestaCP, который сообщество начало после того, как развитие Vesta застопорилось (а в 2018 году её установщик был скомпрометирован и раздавал троян). Поддерживает Debian и Ubuntu, порт по умолчанию 8083. Внутри: nginx (отдельно или перед Apache), несколько версий PHP-FPM, MariaDB/MySQL и PostgreSQL, почта на Exim и Dovecot с антиспамом, DNS на BIND, Let's Encrypt, бэкапы пользователей. Хороший выбор для своего VPS с несколькими сайтами и почтой. Документация — на hestiacp.com.

FASTPANEL

Бесплатная панель российской разработки, работает на Debian, Ubuntu, AlmaLinux и Rocky. Интерфейс заметно дружелюбнее остальных, есть русская локализация из коробки, несколько версий PHP, базы, сертификаты, бэкапы, файловый менеджер. Порт по умолчанию — 8888. Подойдёт, если панелью будет пользоваться не администратор, а владелец сайтов. Почтовая часть скромнее, чем у HestiaCP.

ISPmanager

Коммерческая панель ISPsystem, стандарт де-факто у российских хостеров — многие продают VPS с ней в комплекте. Порт 1500. Плюсы: зрелость, многопользовательский режим с правами для реселлеров, интеграции с биллингом, наличие в реестре российского ПО (важно для госзаказчиков). Минус — платная лицензия, которая для одного личного сервера редко оправдана.

CloudPanel

Бесплатная панель для Debian и Ubuntu, заточенная под приложения, а не под классический хостинг: PHP-проекты, Node.js, Python, статические сайты, reverse proxy. Порт 8443. Почты и DNS нет — и это скорее плюс, если вы держите почту у внешнего провайдера. Нравится разработчикам за минимализм.

Отдельно об aaPanel: это международная версия китайской BT Panel. Функций много, но часть кода закрыта, а в китайской версии в 2022 году находили массово эксплуатируемую уязвимость. Для серверов с данными клиентов мы бы её не рекомендовали.

Сравнительная таблица панелей

ПанельТипЦенаПортПочта/DNSКому
CockpitАдминистрированиеБесплатно9090НетСерверы приложений, ВМ, контейнеры
WebminАдминистрированиеБесплатно10000Правка конфиговСтарые серверы с ручной настройкой
HestiaCPХостингБесплатно8083ДаVPS с сайтами и почтой
FASTPANELХостингБесплатно8888ЧастичноВладельцы сайтов без опыта админа
ISPmanagerХостингПлатно1500ДаХостеры, реселлеры, компании
CloudPanelХостинг приложенийБесплатно8443НетРазработчики PHP/Node/Python

Порты указаны по умолчанию на момент написания; после установки сверяйтесь с выводом установщика.

Как выбрать панель: пошаговый алгоритм

  1. Определите, что будет жить на сервере. Одно приложение, база или контейнеры — панель администрирования. Сайты клиентов с доменами и почтой — хостинг-панель.
  2. Решите, кто будет нажимать кнопки. Администратору подойдёт и Webmin. Владельцу сайтов, который боится терминала, — FASTPANEL или HestiaCP с понятным интерфейсом.
  3. Нужна ли почта на этом сервере? Если нет — CloudPanel или FASTPANEL, меньше движущихся частей. Если да — HestiaCP, ISPmanager или Virtualmin.
  4. Проверьте совместимость с дистрибутивом. Хостинг-панели поддерживают ограниченный список версий; на свежем релизе дистрибутива установщик может отказаться работать.
  5. Сервер чистый? Хостинг-панель ставится только на свежую систему. Если на сервере уже что-то настроено — поднимите новый, перенесите сайты и не пытайтесь «доставить» панель поверх.
  6. Одна панель на сервер. Две панели, управляющие одним nginx или одной почтой, перезаписывают конфиги друг друга. Исключение — Cockpit рядом с хостинг-панелью только для мониторинга, без правки служб.

Как защитить панель после установки?

Самая частая ошибка — оставить порт панели открытым всему интернету. Боты сканируют порты 8083, 8888, 9090 и 10000 постоянно, и любой свежий эксплойт для панели применяется массово в первые же дни. Минимальный набор мер:

  • Закройте порт файрволом и разрешите доступ только со своих адресов или из VPN. Пример для ufw: sudo ufw allow from 203.0.113.10 to any port 9090 proto tcp.
  • Или ходите через SSH-туннель — тогда порт вообще не нужен снаружи: ssh -L 9090:localhost:9090 admin@server, затем открыть https://localhost:9090 в браузере. Вход по ключам вместо паролей разобран в статье о SSH-ключах.
  • Включите двухфакторную аутентификацию, если панель её поддерживает (Webmin, HestiaCP, ISPmanager — поддерживают).
  • Поставьте нормальный сертификат вместо самоподписанного, чтобы не приучать себя кликать «всё равно продолжить».
  • Обновляйте панель так же регулярно, как систему, и подпишитесь на её анонсы безопасности.
  • Добавьте fail2ban на логи входа в панель и мониторинг доступности — см. базовую защиту Linux-сервера и мониторинг на Prometheus и Grafana.

Когда панель не нужна вовсе?

Если инфраструктура описана кодом — Ansible, Terraform, Docker Compose, Kubernetes — панель становится источником расхождений: кто-то поменял настройку кнопкой, и следующий прогон плейбука её откатит или, хуже, не откатит, и сервер начнёт отличаться от описания. Для таких проектов лучше вложиться в автоматизацию и наблюдаемость, а для разовых действий оставить Cockpit в режиме «посмотреть». Про подход «инфраструктура как код» на практике — в статье про первые playbook в Ansible.

И наоборот: собственная панель имеет смысл, когда вы продаёте сервис и вашим клиентам нужен кабинет с понятными им действиями — «добавить домен», «восстановить бэкап», «посмотреть счёт». Готовые хостинг-панели решают это для типового хостинга, но не для нестандартного продукта.

Чеклист перед тем, как поставить панель

  1. Понятно, какой класс панели нужен: администрирование или хостинг.
  2. Дистрибутив и его версия есть в списке поддерживаемых.
  3. Для хостинг-панели сервер чистый, есть снимок или бэкап до установки.
  4. Порт панели закрыт снаружи, доступ — по белому списку, VPN или SSH-туннелю.
  5. Включены 2FA и нормальный сертификат.
  6. Обновления панели — в регламенте вместе с обновлениями системы.
  7. На сервере одна панель, управляющая службами.

Частые вопросы

Какая панель управления Linux-сервером самая лёгкая?

Cockpit: он не держит постоянного процесса и запускается только при подключении через сокет systemd. Из хостинг-панелей по ресурсам скромнее всех CloudPanel и HestiaCP без почтового стека. Для VPS с 1 ГБ памяти хостинг-панель с почтой и антиспамом будет тяжеловата.

Можно ли поставить Cockpit и HestiaCP на один сервер?

Можно, если использовать Cockpit только для мониторинга, журналов и обновлений. Менять через него службы, которыми управляет HestiaCP (nginx, PHP-FPM, почту), не стоит: хостинг-панель перезапишет конфигурацию из своих шаблонов.

Безопасно ли пользоваться веб-панелью на продакшене?

Да, если порт панели не открыт в интернет, включена двухфакторная аутентификация и панель регулярно обновляется. Опасна не сама панель, а открытый порт со службой, работающей от root. Через SSH-туннель или VPN риск минимален.

Чем заменить cPanel на своём VPS бесплатно?

Ближе всего по функциям HestiaCP и Virtualmin: домены, почта, DNS, базы, сертификаты, бэкапы. Если почта не нужна — FASTPANEL или CloudPanel. Миграцию с cPanel проще делать на новый чистый сервер, перенося сайты по одному.

Как удалить хостинг-панель с сервера?

Корректного удаления у большинства хостинг-панелей нет: они меняют конфигурацию десятков пакетов. Надёжный путь — поднять новый сервер, перенести сайты и базы, переключить DNS и выключить старый. Cockpit и Webmin удаляются обычным пакетным менеджером.

Нужна ли панель, если я умею работать в терминале?

Для одного-двух серверов — не обязательно. Но Cockpit полезен даже опытному администратору: графики нагрузки, журнал с фильтрами и разметка дисков в браузере экономят время, а сам он почти не потребляет ресурсов.

Вернуться в блог