cockpit-modules: веб-панели для повседневной эксплуатации
Cockpit закрывает базовое администрирование Linux из браузера: сервисы, логи, сеть, аккаунты. Для файервола, fail2ban, cron и Let’s Encrypt штатного набора уже не хватает — либо нет панели, либо она слишком общая.
Группа cockpit-modules — набор отдельных модулей под эти задачи и магазин, через который их ставят на хост. Каждый модуль живёт в своём репозитории; ниже — карта группы, без разбора UI и команд. Про отдельные панели будут отдельные статьи.
Зачем отдельные модули
Cockpit расширяется пакетами в /usr/share/cockpit/ (или в ~/.local/share/cockpit/ для текущего пользователя). Модуль — это manifest.json, HTML и JS, которые вызывают хостовые утилиты через cockpit.spawn.
Группа закрывает типичный домашний или небольшой сервер:
- периметр: UFW и fail2ban;
- расписание: crontab и systemd timers;
- TLS: certbot и сертификат самой панели;
- доставка: магазин модулей из той же GitLab-группы.
Интерфейс на русском, визуально как остальные страницы Cockpit (PatternFly v5). Нужен Cockpit 264+ и права администратора для записи.
Общие правила репозиториев
Модули собраны одинаково, чтобы магазин и установка не расходились:
- исходники в
pkg/<id>/; install.sh— в систему или--user;- релизы тегами
v.M.m.p; - Docker Compose для локальной разработки (
localhost:9090); - лицензия MIT.
Команды на хосте идут массивом аргументов, без shell-строк. Ввод валидируется на клиенте. Без прав администратора Cockpit панель остаётся read-only.
Попасть в каталог магазина можно только из группы cockpit-modules. Каталог не произвольный GitLab, а явно доверенный набор проектов.
Магазин модулей
cockpit-modules-store — точка входа. В Tools появляется пункт Магазин модулей: список проектов группы, теги, статус (доступен / установлен / есть обновление), установка архива релиза в /usr/share/cockpit/ и удаление пользовательских модулей. Встроенные страницы Cockpit магазин не трогает.
Остальные панели можно ставить и вручную через install.sh, но магазин снимает ручной clone/copy по каждому репозиторию.
Быстрая установка самого магазина:
Панели в группе
| Модуль | Задача |
|---|---|
| UFW | пакет ufw, статус, политики, правила allow/deny/reject/limit |
| Fail2ban | пакет и сервис, jail’ы, ban/unban IP |
| Cron | crontab пользователей, /etc/crontab и /etc/cron.d/, systemd timers |
| CertManager | Let’s Encrypt / certbot, TLS панели Cockpit, renew |
UFW — полный цикл Uncomplicated Firewall без ufw status numbered в SSH: пакет через APT/DNF/YUM/Pacman, включение, политики по умолчанию, список правил и добавление по порту, протоколу и источнику. Разбор панели: cockpit-ufw-module.
Fail2ban — соседняя панель по периметру: установка демона, jail’ы, список заблокированных адресов, ban и unban в выбранном jail или глобально.
Cron — планировщик, который на сервере обычно правят в nano. Пользовательские crontab, системные файлы и таймеры systemd в одном месте. Редактирование unit-файлов таймеров не входит в задачу модуля.
CertManager — сертификаты для сайтов и для самой панели Cockpit. HTTP-01 и DNS-01, привязка lineage к панели, загрузка своего crt+key, автообновление через certbot.timer.
Как это стыкуется
На чистом хосте логичный порядок такой: Cockpit → магазин → UFW и fail2ban → CertManager для HTTPS панели → при необходимости Cron. Модули независимы: cron не зависит от certbot.
Исходники, issues и релизы — в gitlab.com/cockpit-modules. Первая панель отдельно: UFW.