Easy Laravel Deployments
One command installs a complete production stack. One command deploys your app.
No panel, no bloat — so you can focus on what you love: building your application.
Website · Docs · Report a bug
Cipi turns any Ubuntu VPS into a multi-app PHP hosting platform — Laravel by default, with full isolation, zero-downtime deploys, SSL, queue workers, and S3 backups — all managed from a single CLI. Use --custom for simple sites: classic deploy (no releases/shared), configurable docroot and Nginx (try_files, entry point), no DB or cron.
No web panel. No bloat. No sleepless nights fighting Nginx configs or PHP-FPM pools.
Just SSH and the cipi command.
$ wget -O - https://cipi.sh/setup.sh | bashWorks on DigitalOcean, AWS EC2, Hetzner, Vultr, Linode, OVH, Google Cloud, Scaleway, and more.
1. Install Cipi on a fresh Ubuntu 24.04 or 26.04 VPS (~10 minutes):
wget -O - https://cipi.sh/setup.sh | bash2. Create your app (Laravel by default, or cipi app create --custom for a simple deploy):
cipi app create
# username, domain, git repo, branch, PHP version
# → Laravel: user, DB, Nginx, workers, cron, webhook
# → Custom: user, Nginx, PHP-FPM; Git optional (empty = SFTP-only to ~/htdocs)3. Deploy and go live:
cipi deploy myapp
cipi ssl install myappThat's it. Your Laravel app is live.
Every app gets a fully isolated environment. Laravel (default): zero-downtime deploy, DB, workers, cron, webhook. --custom: classic deploy into htdocs, configurable docroot only; Nginx uses index index.html index.php, try_files $uri $uri/ /index.php?$args, error_page 404 /404.html. No DB, no .env, no cron, no workers.
| Component | Details |
|---|---|
| Web server | Nginx reverse proxy with per-app virtual hosts, optimized for Laravel |
| PHP & Composer | Selectable per app — PHP 7.4 to 8.5, hot-swappable |
| Database | MariaDB, auto-tuned to RAM, dedicated DB and user per Laravel app |
| Queue workers | Supervisor with per-app pools (Laravel) — add, scale, monitor |
| Deployments | Deployer — Laravel: atomic symlink, 5 releases, rollback; Custom: clone into htdocs |
| SSL | Let's Encrypt via Certbot with SAN support and auto-renewal |
| Security | Fail2ban + UFW, per-app Linux user + PHP-FPM pool + SSH key |
| Backups | Automated DB and storage dumps to S3 or any compatible provider |
Each app runs under its own Linux user with an isolated filesystem, PHP-FPM pool, and database. A compromise in one app cannot touch the others. Configs are encrypted at rest with AES-256 (Vault). GDPR-compliant log rotation included.
Deployer clones your repo, runs composer install, links storage, runs migrations, and swaps the symlink atomically. Roll back to any of the last 5 releases instantly.
Native GitHub and GitLab integration — deploy keys and webhooks configured automatically. HMAC signature verification. Or plug in any custom Git provider.
Laravel (default) — zero-downtime deploy with releases, shared storage, workers, scheduler, webhook. --custom — for simple sites (e.g. WordPress, static+PHP): classic deploy into htdocs (no current/shared), choose docroot only (e.g. /, www, dist). Nginx: index index.html index.php, try_files $uri $uri/ /index.php?$args, error_page 404 /404.html. No DB, no .env, no cron, no workers, no webhook — just Nginx, PHP-FPM, and deploy key.
Add multiple domains or subdomains to any app. A single SAN certificate covers all of them. Auto-renew handles the rest.
Cipi ships with a built-in MCP server. Laravel first: install the cipi-agent Laravel package, point your AI client at the endpoint, and deploy, rollback, query logs, and run Artisan commands via natural language — no SSH required.
Works with Claude, Cursor, VS Code, OpenAI, Gemini, and more.
composer require cipi/agentMCP tools exposed: health, app_info, deploy, logs, db_query, artisan.
When you need to manage apps programmatically or integrate with external pipelines, enable the optional API layer with a single command. Bearer tokens, granular permissions, OpenAPI spec available, interactive Swagger docs.
Multi-server control panel for operators who prefer a browser over SSH. Register N Cipi servers with API tokens, switch between them from any page, and manage apps, databases, deploys, SSL, aliases, and logs with Livewire UI and async job overlays. Install with cipi gui <domain> — requires cipi api on each managed server. Session login with optional Google Authenticator 2FA.
Move entire stacks or single apps between Cipi servers — for migration, failover, or disaster recovery. Archives are encrypted in transit.
A standalone Go binary that talks to the Cipi REST API from your local machine — no SSH required. Manage apps, databases, SSL, aliases, and deployments from any terminal. Pre-built binaries for Linux and macOS (amd64/arm64).
An official provisioning module that bridges the WHMCS lifecycle to the Cipi REST API — automate app creation, deletion, SSL certificates, deployments, and package changes for your hosting customers. Self-contained drop-in, no Composer dependencies.
- Solo developers — ship Laravel first, without the DevOps overhead
- Agencies — one VPS, many isolated client projects (Laravel first), onboard a new client in minutes
- Startups & SaaS — atomic deploys, instant rollbacks, grow without changing your workflow
- Datacenters & automation pipelines — every Cipi command is a plain shell call, wire it into Ansible or any provisioning script
- Ubuntu 24.04 LTS or 26.04 LTS (no other releases)
- Root access
- Ports 22, 80, 443 open
Full docs at: cipi.sh/docs
Cipi is open source and MIT licensed. Issues, PRs, and feedback are welcome on GitHub.
Made with ❤️ by Andrea Pollastri