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

Для управления веб-сервером у меня используются Webmin и Virtualmin. Они работают вместе, но отвечают за разные задачи. Эта разница становится понятнее на примере обычного обслуживания сайтов.

Webmin — управление сервером

Webmin предоставляет веб-интерфейс для администрирования Linux: работы с пользователями, службами, пакетами и системными настройками. Набор доступных функций зависит от установленных модулей и прав учётной записи. Это основная роль панели, описанная в документации Webmin.

Если нужно посмотреть состояние службы или разобраться с настройками самого сервера, это уровень Webmin.

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

Virtualmin — управление сайтами

Virtualmin добавляет к Webmin управление размещёнными проектами. Здесь сайт рассматривается вместе со своим доменом, владельцем, каталогами, базами данных и настройками PHP.

В интерфейсе для такого проекта используется название Virtual Server. Его легко спутать с виртуальной машиной, но это разные вещи. В нашем случае несколько таких проектов размещены внутри одной ВМ. Создание сайта в Virtualmin не означает создание новой машины в Proxmox.

Такое представление удобно: настройки проекта собраны вокруг его имени, а не разбросаны только по конфигурационным файлам сервера.

Независимым сайтам — отдельные владельцы

Для независимых сайтов мы выбрали отдельные Virtual Server верхнего уровня. У каждого проекта — собственный Unix-пользователь, группа, каталоги, учётная запись базы данных и PHP-FPM-пул.

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

PHP-FPM запускает PHP-код проекта в отдельном пуле процессов. Такой способ разделения приложений рекомендует и документация Virtualmin.

Но отдельный пользователь не превращает сайт в отдельную ВМ. Веб-сервер, сервер баз данных и ядро операционной системы остаются общими. Поэтому разделение прав полезно, но не заменяет обновления и контроль состояния всей машины.

Есть и другой случай: несколько доменных имён относятся к одному проекту. Для них не обязательно создавать независимые окружения. У нас такие имена настроены как алиасы одного сайта.

Шаблон вместо настройки с нуля

Для новых сайтов подготовили общий шаблон: версия PHP, число процессов, ограничение памяти, права каталогов и дисковая квота.

Это уменьшает количество ручных действий. Новый проект получает заранее выбранные параметры, а затем при необходимости его настройки меняются отдельно.

В нашем шаблоне используются PHP 8.4, четыре FPM-процесса и лимит памяти 256 МБ на PHP-запрос. Для сайта задана квота 5 ГиБ, предусмотрены собственные каталоги временных файлов и сессий.

Это параметры нашей установки. Более тяжёлому приложению могут понадобиться другие ограничения. Кроме того, дисковая квота ограничивает занимаемое место, но сама по себе не ограничивает всю нагрузку сайта на процессор.

Как открывается панель

Для панели настроили локальное DNS-имя и доверенный сертификат HTTPS. Теперь не приходится искать внутренний IP или проходить через предупреждение браузера.

Адрес в обезличенном примере выглядит так:

https://panel.example.net:10000/

Порт здесь важен: в нашей конфигурации панель продолжает работать на 10000. Перенос на стандартный HTTPS-порт для неё не делали.

Доступ по имени проверили из домашней сети: открывается форма входа, проверка сертификата проходит успешно. Сертификат выпустили через DNS-01, настроили автоматическое продление и перезапуск службы после его применения. Полный цикл продления по сроку ещё предстоит подтвердить.

Доступ через домашний VPN сохранён, но в этой конкретной проверке его отдельно не тестировали. Публичный административный доступ ради нового имени и сертификата не расширяли.

Что это даёт в повседневной работе

Основная польза этих панелей для меня — порядок. Webmin помогает управлять самой системой, Virtualmin — видеть сайты как отдельные проекты со своими ресурсами и владельцами.

Когда появляется новый сайт, есть понятное место для его настроек. Когда возникает проблема, проще определить, касается она одного приложения или общей службы сервера.

Панели не избавляют от необходимости разбираться в Linux. Зато позволяют меньше времени тратить на поиск настроек и больше — на проверку результата.