Repository navigation
Highlights
Minecraft Server Panel 3.0.0 replaces the active Node backend with a Bun 1.4
TypeScript backend and ships the frontend and backend together as a standalone
executable. End users do not need Bun, Node.js, npm, or node_modules.
- Native
Bun.serve,Bun.Terminal, andbun:sqlitebackend. - Embedded React/Vite frontend with same-origin
/apiand/socket.iorouting. - Standalone Apple Silicon macOS and glibc Linux x86_64 archives.
- Interactive installer with automatic JWT generation, bcrypt password setup,
direct-IP HTTP mode, and optional Caddy-managed HTTPS for DNS names. - Streamed uploads, validated ZIP backup handling, and external
panel-data. - Serialized server lifecycle operations, durable process identity markers,
complete process-group cleanup, crash recovery, and transactional update/delete
recovery. - Bun-only development, lockfiles, audits, native smoke tests, benchmarks, and
tag-driven release automation.
Why the Bun rewrite
The primary goal was a self-contained release without Node, npm,
node_modules, node-pty, or better-sqlite3 native-addon installation. The
rewrite also produced measurable gains on the recorded Apple M1 baseline:
| Measurement | Compiled Bun | Legacy Node | Result |
|---|---|---|---|
| Ready time | 43.00 ms | 201.17 ms | 4.68x sooner |
| Idle RSS | 51.13 MiB | 90.55 MiB | 43.5% lower |
| Session validation | 44,808 req/s | 14,300 req/s | 3.13x throughput |
| Empty server list | 39,175 req/s | 11,777 req/s | 3.33x throughput |
| Indexed UUID lookup | 213,862/s | 66,687/s | 3.21x throughput |
| ZIP creation | 87.10 MiB/s | 74.33 MiB/s | 17.2% faster |
| ZIP extraction | 317.22 MiB/s | 637.63 MiB/s | 2.01x slower |
These are application-level measurements from one machine, not a general claim
that Bun beats Node on every workload. The extraction regression is disclosed
deliberately; the Bun path also performs stricter CRC, size, overlap, path, and
symlink validation. The benchmark harness, fixture details, memory figures, and
reproduction commands are in the
benchmark documentation.
Install
Download the archive matching the host, extract it, and run:
./install.shThe installer explains and validates the deployment choice. Java remains a host
requirement for Minecraft servers. Caddy is used only for automatic HTTPS when a
DNS name is selected; direct-IP HTTP mode runs the application without Caddy.
Verify downloads
Download SHA256SUMS beside the selected archive, then run:
shasum -a 256 -c SHA256SUMSEach archive was built and smoke-tested natively in GitHub Actions and has a
GitHub artifact attestation. Back up an existing installation before cutover.
Supported release targets:
- Apple Silicon macOS (
darwin-arm64) - glibc Linux on x86_64 (
linux-x64)
See the full changelog
and installation documentation.
Full comparison: 2.1.0...v3.0.0