The Problem with Package-Based Installers#
If you've ever installed cPanel, Plesk, or even a panel like DirectAdmin, you know the drill: the installer runs, pulls in 150+ RPM or DEB packages, configures repos, manages dependency trees, and takes 20-40 minutes on a fresh VPS. When it breaks—and it does break—you're debugging a web of package conflicts, pinned versions, and repo mismatches.
For hosting resellers who spin up servers frequently or migrate between providers, this is more than an annoyance. It's operational friction that compounds across every deployment, every update cycle, every disaster recovery scenario.
We made a deliberate choice with Salieno Core's installer: ship as a single statically-linked binary with bundled dependencies, not as a set of system packages. This post explains why, and what it costs us.
What "Single Binary" Actually Means Here#
Salieno Core's installer is one executable—roughly 45 MB on Linux (x86_64). When you run it, it doesn't touch your system package manager. It doesn't add yum repos or apt sources. It unpacks its own directory tree under /opt/salieno/ with everything it needs: the control panel server, the billing module, the DNS handler, the file manager process, and all their shared libraries.
The Nginx, PHP-FPM, and MariaDB instances it provisions are also bundled in that tree. We compile and statically link what we can; for components that need dynamic linking (like PHP extensions), we bundle the shared objects explicitly rather than relying on system libraries.
The result: the installer runs in under 90 seconds on a typical 2-vCPU VPS. It doesn't care whether you're on Ubuntu 22.04, Debian 12, AlmaLinux 9, or Rocky 9. The binary is the binary.
The Trade-Offs We Accepted#
This isn't a free lunch. We want to be honest about what we gave up.
Disk footprint is larger. Because we bundle libraries that a package-based install would share with other system software, the base Salieno Core installation uses about 1.2 GB of disk. A comparable cPanel install with system packages might share 300-400 MB of that with other software already on the box. For a hosting server with 500 GB+ of NVMe storage, this is negligible—but it's not zero.
Security patching is our responsibility, not yours. When a critical CVE drops in OpenSSL or libcurl, a package-based panel gets the fix as soon as your distro pushes it. We have to rebuild and ship an updated binary. We run a 24-hour SLA for critical CVE response, and we maintain automated CI pipelines that rebuild against patched libraries nightly. But there's a window—and we're transparent about it.
You can't swap our Nginx for yours. If you have a specific Nginx module you need (say, a custom auth module or a niche WAF integration), you can't just apt install it into our tree. We expose a reverse-proxy hook that lets you front our bundled Nginx with your own, but that's an extra hop. For 95% of hosting resellers this doesn't matter; for the 5% with exotic requirements, it's a real limitation.
Why We Chose This Anyway#
The benefits outweighed the costs for our audience, and here's the concrete reasoning.
Deterministic deployments#
Every Salieno Core installation of the same version runs the same binaries with the same library versions. When a reseller reports a bug, we can reproduce it immediately because we know exactly what's running. With package-based panels, the first question is always "what distro, what repos, what versions?"—and the answer is different every time.
No distro fragmentation#
We test against four distros. But because we bundle our own runtime, the OS underneath matters far less. A reseller migrating from Ubuntu to AlmaLinux doesn't reinstall Salieno Core—they copy the /opt/salieno/ directory, run the binary, and it works. This has saved our users real migration hours.
Simpler rollback#
Because the entire installation is a self-contained directory, rolling back is a filesystem operation. Copy the old tree back, restart. No apt history gymnastics, no package downgrade conflicts. We version the data schema separately from the binary, so a binary rollback doesn't lose billing records or customer configs.
Faster cold installs#
For resellers who run ephemeral staging servers or who provision for clients on demand, 90 seconds versus 30 minutes is a material business advantage. It also makes disaster recovery faster: spin up a fresh VPS anywhere, run the binary, restore from backup, done.
How We Handle Updates#
Updates ship as a new binary. The updater downloads the new version, verifies its checksum, swaps the symlink, and restarts the service. Downtime is typically under 3 seconds. Database migrations run automatically at startup and are backward-compatible for one major version, so rollback is safe.
We publish a changelog with every release and tag security-sensitive updates separately so resellers can prioritize them.
The Bigger Picture#
The hosting control panel industry has been package-manager-dependent for two decades. It made sense when panels were tightly coupled to a specific distro's Apache/PHP/Mail stack. But modern hosting infrastructure is more portable—Nginx, PHP-FPM pools, and containerized isolation don't need deep OS integration the way legacy LAMP stacks did.
A single-binary model isn't right for every project. If you're building an OS-integrated tool that needs to manage system users, firewall rules at the iptables level, and kernel parameters, packages make sense. But for a control panel that provisions its own isolated services and exposes them through a clean API boundary, bundling is the more maintainable choice.
We think resellers should spend their time on customers, not on debugging package conflicts at 2 AM. The single-binary approach is how we try to make that real.
What to Watch For#
If you're evaluating any self-hosted control panel—not just Salieno Core—ask these questions about its installation model:
- How does it handle security updates for bundled dependencies? If it bundles but doesn't have a fast patch pipeline, you're exposed.
- Can you run it alongside existing system services? Bundled Nginx means port conflicts if you already run Nginx on port 80.
- What's the rollback story? A single binary is only useful if rollback is tested and documented.
- Does it lock you out of the OS? You should still have full SSH access and the ability to run system-level tools. Salieno Core doesn't sandbox the admin—it just manages its own process tree.
The installation model is an architectural decision that affects every day you operate the panel. It's worth asking about before you commit.
0 comments
Loading comments…