- Python 52.9%
- JavaScript 24.3%
- PHP 15%
- CSS 6.4%
- Shell 1.4%
| daemon/server_dashboard | ||
| deploy-examples | ||
| docs | ||
| scripts | ||
| tests | ||
| web | ||
| .gitignore | ||
| CHANGELOG.md | ||
| config.example.toml | ||
| LICENSE | ||
| README.md | ||
| requirements.txt | ||
| secrets.example.ini | ||
| SECURITY.md | ||
| THIRD_PARTY.md | ||
Server Dashboard
Server Dashboard — веб-панель для контроля и базового администрирования Linux-сервера во внутренней сети. Она собирает в одном месте состояние хоста, служб systemd, контейнеров Docker, Fail2Ban, дисков, SMART, расписания и локальной документации. Небольшой набор административных действий выполняется через отдельную привилегированную службу и разрешается только явно настроенным объектам.
Текущая версия 1.0.1 — исправляющий выпуск интерфейса поверх первого стабильного выпуска 1.0.0.
Возможности
- загрузка процессора, температура, память, средняя нагрузка и время работы сервера;
- контроль заполнения файловых систем;
- состояние выбранных служб systemd и разрешённый перезапуск отдельных служб;
- состояние контейнеров Docker, результат их проверки состояния и разрешённый перезапуск отдельных контейнеров;
- состояние Fail2Ban, список активных блокировок и снятие блокировки в разрешённых jail;
- SMART для ATA/NVMe-дисков;
- состояние выбранных timer-юнитов systemd;
- просмотр локальной документации в Markdown без возможности редактирования;
- журнал входов и административных действий;
- перезагрузка и выключение сервера с подтверждением;
- отключаемые страницы и компоненты;
- внешние модули, которые можно добавлять без изменения исходного кода Server Dashboard.
Как устроено приложение
Веб-часть работает от отдельного непривилегированного пользователя. Действия, которым нужны права root, передаются отдельной службе через Unix-сокет. В конфигурации задаются списки объектов, которыми разрешено управлять: например, контейнеры Docker для перезапуска или jail Fail2Ban для снятия блокировки.
Функции, характерные только для конкретной инфраструктуры, не нужно добавлять в ядро проекта. Для них предусмотрены внешние модули. Они могут создать собственную страницу или встроить блок в «Обзор» и «Систему».
Подробнее: архитектура.
Требования
Базовая установка рассчитана на Linux с systemd. Необходимы:
- Python 3.11 или новее;
markdown-it-py3.x;- PHP 8.2 или новее с PHP-FPM;
- Nginx;
- systemd.
Docker, Fail2Ban и smartmontools нужны только при включении соответствующих функций.
Быстрый старт
- Скопируйте репозиторий в
/opt/server-dashboard. - Создайте
/etc/server-dashboard/config.tomlна основеconfig.example.tomlи отредактируйте его черезmcedit. - Создайте пользователя веб-части и группы, как описано в инструкции по установке.
- Задайте пароль:
/opt/server-dashboard/scripts/dashboard-set-password admin
- Установите примеры конфигурации из
deploy-examples/для systemd, PHP-FPM, tmpfiles, logrotate и Nginx. - Проверьте конфигурацию:
/opt/server-dashboard/scripts/check-config.py
- Запустите службу Server Dashboard и откройте веб-интерфейс только из разрешённой внутренней сети.
Полная инструкция: docs/INSTALLATION.md.
Документация
- Установка
- Настройка
- Эксплуатация и обновление
- Архитектура
- Разработка собственных модулей
- Модель безопасности
Модули
Встроенные страницы включаются в секции [modules], а части страницы «Система» — в [system]. Внешние модули находятся отдельно, обычно в /opt/server-dashboard-extensions/, поэтому обновление ядра не должно затрагивать их код и настройки.
Подробное руководство с примерами серверной и браузерной части: docs/MODULE-DEVELOPMENT.md.
Безопасность
Server Dashboard предназначен для внутренней административной сети. Не публикуйте веб-интерфейс напрямую в Интернет. Для недоверенной или маршрутизируемой сети используйте HTTPS и дополнительное ограничение доступа на сетевом уровне.
Порядок сообщения об уязвимости описан в SECURITY.md.
Лицензия
Проект распространяется по лицензии MIT. Код можно использовать, изменять, копировать и распространять на условиях лицензии. Полный текст приведён в LICENSE.
Программное обеспечение предоставляется «как есть», без каких-либо гарантий. Автор не несёт ответственности за прямые или косвенные последствия его использования.
Автор
Разработка: Виталий Егоров
Telegram: @egorowitaliy
E-mail: egorowitaliy@gmail.com