# Laravel Forge and Ploi alternatives on your own VPS

> Looking for a Laravel Forge alternative? Compare Forge, Ploi and a self-hosted panel for deploys, queues, scheduler and cost on your own VPS.

Source: https://zopanel.net/blog/laravel-forge-alternative  
Updated: 2026-10-21

## Key takeaways

- Laravel Forge and Ploi are hosted services that provision and manage your VPS over SSH or an agent, and you pay them every month on top of the server.
- Both give you zero-downtime deploys, managed queue workers and cloud provisioning; Forge now includes zero-downtime deploys without Envoyer for single-server sites.
- A self-hosted panel such as ZoPanel runs on the server itself, adds email, DNS and per-account isolation, and has no monthly fee, but it does not provision cloud servers or manage long-running queue workers.
- Pick Forge or Ploi for many servers and heavy queues; pick a self-hosted panel when you want one server to run Laravel apps, client sites and email without a subscription.

The main Laravel Forge alternatives are Ploi, another hosted server manager with a free tier and similar Laravel tooling, and self-hosted control panels such as ZoPanel that run on your VPS and deploy Laravel from Git without a monthly service fee. Forge and Ploi are strongest when you provision many servers across cloud providers and run heavy queue workers. A self-hosted panel fits better when one or a few servers must host your Laravel apps alongside client websites, email and DNS, and you would rather not pay a subscription per month.

Below we compare releases, `.env`, migrations, queues and the scheduler, with sourced prices and where Forge and Ploi are better. For 3-year cost across 1, 5 and 20 servers, see our [RunCloud alternative comparison](/blog/runcloud-alternative).

## What Laravel Forge and Ploi actually do

Both are **server management as a service**: the dashboard runs on the vendor's infrastructure, you connect a cloud account or your own server, and the service installs the stack and deploys your code from Git.

