solitweb/laravel-directadmin
Laravel integration for the DirectAdmin control panel API. Manage hosting accounts, domains, email, databases and more from your Laravel app with a clean, fluent interface. Includes config publishing, easy credentials setup and support for common DirectAdmin API commands.
Architecture fit
The package is a conventional Laravel 5-era service-provider + facade wrapper around DirectAdmin's legacy CMD_API HTTP interface (typically port 2222, form-encoded, response bodies of the shape error=0&text=...&details=...). Architecturally that means it is a thin transport adapter, not a domain model — there are no DTOs, no resource abstractions, no event hooks. For a TPM this is the central fact: the package gives you a call, not an integration. Anything resembling provisioning state, idempotency, or reconciliation is yours to build.
That said, the fit is reasonable for the intended use case — reseller/hosting automation, billing-system-driven account creation, or an internal control plane that manages DirectAdmin users, domains, databases, and mailboxes. It slots in as an infrastructure gateway behind your application services rather than shaping your domain layer.
Integration feasibility
Low ceremony: composer require, config publish for host/port/credentials, then direct method calls. If the consumer application is on Laravel 5.5+, package auto-discovery removes the manual provider registration. A working spike against a sandbox DirectAdmin instance should be achievable in under a day.
The real feasibility gate is version compatibility, not effort.
Technical risk
illuminate/* constraints almost certainly cap it well below Laravel 10/11, which means PHP 8.1+ incompatibility by extension. If the consuming application is modern, this is a fork, not an install.2026-03-04 last-release date should be verified against the actual tag history — low-star packages frequently show metadata artifacts rather than real maintenance activity.error=1 body on failure. Any wrapper that doesn't parse that field will report success on failed provisioning. Verify this explicitly — it is a common defect in packages of this vintage.Key questions for the maintainer/team
illuminate/support and Guzzle constraints, and does it run on PHP 8.2/8.3?error= in response bodies?CMD_API endpoints are covered — user, domain, database, email, DNS, reseller — and which require raw pass-through?Stack fit Good fit if the consumer is a Laravel 5.x–8.x application whose job is to drive a DirectAdmin fleet — hosting automation, reseller portals, order-to-provision pipelines. Poor fit if the consumer is on Laravel 10/11 and the team has no appetite for owning a fork, or if DirectAdmin is incidental to a broader infrastructure abstraction (in which case write your own thin client; the API surface is small enough that the wrapper's value-add is marginal).
Migration path
Recommended posture: adopt behind an interface you own. Define an internal HostingProvisioner contract with the handful of operations you actually need (create account, suspend, unsuspend, delete, set password, list domains). Implement it once with this package as the driver. That single decision converts a stale third-party dependency into a swappable adapter and removes the version-lock risk from your critical path.
If the application is on a modern Laravel and you still want the package's endpoint coverage:
illuminate/* constraints to ^8|^9|^10|^11.new Client).error= parsing and typed exceptions if absent.Compatibility checks before committing
composer why-not against the target Laravel and PHP versions.CMD_API endpoints in use are deprecated in favor of the newer API.Sequencing
Maintenance Assume you own it. At 21 stars with a single maintainer, upstream responsiveness should be modeled as zero. Budget a standing line item for dependency hygiene — quarterly check that the fork still installs against current Laravel/PHP, plus a patch path if DirectAdmin changes response formats. The codebase is small enough that "own it" is a realistic commitment rather than a burden.
Support Community GitHub issues only; no SLA, no vendor. DirectAdmin's own API documentation is adequate and is the actual source of truth — your team will end up reading it more than the package's README. Factor in that whoever debugs a failure will need to reason about both the Laravel layer and the panel's behavior.
Scaling
The bottleneck is not the package — it is DirectAdmin. CMD_API calls that create users or domains touch the filesystem and can take seconds; the panel serializes significant work. Design accordingly:
A single panel will cap your throughput long before the PHP side does. Capacity planning should be done against DirectAdmin, empirically.
Failure modes
error=1 in the body. If unhandled, your billing system marks accounts provisioned that do not exist. Mitigation: parse and assert; treat unknown body shapes as failures.CMD_API calls. Mitigation: idempotent per-step operations plus a reconciliation job that diffs intended vs. actual state.Ramp-up Low for basic use — a mid-level Laravel engineer is productive in half a day. Moderate for safe operation: understanding DirectAdmin's response quirk (error-in-body), its per-endpoint semantics, and the difference between a transient panel failure and a permanent validation rejection. The runbook matters more than the docs; write it during integration, not after the first incident.
How can I help you explore Laravel packages today?