Every PHP developer eventually hits the same wall: your app is ready to ship, but the server setup is a weekend project in itself. Laravel Forge solved this beautifully — but at a per-server monthly cost that adds up fast. Vito does everything Forge does, runs on your own hardware, and costs nothing beyond the VPS you are already paying for.

What is Vito?

Vito is a self-hosted server management and deployment platform built with Laravel. You install it once on a dedicated VPS, then use it to provision and manage as many other servers as you need — deploying PHP and Laravel applications, managing databases, configuring SSL, setting up cron jobs, controlling firewalls, and monitoring queues, all from one dashboard.

“Vito is a self-hosted web application that helps you manage your servers and deploy your PHP applications into production servers without a hassle.”

Vito Source Code on GitHub Vito Documentation Live Demo

Why PHP developers choose Vito

  • 🚀 Deploy Laravel apps in seconds — git push triggers zero-downtime deployment pipelines
  • 🖥️ Provision servers directly from DigitalOcean, Hetzner, AWS, Vultr, and more — or bring your own VPS
  • 🗄️ Database management — create and manage MySQL and MariaDB databases and users from the UI
  • 🔒 SSL made easy — Let’s Encrypt certificates with one click, or paste your own
  • 🔥 Firewall control — manage UFW rules without touching the terminal
  • ⏱️ Cron jobs — create and manage cron entries on any managed server from the UI
  • 🔔 Notifications — Slack, Discord, Telegram, email alerts for deployments and events
  • 🧩 Plugin system — extend with community or custom plugins
  • 🔄 Workflows — visual pipeline editor for complex multi-step deployments
  • ⚖️ AGPL-3.0 licensed — fully open source, self-hosted forever

Vito Tech Overview

Vito is a Laravel 12 / PHP 8.4 application. The frontend is built with React 19 via Inertia.js — meaning there is no separate API for the UI; PHP controllers return Inertia responses that React renders client-side, giving a SPA feel with server-side routing.

How it manages servers

The key technology is PHPSecLib — a pure PHP SSH2 implementation. Vito opens SSH connections to your managed servers and runs shell commands directly, the same way a sysadmin would. This means your target servers need only SSH access — no agents, no Docker, no sidecars.

When you trigger a deployment, Vito dispatches Laravel jobs to a Redis-backed Horizon queue. Workers pick them up and execute SSH commands in sequence: pull the latest code, run composer install, rebuild assets, symlink the new release, restart Horizon workers. All of this is logged and visible in real time in the dashboard.

Stack at a glance

Layer Technology
Backend Laravel 12, PHP 8.4
SSH PHPSecLib 3 (pure PHP, no system ssh binary needed)
Queue Laravel Horizon + Redis
Database SQLite (zero external dependency)
Auth Laravel Fortify + Sanctum API tokens
Frontend React 19 + Inertia.js + TailwindCSS 4
UI components shadcn/ui (Radix UI)
Workflow editor React Flow
Charts Recharts

The SQLite default is intentional — Vito itself is not a data-heavy application. Switching to MySQL or PostgreSQL is supported for larger installations.

Self-Hosting Vito with Docker

Vito ships a fully self-contained Docker image. Everything — Nginx, PHP-FPM, Redis, Supervisor, and the Laravel Scheduler cron — runs inside a single Ubuntu 24.04 container. No external database required.

services:
  vito:
    image: ghcr.io/vitodeploy/vito:3.x
    container_name: vito
    environment:
      NAME: "Your Name"
      EMAIL: "[email protected]"
      PASSWORD: "change_this_password"
      APP_KEY: "base64:UodiJrx3DkcMlizmoimNlDn+yd4q5f2VbkBay19rJwM="
      APP_URL: "http://your-server-ip:8000"
      APP_PORT: 8000
    extra_hosts:
      - 'host.docker.internal:host-gateway'
    ports:
      - '8000:80'
    volumes:
      - vito-storage:/var/www/html/storage
    restart: unless-stopped

volumes:
  vito-storage:

Start it:

docker compose up -d

Then open http://your-server-ip:8000 and log in with the EMAIL and PASSWORD you set.

Generate a fresh APP_KEY before going to production:

docker run --rm ghcr.io/vitodeploy/vito:3.x php artisan key:generate --show

Paste the output as the APP_KEY value.

What runs inside the container

Process Managed by
Nginx Supervisor
PHP-FPM 8.4 Supervisor
Redis Supervisor
php artisan horizon (queue worker) Supervisor
php artisan schedule:run (every minute) Cron

The /var/www/html/storage volume persists your SQLite database, logs, and file storage across container restarts. Back this volume up.

Deploying Your First Laravel App

Once Vito is running:

  1. Add a server — connect an existing VPS via SSH credentials, or provision a new one from a supported cloud provider. Vito installs Nginx, PHP, MySQL/MariaDB, and Supervisor automatically.

  2. Add a source control provider — connect GitHub, GitLab, or Bitbucket under Settings → Source Control. Vito uses this to clone your repository and set up deploy webhooks.

  3. Create a site — point a domain at the server, choose your PHP version, and select your repository. Vito creates the Nginx vhost, configures the document root, and sets up your .env file.

  4. Deploy — click “Deploy” in the UI, or push to your configured branch to trigger an automatic deployment. Vito pulls the code, runs composer install, executes your deployment script, and zero-downtime swaps the release.

The deployment script is fully customisable — add php artisan migrate, npm run build, php artisan horizon:terminate, or anything else your app needs.

Conclusion

Vito fills a real gap for the PHP and Laravel community: a self-hosted server management platform that matches the features of commercial services like Forge and Ploi, without the per-server subscription cost. The SQLite default and single-container Docker setup make it genuinely easy to get running in under five minutes.

The plugin system and visual workflow editor give it room to grow beyond simple deployments into CI/CD territory — making it a solid long-term investment for teams running their own infrastructure.

Alternatives worth comparing:

  • Laravel Forge — the gold standard, cloud-hosted, per-server pricing, tightest Laravel integration
  • Ploi — similar to Forge, supports more languages, cloud-hosted
  • Coolify — self-hosted, Docker/Kubernetes focused, broader language support but less PHP-native
  • Deployer — PHP CLI deployment tool, no UI or server provisioning