**Laravel Forge** is built by the Laravel team. According to its [server providers docs](https://laravel.com/forge/docs/server-providers.md), it can create servers on Laravel VPS (its own managed servers), DigitalOcean, Akamai/Linode, Vultr, AWS and Hetzner, or on any other machine through "Custom VPS". A custom server needs a fresh Ubuntu 24.04 or 26.04 x64 install with root SSH, and Forge manages every server over SSH ([introduction](https://laravel.com/forge/docs/introduction.md)). Its [pricing FAQ](https://laravel.com/forge/pricing) says it also supports plain PHP, WordPress, Statamic, Node.js, Nuxt and Next.js.

**Ploi** works the same way. Its [homepage](https://ploi.io/) lists UpCloud, DigitalOcean, Linode, Hetzner, Vultr, AWS EC2 and Scaleway, and a custom server works on any provider that can install Ubuntu, by running Ploi's command as root ([Ploi docs](https://ploi.io/documentation/server/how-do-i-install-a-custom-server)). Marking a project as Laravel unlocks "queue workers, scheduler, octane and tuned Nginx".

### What they do well

- **Provisioning across clouds.** Pick a provider, region and size, and the server is created and configured for you.
- **Zero-downtime deploys.** Forge [clones each deploy into a `releases` folder](https://laravel.com/forge/docs/sites/deployments.md) and switches a `current` symlink only when every step succeeds, keeping the last 4 releases for rollback. On Ploi, zero-downtime deployments are listed from the Pro plan ([pricing](https://ploi.io/pricing)).
- **Envoyer is no longer required on Forge.** The Forge FAQ says all new Forge subscriptions include zero-downtime deployments for a single server. Envoyer is still needed to deploy one project to multiple servers.
- **Real queue workers.** Forge's [queue workers](https://laravel.com/forge/docs/sites/queues.md) are monitored by Supervisor, restarted if they crash and started on boot. Horizon runs as a Forge daemon. Ploi says it "manages your queue workers automatically".
- **Teams and many servers in one dashboard,** with role-based access on Forge.

### Where they cost you

- **A recurring fee on top of the VPS,** for as long as you use the service.
- **A third party with root access.** Forge needs root SSH; Ploi's install command runs as root. Many teams accept that, but it is a trust decision.
- **App hosting, not web hosting.** Neither pricing page lists a mail server, DNS hosting or hosting accounts with per-customer limits.

## Prices at the time of writing (October 2026)

Prices in USD, read from each vendor's pricing page in October 2026. Check before you buy.

| Service | Plan | Servers | Price | Notable limits |
| --- | --- | --- | --- | --- |
| [Laravel Forge](https://laravel.com/forge/pricing) | Hobby | Unlimited Laravel VPS, 1 external server | $12/month | Community support |
| Laravel Forge | Growth | Unlimited | $19/month | 5% off Laravel VPS, standard support |
| Laravel Forge | Business | Unlimited | $39/month | 15% off Laravel VPS, advanced support |
| [Ploi](https://ploi.io/pricing) | Free | 1 (1 site) | $0 | 5 deployments a month, no zero-downtime |
| Ploi | Basic | 5 | $10/month or $108/year | No zero-downtime, no backups |
| Ploi | Pro | 10 | $16/month or $172.80/year | Zero-downtime, backups, monitoring |
| Ploi | Unlimited | Unlimited | $36/month or $388.80/year | Adds team management |
| [ZoPanel](/pricing) | Free | Per server | $0 | 3 accounts, 10 websites, 10 databases |
| ZoPanel | Pro | Per server | $49/year or $199 once | Unlimited websites |

Forge also offers annual billing, but we could not read those amounts from its page, so only monthly prices are shown. Hobby allows one server outside Laravel VPS; a second one of your own means Growth. On monthly billing, Forge Hobby is 12 × $12 = $144 a year and Growth is 12 × $19 = $228 a year, before the cost of the servers.

## Laravel on Forge, Ploi and ZoPanel compared

| Task | Laravel Forge | Ploi | ZoPanel |
| --- | --- | --- | --- |
| Create the server | From the dashboard on 6 providers, or Custom VPS | From the dashboard on 7 providers, or custom | You create the VPS, then run one install command |
| Supported OS | Ubuntu 24.04/26.04 (custom VPS) | Ubuntu | Ubuntu 22.04/24.04/26.04, Debian 12/13, x86-64 and ARM64 |
| Deploy from Git | Yes, push to deploy | Yes | Yes, webhook on push or API from CI |
| Zero-downtime releases | Yes, keeps 4 | Pro plan and up | Yes, keeps 5, one-click rollback |
| Queue workers | Supervisor-managed, Horizon as daemon | Managed workers | `sync` by default, or `queue:work` from cron |
| Scheduler | Built-in scheduler page | Yes | Cron job running `schedule:run` |
| Multi-server deploy of one app | With Envoyer | Not listed on pricing page | No |
| Email and DNS for your domains | Not listed | Not listed | Yes (mail server, PowerDNS with DNSSEC) |
| Client hosting accounts with limits | Not listed | Not listed | Yes, own Linux user, PHP-FPM pool, CPU/RAM limits |
| Where the dashboard runs | Forge's cloud | Ploi's cloud | On your server |

## How ZoPanel runs a Laravel app

ZoPanel runs on the server itself. Laravel runs as a PHP website: nginx serves `public` and PHP runs in the account's own PHP-FPM pool. There are two ways in ([Laravel docs](/docs/laravel)).

**One-click install** creates a new `laravel/laravel` project and database, writes `.env`, and runs `key:generate`, `migrate` and `storage:link`.

**Git deploy** is the Forge-style workflow. Choose **Git deploy** in **Websites → New website**, enter the repository and branch, and ZoPanel detects Laravel. It proposes `composer install --no-dev --optimize-autoloader`, caches config, routes and views, adds `npm run build` for Vite assets, and picks the PHP version from `require.php` in `composer.json`.

What it sets up for Laravel:

- **`.env` from the panel.** Environment variables you set in the panel are merged into a persistent `shared/.env` on every deploy. Lines you added by hand survive.
- **`APP_KEY` generated once and kept**, plus `APP_ENV=production`, `APP_DEBUG=false` and the right `APP_URL`.
- **Redis for sessions and cache** automatically, when the account's private Redis is available.
- **Persistent `storage` and `.env`** shared across releases, so uploads and logs are not lost.

### How a release goes live

The code is fetched into `releases/<timestamp>`, install and build commands run as the hosting account inside its CPU and memory limits, then `current` is switched in one step and PHP-FPM is reloaded gracefully. If the build fails, `current` does not change and the old release keeps serving. The **Releases** card keeps the last 5 builds, and **Rollback** switches back (the database is not rolled back). Push webhooks for GitHub, GitLab and Gitea and deploy keys are in the [Git deploy docs](/docs/git-deploy); the mechanics are explained in [auto deploy from GitHub](/blog/git-auto-deploy).

Migrations are not run automatically. You append `php artisan migrate --force` to the build command, and it runs before the new release goes live, so write migrations the running release can tolerate.

### Scheduler and queues: the honest gap

This is where Forge and Ploi are clearly ahead. ZoPanel has no Supervisor-style page for long-running PHP queue workers or Horizon. Instead:

- the scheduler runs from a **Cron Job** every minute: `cd /home/alice/domains/example.com/current && /usr/bin/php8.3 artisan schedule:run`;
- Git deploy sets `QUEUE_CONNECTION=sync`, so jobs run inside the request. That needs no worker and suits light jobs;
- for background jobs, switch to the `database` or `redis` queue and run `queue:work --stop-when-empty --max-time=55` from a cron job every minute.

That covers emails and notifications for a typical business app. If you depend on Horizon or jobs that must start within a second, Forge or Ploi serve you better today.

## Other limits to know before switching

- **No cloud provisioning.** You create the VPS yourself, then run `curl -fsSL https://get.zopanel.net | sudo bash`.
- **One panel per server.** The [fleet](/docs/fleet) feature gives one controller view of your servers, but each server needs its own licence.
- **No multi-server deploy** of one app behind a load balancer.
- **Octane is not covered** in ZoPanel's Laravel docs; the documented path is PHP-FPM.

What you gain: the panel lives on your server with no subscription, and the same box can host WordPress sites, email and DNS. Each hosting account gets its own Linux user, PHP-FPM pool and CPU, RAM and process limits, so a runaway job in one app cannot starve the others. Running several Laravel apps on different PHP versions is covered in [multiple PHP versions on one server](/blog/multiple-php-versions). If you are also weighing CloudPanel, which is free but has no mail server, see [CloudPanel alternatives](/blog/cloudpanel-alternative).

## Moving a Laravel app off Forge or Ploi

1. **Inventory** environment variables, deploy script steps, queue workers and scheduled jobs.
2. **Install ZoPanel on a fresh VPS**, never over a Forge or Ploi server.
3. **Create the database** and import a `mysqldump` from the old server.
4. **Create a Git deploy website,** use **Paste .env**, and keep the same `APP_KEY`: a new key signs every user out and makes encrypted data unreadable.
5. **Add migrations** to the build command and recreate scheduler and queue cron jobs.
6. **Copy uploads** to `shared/storage` over SFTP, test with your `hosts` file, then switch DNS.

## Conclusion

Laravel Forge and Ploi remain excellent if you provision many servers across clouds, run Horizon or heavy queues, or need team access across a fleet; Ploi's free tier is also a fair way to try one small site. A self-hosted panel is the better Laravel Forge alternative when one or a few VPS run your Laravel apps next to client websites, email and DNS, and you want zero-downtime Git deploys without a monthly fee. Try it on a test VPS first: [ZoPanel's Free plan](/pricing) gives you 3 hosting accounts, 10 websites and 10 databases with no time limit, enough to deploy a real Laravel app from Git and compare.

## Frequently asked questions

### Is there a free alternative to Laravel Forge?

Yes. Ploi's free plan covers 1 server and 1 site with 5 deployments a month. ZoPanel Free (10 websites, 10 databases) includes Git deploy. GitHub Actions over SSH is also free, but you maintain the scripts.

### Do I still need Envoyer with Laravel Forge?

For most single-server sites, no. Forge's FAQ says new subscriptions include zero-downtime deployments for one server. Envoyer is still useful if you deploy one project to several servers at once.

### Can I use Laravel Forge with my own VPS?

Yes, through the Custom VPS option. The server must run a fresh Ubuntu 24.04 or 26.04 x64 install, be reachable from the internet and allow root SSH. On the Hobby plan, only one such external server is included.

### How do I run Laravel queues without Forge?

On a plain VPS, Supervisor or a systemd service keeps `queue:work` running. On ZoPanel, keep `QUEUE_CONNECTION=sync` for light jobs or run `queue:work --stop-when-empty --max-time=55` from a cron job every minute.

### Is Ploi cheaper than Forge?

On list prices, yes for small setups: Ploi Basic is $10 a month for 5 servers, while Forge Hobby is $12 a month with one external server. Zero-downtime deploys on Ploi start at Pro ($16 a month), and Forge includes them on every plan, so compare the plan that has the features you need.
