Support Alpine OpenRC agents and discover Docker NPMplus and CrowdSec

This commit is contained in:
Maxim
2026-10-14 20:37:34 +03:00
parent 6a940772f0
commit 72bebdc2eb
9 changed files with 595 additions and 22 deletions

View File

@@ -586,3 +586,48 @@ HTTP-проверки остаются в истории и возвращают
новые правила сразу применяются и к старым записям. Срабатывания и решения
CrowdSec, а также общие счётчики firewall, никогда не скрываются этим фильтром.
Сетевые потоки по-прежнему хранятся только последним снимком, без истории.
## Alpine LXC и Docker NPM/NPM+ (v0.23.0)
Установщик агента поддерживает Linux **x86_64/amd64** с systemd или OpenRC
(Alpine LXC). Для Alpine команда из настроек сначала устанавливает curl и
CA-сертификаты, если curl отсутствует. Бинарник статический, без glibc;
скачивание проверяется по SHA-256. OpenRC-служба включается в default runlevel
и использует supervise-daemon: перезапускает агент после ошибки и обновления.
Команды: `rc-service proxmox-dashboard-agent status/restart` (выберите одно
действие). Журнал: `/var/log/proxmox-dashboard-agent.log`; его ротацию настройте
средствами ОС. Удаление — штатным `scripts/uninstall-agent.sh`.
Обновление пакетов ОС и управление systemd-службами из интерфейса остаются
функциями Debian/Ubuntu/systemd; этот релиз добавляет установку и работу агента
на OpenRC, а не эмуляцию systemd. Включённый сетевой сбор на Alpine ставит
`conntrack-tools` через `apk add --no-cache`. Ограничения CAP_NET_ADMIN и
сетевого namespace LXC сохраняются; никаких изменений конфигурации Proxmox,
privileged/nesting, firewall или sysctl агент не делает.
После выбора агента Docker-хоста и включения карты трафика агент автоматически:
- проверяет стандартные каталоги NPM и NPM+;
- находит запущенные контейнеры с nginx-proxy-manager/npmplus в имени образа
и определяет каталоги логов по mounts `/data`, включая именованные volumes
и вложенные bind mounts;
- читает обычный формат NPM и формат NPM+ `access.log`, включая ротацию;
- находит единственный контейнер образа `crowdsecurity/crowdsec` и выполняет
только `cscli alerts list` через локальный Docker socket. Docker CLI, новый
bouncer key и опубликованный LAPI не нужны. Если контейнера нет, используется
прежний локальный `cscli`.
Поиск повторяется раз в минуту, поэтому пересоздание контейнеров подхватывается
автоматически. При нескольких CrowdSec задайте точный контейнер вручную:
`DASHBOARD_CROWDSEC_CONTAINER=имя` в `/etc/proxmox-dashboard-agent.env` и
перезапустите агент. Каталог логов можно переопределить переменной
`DASHBOARD_NPM_LOG_DIR=/путь/к/логам`; `off` выключает сбор трафика этого агента.
Используется локальный `/var/run/docker.sock`; rootless/удалённые Docker engines
и логи только в stdout этим обнаружением не поддерживаются.
NPM+ должен действительно писать access-логи: включите `LOGROTATE=true` в его
Compose и пересоздайте контейнер, если логирование выключено. Агент показывает
подсказку при отсутствии логов, но не меняет Compose приложений. Это настройка
[NPM+](https://github.com/ZoeyVid/NPMplus/blob/develop/README.md), а не Dashboard.
Stream-логи NPM+ не считаются HTTP-запросами; сетевые потоки собираются conntrack.
Как и раньше, первый запуск чтения начинается с конца существующих логов.