MinePanel is a Paper plugin that runs an embedded web panel for Minecraft server administration.
The core plugin provides a secure web UI (login, roles, sessions, dashboard pages, logs, users, etc.) and an extension system so extra features can be added as separate jars.
- 🖥️ Embedded HTTP server for panel pages and API.
- 🔐 First-launch bootstrap flow to create the owner account.
- 🛡️ Secure auth with BCrypt + server-side sessions.
- 👥 Role/permission based panel access (
OWNER,ADMIN,VIEWER). - 📜 Console page with live panel log updates and command sending.
- 📊 Overview page with:
- TPS, memory, CPU cards
- TPS/Memory/CPU time-series charts
- Join/leave heatmaps (day x hour)
- 🎮 Players page with profile details and activity info.
- 🔌 Plugin and bans pages.
- 🎨 Themes page.
- 🧩 Extension management page.
- Core scans
plugins/MinePanel/extensionson startup. - If no extension jars are installed, you get the default panel only.
- If extension jars are present, their routes/tabs/features are loaded after restart.
- Extensions are discovered via Java
ServiceLoaderusing:META-INF/services/de.winniepat.minePanel.extensions.MinePanelExtension
All Extensions and their features are listed here
Default config in src/main/resources/config.yml:
web:
host: 127.0.0.1
port: 8080
sessionTtlMinutes: 120
security:
bootstrapTokenLength: 32
integrations:
github:
token: ""
releaseCacheSeconds: 300Use integrations.github.token (or environment variable MINEPANEL_GITHUB_TOKEN) for authenticated GitHub API requests and higher rate limits.
.\gradlew.bat assemble.\gradlew.bat shadowJar- Core plugin jar:
build/libs/MinePanel-<version>.jar
- Reports extension jar:
build/libs/extensions/MinePanel-Extension-Reports-<version>.jar
- Player-management extension jar:
build/libs/extensions/MinePanel-Extension-PlayerManagement-<version>.jar
- LuckPerms extension jar:
build/libs/extensions/MinePanel-Extension-LuckPerms-<version>.jar
- Player Stats extension jar:
build/libs/extensions/MinePanel-Extension-PlayerStats-<version>.jar
- Copy core jar to your server
pluginsfolder. - Start server once.
- Check console for the bootstrap token.
- Open panel in browser:
http://127.0.0.1:8080(or your configured host/port). - Complete setup and create owner account.
- Build or download extension jars.
- Put them in:
plugins/MinePanel/extensions
- Restart the server.
- New extension tabs/features become available.
- GitHub releases:
https://github.com/WinniePatGG/MinePanel/releases - The panel reads extension assets from the latest selected channel (Release or Pre-release).
- If the GitHub API rate limit is reached, MinePanel falls back to cached release data and shows a warning in the Extensions tab.
This repository can build two extension jars:
MinePanel-Extension-Reports-*- Adds report system features.
MinePanel-Extension-PlayerManagement-*- Adds moderation/mute related player-management features.
MinePanel-Extension-LuckPerms-*- Adds LuckPerms player details in Players tab (groups, permissions, prefix/suffix).
MinePanel-Extension-PlayerStats-*- Adds player kills, deaths and economy balance (if Vault-compatible economy is present).
Detailed step-by-step guide:
docs/EXTENSIONS.md
Implement de.winniepat.minePanel.extensions.MinePanelExtension.
Typical flow:
- Implement extension class (
id,displayName, lifecycle hooks). - Add service descriptor file:
META-INF/services/de.winniepat.minePanel.extensions.MinePanelExtension
- (Optional) Register panel routes via
registerWebRoutes(...). - (Optional) Add sidebar tabs via
navigationTabs(). - (Optional) Register runtime commands via
ExtensionContext.commandRegistry(). - Package jar and drop into
plugins/MinePanel/extensions.
- Use a reverse proxy + HTTPS in production.
- Restrict direct access to panel port (
web.port) with firewall/network rules. - Treat bootstrap tokens and owner credentials as sensitive secrets.