AI Decision System
Replayable, offline-verifiable records for AI-assisted go/no-go decisions: experiment promotions, typed model answers and human-approved actions.
Laravelify is an open-source, self-hosted control panel that deploys Laravel, PHP, Node.js, React, Vue, Angular, Next.js, Nuxt, and more to your own Ubuntu server, with live monitoring, attack detecti
개발 도구PHP · BladeGitHub @laravelify-cloud온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
Open-source, self-hosted deployment panel. Push to deploy Laravel, PHP, Node.js, React, Vue, Next.js, Nuxt and more to your own Ubuntu server, with S3 backups, live monitoring, and Telegram alerts.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗[!NOTE] Laravelify is in public beta. It runs real production sites, but things can still change between versions. Try it on a fresh server first, keep backups (it can make them for you), and report what breaks.
Laravelify is an open-source, self-hosted control panel that turns one Ubuntu server into a home for all your apps:
Push to GitHub and your site deploys. Open the panel and you see live traffic, errors, attacks, and server load, browse and edit your databases, read logs, and run commands. Your server, your data, no monthly bill, no per-seat pricing.
Inspired by Coolify, built with Laravel 13, Livewire 4, Alpine, and Tailwind 4, and without Docker: PHP runs on nginx + PHP-FPM (Laravel with Supervisor workers), Node.js servers run under PM2, and front-end builds are served as files by nginx. Fewer moving parts, less memory, and nothing between your app and the server.
On a fresh Ubuntu 22.04, 24.04, or 26.04 server, as a user that can use sudo:
curl -fsSL https://cdn.laravelify.cloud/install.sh | sudo bash
You always get the latest release. The installer asks for four things:
| Prompt | Example | Used for |
|---|---|---|
| MySQL root password (twice) | a long random password | MySQL root, phpMyAdmin sign-in, site databases |
| Panel domain | panel.example.com | The panel's address |
| phpMyAdmin domain | db.example.com | phpMyAdmin's address |
| Cloudflare tunnel token | eyJh… | Connects the server to Cloudflare (HTTPS, no open ports) |
Then it works through the install one step at a time, with a spinner, a check mark, and the time of every step:
┌ Laravelify installer · self-hosted deployment panel
│
◇ Settings
│ Server Ubuntu 24.04.3 LTS
│ PHP-FPM 8.3 8.4
│ Node.js 22 24 (system: 24)
│ Log /var/log/laravelify-install.log
│
◆ Downloaded Laravelify 0.3.0-beta.51 4s
◆ Installing nginx, Redis, Supervisor, Git, and tools 38s
◆ Installing PHP 8.3 (FPM, CLI, MySQL, Redis, GD, intl, and more) 51s
◆ Installing PHP 8.4 (FPM, CLI, MySQL, Redis, GD, intl, and more) 47s
◆ Installing MySQL 8.4 1m 12s
◆ Installing phpMyAdmin 22s
◆ Installing Node.js 24, npm, and PM2 31s
…
◆ Turning on the firewall (SSH, 80, 443) 2s
│
└ Laravelify 0.3.0-beta.51 is installed (7m 40s)
It ends with your setup link (https://panel.example.com/setup?token=…): open it to create the admin account with two-factor sign-in. Only that link opens the setup page, so nobody who finds a fresh panel first can claim it.
By default you get PHP-FPM 8.0 to 8.5 and Node.js 20, 22, and 24. Install only what your sites use with the install command builder, or pass the options yourself:
curl -fsSL https://cdn.laravelify.cloud/install.sh | sudo bash -s -- --php=8.3,8.4 --node=22,24 --panel-domain=panel.example.com
| Option | Description |
|---|---|
--php=8.3,8.4 | PHP-FPM versions (8.0 to 8.5). The panel needs 8.4 or newer; 8.4 is added if neither 8.4 nor 8.5 is chosen. |
--node=22,24 | Node.js majors (20, 22, 24). The newest is the system Node.js. |
--panel-domain=HOST | The panel's domain (otherwise asked) |
--phpmyadmin-domain=HOST | phpMyAdmin's domain (otherwise asked) |
--help | All options |
The MySQL password and the tunnel token are always asked on the server, so they never end up in a copied command. For unattended installs every prompt is also an environment variable: see the installation guide.
| Area | Packages |
|---|---|
| Web and PHP | nginx, PHP-FPM with the extensions Laravel needs (MySQL, Redis, GD with JPEG/PNG/WebP, intl, bcmath, zip, mbstring, curl, xml), Composer |
| Data | MySQL 8.4 LTS, Redis, phpMyAdmin (one-click sign-in from the panel) |
| Node and processes | Node.js through n, PM2, Supervisor |
| Network and security | cloudflared, ufw (only SSH, 80, and 443 open), the panel's own user, a user per website, a sudo rule limited to one checked script |
The panel lives in /opt/laravelify, websites in /var/www/<slug>, and the install log in /var/log/laravelify-install.log.
.env editor with secrets hidden, nginx editor with a config test and automatic rollback, Supervisor and PM2 process editors.vendor, node_modules, build output).Proceed? (Y/n)), Ctrl+C, colours, and / autocomplete for Artisan, npm, PM2, and Supervisor commands.flowchart LR
visitor([Visitor]) --> cf[Cloudflare]
cf -- tunnel --> cloudflared
subgraph server [Your Ubuntu server]
cloudflared --> nginx
nginx --> fpm[PHP-FPM pool per site user]
nginx --> pm2[PM2: Node.js, Next.js, Nuxt]
nginx --> files[Static builds]
fpm --> mysql[(MySQL 8.4)]
fpm --> redis[(Redis)]
supervisor[Supervisor: queues, schedulers, Reverb] --> mysql
panel[Laravelify panel] -- sudo, one checked script --> nginx
panel --> supervisor
panel --> pm2
end
github[GitHub push] -- webhook --> panel
panel -- alerts --> telegram[Telegram]
panel -- backups --> s3[(Your S3 bucket)]
/var/www/<slug>), an nginx server block, and, depending on its type, a PHP-FPM pool, PM2 app, or Supervisor programs that the panel writes and keeps in step.scripts/host-apply.sh, a single script that checks every argument and file before it writes nginx, Supervisor, PM2, or PHP-FPM settings.| Type | How it runs | Versions |
|---|---|---|
| Laravel | nginx + PHP-FPM, Supervisor queue and scheduler workers, optional Reverb | PHP 8.0–8.5 |
| PHP | nginx + PHP-FPM | PHP 8.0–8.5 |
| Express, NestJS, Node.js | PM2 behind nginx | Node 20, 22, 24 |
| Next.js, Nuxt, SvelteKit | PM2 (Next.js standalone supported) behind nginx | Node 20, 22, 24 |
| React, Vue.js, Angular, Svelte, Astro | Built on the server, served as files by nginx | Node 20, 22, 24 |
| Static HTML | Served as files by nginx | — |
| Minimum | Recommended | |
|---|---|---|
| Ubuntu | 22.04 LTS | 24.04 LTS (26.04 works, PHP from the Sury repository) |
| CPU | 2 vCPU | 4 vCPU |
| Memory | 2 GB | 4 GB or more (Next.js and Nuxt builds need memory) |
| Disk | 30 GB SSD | 60 GB SSD or more |
| Network | A domain on Cloudflare and a tunnel token |
# Update to the latest release (keeps your settings, sites, and data)
sudo bash /opt/laravelify/scripts/update.sh
# Running the install command again also offers an update;
# repair the whole install (re-checks every package) with:
curl -fsSL https://cdn.laravelify.cloud/install.sh | sudo LARAVELIFY_REINSTALL=1 bash
Updates download the newest release, run the migrations, restart the panel's workers without killing a deploy in progress, and add anything newer installs have (like PHP GD). See Updating and Uninstall.
.env values) are only shown after a fresh authenticator code.laravelify with its own PHP-FPM pool; every website runs as its own user (lfy-<slug>), so a site cannot read the panel or another site./tmp, and a time limit.scripts/host-apply.sh as root, and that script validates everything it is given.Report vulnerabilities privately as described in SECURITY.md.
Laravelify has a built-in MCP server. Create a token in Settings → MCP, connect Claude Code, Claude Desktop, Cursor, or any MCP client, and say things like:
Deploy acme/shop on shop.example.com with a MySQL database, then show me the log.
The assistant can create and deploy websites, read deploy logs and site logs, set environment variables, change domains and redirects, run a command in a site folder, upload files, import a database dump, and run backups. It is told to ask you before deleting anything.
git clone https://github.com/laravelify-cloud/laravelify.git && cd laravelify
composer install && cp .env.example .env && php artisan key:generate
php artisan migrate
npm install && npm run dev
php artisan serve
On Windows and macOS (or with LARAVELIFY_HOST_COMMANDS=false) system commands are not run: every nginx, Supervisor, and PM2 file is written to storage/app/rendered so you can see what would be applied.
php artisan test --compact # PHPUnit
vendor/bin/pint # code style
| Path | What |
|---|---|
app/Livewire | The pages (one component per page or tab) |
app/Services | Deployer, backups, monitoring, database tool, host commands |
app/Mcp | The MCP server and its tools |
scripts/install.sh, scripts/update.sh | Installer and updater |
scripts/host-apply.sh | The only script the panel runs as root |
resources/views, resources/js, resources/css | Blade, Alpine, AG Grid, xterm.js, Tailwind |
tests/ | Feature and unit tests |
Read CONTRIBUTING.md before opening a pull request. Releases are tagged vX.Y.Z; the Release workflow builds the assets and attaches laravelify.tar.gz and install.sh to the GitHub release, and cdn.laravelify.cloud/install.sh always runs the newest one.
| Repository | What it is |
|---|---|
| laravelify | The panel, the installer, and the releases (this repository) |
| laravelify-docs | The documentation at docs.laravelify.cloud |
| laravelify-website | The website and install command builder at laravelify.cloud |
| .github | The organization profile and shared community files |
Laravelify is free and has no paid plan. If it saves you time:
Built and maintained by Arshad Arshadli in Azerbaijan 🇦🇿. Say hi on X or LinkedIn.
Laravelify is open-source software licensed under the MIT license. Brand assets are in brand/.