- What is zzantares/proxmoxve used for?
- zzantares/proxmoxve is a community, MIT-licensed PHP client that wraps the Proxmox VE REST API at /api2/json. It provides a thin Laravel service provider and facade plus endpoint helpers for nodes, virtual machines, containers, storage and tasks. It handles HTTP transport through Guzzle rather than deep orchestration, so VMID allocation, idempotency and reconciliation remain your responsibility.
- How do I install zzantares/proxmoxve in a Laravel app?
- Install it with Composer using composer require zzantares/proxmoxve. The package ships a Laravel service provider and facade, so registration is automatic on supported versions or can be added manually in config/app.php on older ones. Publish the config file and set your Proxmox host, port, credentials and TLS verification through environment variables.
- Which Laravel and PHP versions does this package support?
- The library lineage is PHP 5.5+ and it originated in the Laravel 5 era, with its last tagged release around February 2023. On modern stacks such as PHP 8.2 or 8.3 with Laravel 10 or 11, verify Guzzle and illuminate/* constraint compatibility before committing. Some teams need a fork or relaxed platform requirements to install it alongside a current Laravel skeleton.
- How do I configure Proxmox authentication with this package?
- Older releases default to ticket-based authentication with a CSRF prevention token, which means storing a Proxmox username and password for a realm exempt from 2FA. Configure the host, credentials and realm in the published config file, sourcing secrets from environment variables or a vault. Check the auth code of the version you pin, because ticket expiry and refresh behaviour matters in long-running workers.
- Does it support Proxmox API tokens instead of username and password?
- API token support must be verified against the specific version you pin, since older releases were built around ticket plus CSRF token auth. If tokens with privilege separation are not supported, plan to patch a fork rather than storing a root password. Use a dedicated token bound to a service role scoped to a resource pool, never root@pam.
- How do I start, stop or clone a virtual machine with this package?
- The package exposes Proxmox endpoints for starting, stopping, rebooting and cloning guests, typically called through the facade after configuring a connection. Responses come back as arrays or stdClass objects, so wrap calls in your own gateway interface before letting data reach domain logic. Gate destructive operations such as destroy, disk resize and migration behind feature flags and an audit trail.
- How do I poll Proxmox task status when an operation is asynchronous?
- Proxmox returns a UPID for asynchronous operations, and the package lets you query task status through the node task endpoints. There is no built-in retry or backoff, so implement polling in queued jobs with your own timeout and transient-versus-permanent error classification. Distinguishing a pvedaemon restart or quorum loss from a permission error may require parsing raw response bodies.
- Is zzantares/proxmoxve safe to use in production?
- It is reasonable commodity plumbing, but treat it as a dependency you own rather than a maintained platform component. The project has a bus factor of one, no release in roughly two years and a sparse exception hierarchy, so expect to fork and patch. Register it as a container singleton behind an internal gateway interface so you can swap it later without touching business logic.
- How do I test or mock the Proxmox API in my Laravel tests?
- The package does not ship fixtures or a mock server, so build a fake against your own gateway interface rather than mocking the package internals. Keep ZzAntares imports confined to the adapter namespace and enforce that with a static analysis rule. That approach also lets you test retry, timeout and error-mapping behaviour deterministically.
- What are the alternatives to zzantares/proxmoxve?
- Alternatives include writing a thin Guzzle client yourself, tracking a maintained community fork, or running the Python proxmoxer library as a sidecar service. Each trades effort for control, and a hand-rolled client is only a few hundred lines while removing dependency drift risk. Choose based on whether you need long-term ownership of the integration or just a quick read-only spike.