theabhishekin/laravel-vps-deploy

Provision a fresh or existing VPS end-to-end for your Laravel app — powered by the standalone vps-deploy Rust binary.

Maintainers

Package info

github.com/TheAbhishekIN/laravel-vps-deploy

pkg:composer/theabhishekin/laravel-vps-deploy

Transparency log

Statistics

Installs: 1

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v0.1.0 2026-07-17 09:26 UTC

This package is auto-updated.

Last update: 2026-07-17 10:01:25 UTC


README

Provision a fresh or existing VPS end-to-end for your Laravel app — PHP version, extensions, web server + domain + SSL, database, Redis, cron, queue workers, and websockets — from one command:

composer require theabhishekin/laravel-vps-deploy --dev
php artisan deploy:setup

This package is a thin distribution layer. The real engine is vps-deploy, a fast, dependency-free Rust binary that detects your app's requirements from composer.json / package.json and runs an idempotent, preview-first provisioning pipeline. deploy:setup fetches the right prebuilt binary for your server's OS/arch (into vendor/bin/vps-deploy) and execs it with your app's base path and .env location.

Two entry paths, one engine

Scenario Entry point
Fresh VPS, no PHP installed yet curl -sSL https://raw.githubusercontent.com/TheAbhishekIN/vps-deploy/main/install.sh | bash
Existing Laravel repo, PHP already present composer require theabhishekin/laravel-vps-deploy --dev

Both run the same binary and the same pipeline, so there's no drift between "the composer version" and "the standalone version". Caveat: a truly bare VPS needs the curl bootstrap once — Composer itself requires PHP, which is exactly what the binary is about to install.

Usage

php artisan deploy:setup             # full interactive wizard (vps-deploy run)
php artisan deploy:setup update      # repeat-deploy reconciliation
php artisan deploy:setup plan        # dry run — show what would change
php artisan deploy:setup doctor      # health check, applies nothing
php artisan deploy:setup provision redis
php artisan deploy:setup history

Everything after deploy:setup is forwarded to the binary, which already receives --base-path and --env-file pointed at your app.

Optionally publish the config stub instead of using the interactive init:

php artisan vendor:publish --tag=vps-deploy-config

deploy.yml declares only what can't be inferred (domain, database engine, worker count, …). PHP version and extensions are read from your composer.json; the Node version from package.json / .nvmrc.

Binary download details

  • Prebuilt binaries exist for Linux x86_64 and aarch64; on other platforms (e.g. your Mac) the download is skipped with a notice — this tool runs on the VPS.
  • Set VPS_DEPLOY_BIN=/path/to/vps-deploy to use a binary you manage yourself (or one installed by install.sh).
  • Composer only runs post-install-cmd scripts of the root package, so in consuming apps the download happens on the first php artisan deploy:setup instead — same code path, no difference in behavior.

Server-local state

The engine keeps state.json (current snapshot) and history.jsonl (append-only audit trail) under ~/.vps-deploy/<app-name>/ on the server — never in your repo, never part of a code deploy.