Laravel on servers you own

Push to deploy with atomic releases and automatic rollback, the scheduler entry created with the site, queue workers under systemd, managed databases and free SSL. Sites and deploys are unlimited from $12 a month. The server is yours, from any provider, and your sites keep running if you stop paying us.

What a deploy does

The same four steps every time, in a new directory, with the live site serving throughout.

Push, and a release directory appears
The GitHub App sends a webhook and Provisore clones that commit into a new release directory beside the running one. The live site keeps serving while the new release builds, so a failed build is a red line in a log rather than an outage.
composer install, then the caches
Dependencies install, then config, routes and views are cached. The deploy script comes pre-filled and is yours to edit, so an asset build or a custom artisan command goes in the same script.
artisan migrate --force, if you want it
A per-site setting, on by default. If you would rather run a site's migrations by hand, switch it off under Settings → Source on the site.
A symlink swap, then a health check
The current symlink moves to the new release in one rename and the site is checked. If it answers with a server error, Provisore points the symlink back at the previous release and reloads on its own. Rolling back from the Deployments page is the same swap, so it needs no rebuild.

What creating a Laravel site sets up

Four things that are specific to the runtime rather than generic to any PHP project.

Its own PHP-FPM pool

Each site gets its own pool and its own pinned PHP version, PHP 8.1 to 8.5, with 8.5 on a new site. Two sites on one server can sit on different versions, and upgrading one does not touch the other.

An Nginx vhost rooted at public/

Written for you, with the try_files block Laravel needs and a free Let's Encrypt certificate that certbot renews. Redirects, forced HTTPS and password protection apply without a redeploy.

A scheduler entry, created with the site

Creating a Laravel site creates the cron entry for the framework scheduler. It is tied to the site, so it runs as the site's own account, in the current release, with the site's pinned PHP. Delete it if your repository schedules nothing.

A maintenance switch in the site inspector

Open the site's inspector (⌘.) and switch maintenance on. Provisore runs artisan down as the site's own account, and artisan up when you switch it off. Only Laravel sites have it, because only Laravel defines what maintenance means.

The scheduler entry, created with the site
* * * * *   php artisan schedule:run

And the rest of what an application needs

Everything here except backups is on every plan, because it runs on hardware you already pay for.

Queue workers as supervised services

A queue worker, Horizon, or any long-running process gets a systemd unit written for it. It restarts on failure, comes back after a reboot, and you can follow its output live from the app. You write no unit file and configure no Supervisor.

Documentation

Databases and caches on the same server

MySQL, MariaDB, PostgreSQL, Redis, Valkey and Memcached, installed and managed from the server's Databases page, with per-site users whose grants you set there. An engine listens on loopback until you expose it.

Documentation

Environment files, versioned and encrypted

The .env is encrypted at rest, shared across releases and versioned, so you can see what changed and when instead of guessing which deploy broke the mailer.

Documentation

Backups to a bucket you own

Scheduled database dumps and site file archives, uploaded to any S3-compatible bucket you control, from Pro up. You can restore them without us, and we never hold your data.

Documentation

What this is not

Provisore manages a server. It does not turn one into a platform.

There is no autoscaler

A server runs at one size until you resize it. Every plan charts CPU, memory and disk, and alert rules that notify you start on Pro. Acting on them is yours. If your traffic arrives in unpredictable spikes, buy a platform that adds replicas for you.

Your server is a server

It has a root account, a package manager, and consequences. Provisore hardens it on provisioning, installs security updates unattended and keeps its configuration in step. It is still a machine, not an abstraction over one.

Most PHP versions come from a third-party source

Ubuntu's own archive carries one PHP version per release: 8.5 on Ubuntu 26.04 and 8.3 on Ubuntu 24.04. Any other version adds a third-party apt source to the server the first time a site asks for it.

Frequently asked questions

Do you host the application?

No. Provisore manages servers you own. Connect an Ubuntu server from any provider over SSH, or have Provisore create one for you on Hetzner. You pay your provider for the machine and us for the management, and cancelling Provisore leaves your sites running.

Can I run Horizon?

Yes, as a supervised daemon like any other long-running process. Provisore writes and manages the systemd unit, restarts it on failure and brings it back after a reboot. There is no Horizon-specific integration. What you get is correct process supervision, which is what Horizon needs.

How many Laravel sites can one plan run?

Sites and deployments are unlimited on every plan, Solo included. The plans count servers, connected and monitored, so an agency with forty sites on three boxes is priced on the boxes.

I am on Laravel Forge. How hard is moving?

Provisore reads a Forge server through Forge's API and a read-only SSH scan, then recreates its sites, databases, scheduled commands and daemons on a new server, with repositories and deploy scripts filled in. The old machine is only read and keeps serving traffic until you change DNS. Moving the data and the uploaded files is yours, and it is the long half.

Which PHP versions can I run?

PHP 8.1 to 8.5, selected per site, with 8.5 on a new one. Each site has its own pool, so versions do not have to match across a server. A version the server does not have yet is installed the first time a site asks for it.

Put one Laravel site on it and see.

14 days free on any plan, card required. Nothing on your servers changes if you leave.