Перейти к содержимому

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 по каждому репозиторию.

Быстрая установка самого магазина:

curl -fsSL https://gitlab.com/cockpit-modules/cockpit-modules-store/-/raw/master/install.sh | sudo bash

Панели в группе

МодульЗадача
UFWпакет ufw, статус, политики, правила allow/deny/reject/limit
Fail2banпакет и сервис, jail’ы, ban/unban IP
Croncrontab пользователей, /etc/crontab и /etc/cron.d/, systemd timers
CertManagerLet’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.