Web panel
A small website served by the plugin itself — no PHP, no extra hosting, no database to connect. Recent punishments, active bans/mutes/warnings, a player search and a player page with a 3D skin, full history and alt accounts.
Turn it on
web:
enabled: true
host: 0.0.0.0
port: 8085
title: 'My Server — Punishments'
token: '' # empty = public; set a secret to require it
hide-staff: false # true hides staff names on the public pageRestart, then open http://<server-ip>:8085/ in a browser. Open the port in your firewall / hosting panel.
Protecting it
With token: 'secret' the page is only reachable as http://<ip>:8085/?token=secret (or with an Authorization: Bearer secret header). Without a token the panel is read-only anyway — nobody can ban from it.
Behind a domain
Put nginx or Caddy in front to get https://bans.yourserver.net:
location / {
proxy_pass http://127.0.0.1:8085;
proxy_set_header Host $host;
}JSON endpoints
The page is built on four endpoints you can use yourself:
GET /api/stats | active counts |
GET /api/recent?page=1 | newest punishments, 25 per page |
GET /api/list?type=BAN&page=1 | active punishments of one type (BAN, IPBAN, MUTE, WARN) |
GET /api/player?name=Steve | profile, active punishments, history, alts |
Performance
Every request is served from a separate thread and reads the database through the plugin's IO thread — the game thread is never touched.