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
sudo apt install cockpit
sudo apt install ./cockpit-minsec_*.deb
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
sudo apt 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).