Every feature, end to end
What Provisore does for a production server running Laravel, PHP, Node, Swift or a static site, from the first SSH connection to the backups. Anything not shipped yet is marked on its own line.
Provisioning
A fresh Ubuntu VPS becomes a hardened production server in a few minutes.
- One-line connect
- Paste one command on a fresh Ubuntu 24.04 or 26.04 LTS server. It installs Provisore's key and reports back, and provisioning runs over SSH from there.
- Hardened by default
- SSH password login off, root login off, UFW, fail2ban, unattended security upgrades, and swap sized for the machine.
- Runtimes on demand
- Per-site PHP-FPM pools, Node through fnm, and signature-checked Swift toolchains shared across sites. Each is installed the first time a site needs it.
- Safe to interrupt
- Every step records a marker on the server. Run provisioning again after a dropped connection and it resumes from the first step that did not finish.
Deployments
Zero-downtime releases for every runtime, started from the app, a push, or CI.
- Atomic releases
- Each deploy builds in a new release directory and goes live with a symlink swap. A health check runs after the swap and rolls back a release that does not answer. A failed build never reaches production.
- Push or click
- Deploy from the app or ⌘K, on every push once the repository is connected through the Provisore GitHub App, or from CI by calling the site's deploy hook URL.
- Your deploy script
- Composer, npm, artisan migrate, or whatever your application needs, written for you when the site is created and yours to edit. It runs inside the new release before the release goes live.
- Instant rollback
- The previous release stays on disk. One click puts it back.
- Deploy when checks pass
- Hold a push until the commit's GitHub checks pass, then deploy exactly that commit. A failing check skips it and tells the team why.
- Staging to production
- Promote the commit running on staging to production, built with production's own environment file. Add an approval by a second admin, or promote automatically after each staging deploy.
Queues, daemons & cron
Long-running processes and scheduled commands without writing unit files.
- Managed daemons
- Horizon, queue workers, or any command, run as systemd services with automatic restarts and up to ten processes each.
- Cron without crontab
- Add, edit, and remove scheduled commands in the app. Each one is its own file under /etc/cron.d, so deleting it in Provisore deletes it on the server.
- Runs as the site's account
- Tie a worker or scheduled command to a site and it runs as that site's own Unix user, which is the only account that can read the site's .env.
Databases & backups
MySQL, PostgreSQL, Redis and Memcached on your server, backed up to your bucket.
- Managed engines
- Install MySQL, PostgreSQL, Redis, or Memcached per server. Create databases and users whose grants cover only the databases you pick.
- Backups to S3
- Scheduled database dumps and site file archives to any S3-compatible storage: AWS, Cloudflare R2, Backblaze, Hetzner, MinIO.
- Object storage
- Connect an S3 account on AWS, Cloudflare R2, Hetzner or any S3-compatible provider with a key you create, then create buckets and browse, upload and download objects. Files move between your browser and the bucket through short-lived signed URLs, never through Provisore.
- Restore in the app
- Every run is listed with its outcome. Restore one over its database or site directory after typing the target's name to confirm.
- Hetzner snapshots
- Take an image of a Hetzner server's disk, running or shut down. Restore it over the server, or boot a new server from it that takes a fresh identity on first boot.
- Hetzner volumes
- Add block storage, formatted and mounted at a path you choose with an fstab entry by UUID. Grow it online, detach it, and attach it to another server in the same location.
Monitoring
Metrics, logs and uptime checks, with alerts that go where your team already looks.
- Server metrics
- CPU, memory, disk, swap, inodes and load, with alert rules on any of them, and network traffic charted beside them. A rule like disk above 90% for five minutes posts to Slack, Discord, Acciti, email or a webhook.
- Live logs
- Tail nginx, PHP-FPM, auth, and application logs in the console dock, and search across every server that ships them.
- Uptime & SSL checks
- HTTP, WebSocket and TCP checks made from outside your server. An outage is confirmed only after the failures you set in a row, and certificate expiry is read off the server itself.
The app
One place to see what is wrong across the fleet and fix it without leaving the page.
- Today
- The app opens on what needs someone: failed deploys, certificates that did not issue, crashed workers, missed backups, open incidents. Each row carries its fix, such as Redeploy or Retry certificate, one click or E away. H snoozes a row for a day.
- Live fleet sidebar
- Every server and its sites, with status as it changes, a spinner on anything deploying and the step a provisioning run has reached. Pin servers to the top and filter a long list.
- Action-first ⌘K
- Deploy a site, follow its log, restart nginx or PHP-FPM, or run a recipe, starting from the site or server on screen. An action that cannot run now says why.
- Console dock
- Job output, live log tails and terminals open as tabs along the bottom of the app and keep streaming while you move between pages. ⌃` shows and hides it.
- Browser terminal
- A shell on a server in a console tab, with no SSH key to attach. It asks which account to run as, confirms your password first, records that it happened but never what was typed, and reaps the shell when the tab closes. Admins and owners only.
- Site inspector
- ⌘. opens a site's branch, deploy on push, PHP version, linked databases and maintenance mode beside the page, edited in place. Each change applies at once and can be undone from its toast.
- Infrastructure costs
- Hetzner servers priced from Hetzner's API, object storage from what its buckets hold, and your plan, one total per currency with a monthly history and a CSV export. Right-sizing reads measured load and can change a Hetzner server's type for you, with the downtime stated before you confirm.
Security
Passkeys and two-factor sign-in, encrypted secrets, roles, and a log of who did what.
- Passkeys & two-factor
- Sign in with a passkey, which counts as the second factor on its own, or with TOTP and one-time recovery codes. GitHub sign-in too. Every signed-in browser is listed, and any of them can be signed out.
- Encrypted secrets
- Environment files and SSH keys are encrypted at rest. Revealing or editing them asks for your password again.
- Single sign-onNot available yet
- SAML SSO against your identity provider.
- Teams & roles
- Invite teammates as member, admin, or owner. A member can deploy to production but cannot read the .env behind it or delete the server.
- Audit log
- Every change and every read of a credential is recorded with who did it and how it ended, refused attempts included. Entries cannot be edited and are kept for 400 days.
API, CLI & webhooks
Servers, sites and deploys from a script, with a token scoped to the job.
- REST API & access tokens
- A versioned REST API with scoped, revocable access tokens. No other scope includes secrets:read, so a CI token can deploy without being able to read the .env it deploys against.
- Published OpenAPI specNot available yet
- A generated client, a hosted reference, and per-token rate-limit headers.
- provisore CLINot available yet
- Deploys, environment files, and logs from your terminal. Until it ships, the REST API does the same work from a script.
- Signed webhooksNot available yet
- Deliveries signed, retried on failure, and kept in a log you can read back. Today, deploy, server, certificate, backup, and uptime events reach Slack, Discord, Acciti, email, or your own HTTPS endpoint, sent once. Only the Acciti channel is signed.
Try it on a real server.
14 days free on every plan, on a server you already have or one Provisore creates on Hetzner for you.