// the find
acepanel/panel
⚡ AcePanel - Enterprise server operation and maintenance management panel
AcePanel is a Linux server management panel written in Go — think cPanel or HestiaCP but lighter. It handles the full LNMP stack (Nginx, MySQL, PHP, Redis, etc.) plus containers, certificates, backups, and a firewall, all from a single binary. Aimed at developers or small teams self-hosting on VPS who want a web UI without the bloat of commercial panels.
The single-binary Go architecture is genuinely practical — no runtime dependencies, low memory footprint, and you can stop the panel process after setup without breaking running services. The app plugin model is well-structured: each service (Nginx, Podman, fail2ban, etc.) lives in its own package under internal/apps with a clean app.go + request.go split, making it easy to see what the panel actually does to your system. The biz/data/service layering is proper Go architecture — not just a giant main.go — and the mockery-generated mocks mean the test surface is at least thought about. Passkey support (user_passkey.go) is a nice touch most panels skip entirely.
The README is almost entirely in Chinese with a thin English translation, and the docs site and community (QQ groups, WeChat) are China-centric — if you hit a non-obvious bug as an English speaker, you're largely on your own. The 'enterprise' label in the description is marketing; this is a single-server panel with no clustering, no multi-node management, and no RBAC beyond a single admin account. The offline mode claim is technically true but practically limited — the panel bootstraps service configs, so reinstalling or modifying services still requires the panel running. Wire-generated DI (wire_gen.go) means the dependency graph is hard to follow without running wire yourself, and the generated file being checked in is a footgun when it drifts.