minsec

Web UIs: Cockpit, Virtualmin and your own

The daemon speaks JSON on a Unix socket, so user interfaces never scrape command output.

Virtualmin

minsec ships with Virtualmin and replaces its fail2ban integration. Nothing to install: the daemon, the filters for the services Virtualmin manages, and the UI arrive together. If you run Virtualmin, this page is the only one you can skip.

Cockpit

cockpit-minsec is a Cockpit module for status, live bans, one-click unban, and filter toggles — useful on any systemd distribution, with or without a control panel.

It is built and published alongside the agent. For the beta, its .rpm and .deb are attached to each release at https://github.com/minsecio/cockpit-minsec. Download the file for your package format and install it the same way as the agent's.

sudo dnf install cockpit
sudo dnf install ./cockpit-minsec-*.rpm
sudo systemctl enable --now cockpit.socket

Then open https://your-server:9090/ and pick minsec in the sidebar.

From a repository

Package repositories are not published yet

The COPR and PPA below do not exist yet, and the commands in this section will not work until they do. For the beta, install from the release files on GitHub — see above.

Once the COPR and PPA are up, the module comes from the same repository as the agent, so on a machine that already has minsec installed from a repository it is one more package:

sudo dnf install cockpit cockpit-minsec
sudo systemctl enable --now cockpit.socket

The module talks to the same control socket described below, so it shows kernel truth for active bans rather than a cached list, and any change it makes is identical to running the equivalent command.

cPanel and Plesk

Panel plugins are planned. The control socket and --json output are already stable enough to build against, and we would rather see a plugin exist than wait for us — open an issue if you are working on one.

Building your own

Every command takes --json:

minsec status --json
minsec list --json
minsec inspect --json
minsec events -n 100          # always JSON Lines

The same JSON is available directly on the control socket at /run/minsec/minsec.sock, as newline-delimited requests:

printf '{"cmd":"status"}\n' | sudo socat - UNIX-CONNECT:/run/minsec/minsec.sock

Requests are one JSON object per line; responses are one JSON object per line back. This is the supported integration surface — it exists so that a UI never has to parse human-readable output, and it will not change shape underneath you within a major version.

The command set and the socket protocol are documented in minsec(1).