# cockpit-modules: веб-панели для повседневной эксплуатации

Индекс LLMS: [llms.txt](/llms.txt)

---

[Cockpit](https://cockpit-project.org/) закрывает базовое администрирование Linux из браузера: сервисы, логи, сеть, аккаунты. Для файервола, fail2ban, cron и Let's Encrypt штатного набора уже не хватает — либо нет панели, либо она слишком общая.

Группа [cockpit-modules](https://gitlab.com/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](https://gitlab.com/cockpit-modules/cockpit-modules-store) — точка входа. В **Tools** появляется пункт **Магазин модулей**: список проектов группы, теги, статус (доступен / установлен / есть обновление), установка архива релиза в `/usr/share/cockpit/` и удаление пользовательских модулей. Встроенные страницы Cockpit магазин не трогает.

Остальные панели можно ставить и вручную через `install.sh`, но магазин снимает ручной clone/copy по каждому репозиторию.

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

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

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

| Модуль | Задача |
|--------|--------|
| [UFW](https://gitlab.com/cockpit-modules/cockpit-ufw-module) | пакет ufw, статус, политики, правила allow/deny/reject/limit |
| [Fail2ban](https://gitlab.com/cockpit-modules/cockpit-fail2ban-module) | пакет и сервис, jail'ы, ban/unban IP |
| [Cron](https://gitlab.com/cockpit-modules/cockpit-cron-module) | crontab пользователей, `/etc/crontab` и `/etc/cron.d/`, systemd timers |
| [CertManager](https://gitlab.com/cockpit-modules/cockpit-certmanager-module) | Let's Encrypt / certbot, TLS панели Cockpit, renew |

**UFW** — полный цикл Uncomplicated Firewall без `ufw status numbered` в SSH: пакет через APT/DNF/YUM/Pacman, включение, политики по умолчанию, список правил и добавление по порту, протоколу и источнику. Разбор панели: [cockpit-ufw-module](/posts/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](https://gitlab.com/cockpit-modules). Первая панель отдельно: [UFW](/posts/cockpit-ufw-module/).

---

Обратные ссылки:

- [cockpit-ufw-module: Uncomplicated Firewall в Cockpit](/posts/cockpit-ufw-module/)
