Using the panel

Projects

A project is a git repository checked out on the server, with everything it needs around it: domains, a database, workers and cron jobs. The wizard sets all of it up in one pass.

The projects list

Projects lists every project with its repository, branch, domains, status and when it was last deployed, with a Deploy button on each row. Search with Ctrl+K.

Projects: repository, domains, status and last deploy for every project
Projects: repository, domains, status and last deploy for every project

Creating a project

Projects → New project opens a six-step wizard. Your progress is saved after step 1, so you can leave and come back: unfinished projects show Continue on the projects list.

Step 1 of the wizard: repository, type, PHP version and public directory
Step 1 of the wizard: repository, type, PHP version and public directory
  1. Repository

    Paste the clone URL. SSH URLs (git@github.com:org/repo.git) are recommended and get a deploy key; HTTPS URLs work for public repositories. The project name and folder (/home/deploy/<name>) are filled in from the repo name.

    Choose the type (Laravel, PHP or Static), the PHP version (any installed on the server) and the public directory, public by default. nginx serves only that sub-folder, never the project root, so .env, vendor and source code are never web-accessible. The panel refuses an empty value, . or ...

  2. Access

    For SSH repositories the panel generates a read-only ed25519 deploy key just for this project. Copy it and add it to the repository (GitHub: Settings → Deploy keys → Add deploy key, leave write access off; there's a direct link for GitHub repos). Then click Test connection; on success you can pick the branch to deploy from a list.

  3. Domains

    Add one or more domains or sub-domains, each with optional www and SSL. Parked domains you added earlier are suggested. You can skip this and add domains later. Point the DNS A records at the server first if you want SSL during setup.

  4. Database

    "Does this project need a database?" Yes creates a MySQL database and user (named after the project) with a strong generated password and all privileges on that database only. Or pick an existing, unlinked database.

  5. Setup & deploy

    For Laravel, toggle a queue worker (queue:work under Supervisor), the scheduler (cron running schedule:run every minute) and a front-end build (npm ci && npm run build).

    First-time setup runs once after cloning. The Laravel default is composer install, key:generate (only if APP_KEY is empty), storage:link, migrate --force and optimize. Before it runs, the panel copies .env.example to .env and fills in APP_NAME, APP_ENV=production, APP_DEBUG=false, APP_URL and the DB_* credentials.

    The deploy script runs on every deploy. The default is just git pull; the Laravel preset adds Composer, migrations, optimize and queue:restart.

  6. Review

    Check the summary and click Create project. A live log shows each stage: clone → .env → setup commands → permissions → nginx per domain → SSL → cron → workers. When it finishes you get a link to the project.

If setup fails (most often a missing deploy key), the project is marked Failed. Fix the cause, then press Retry setup on the project page. Domains, databases, workers and cron jobs created the first time are reused.

The project page

A project's overview: current release, domains, database, workers and cron
A project's overview: current release, domains, database, workers and cron
TabWhat's there
OverviewCurrent release (commit, author, time), last deploy result, Check for updates (fetches and lists commits not yet deployed), and cards for domains, database, workers, cron and FTP with quick-add buttons. A live log appears while a deploy is running.
DeploymentsHistory of setups and deploys with status, trigger (manual / webhook / wizard), commit and duration. Select one to read its full log; running ones stream live.
Deploy scriptEdit the deploy and first-time setup scripts. One-click presets; Ctrl+S saves.
EnvironmentThe project's .env. Secrets (*PASSWORD*, *KEY*, *SECRET*, *TOKEN*) are masked until you click Reveal & edit. Laravel caches config, so deploy after changing values.
DomainsThe project's domains with SSL state; add new ones, connect a parked domain, issue certificates or disconnect (park) a domain.
DatabaseConnection details for linked databases with password reveal/rotate and an Adminer link. Creating one here can write the credentials into the project's .env for you.
Workers & cronThe project's Supervisor workers and cron jobs, with project-aware templates.
LogsThe project's application logs, its domains' logs, its workers and cron output. See Logs.
SettingsName, branch, type, PHP version and public directory (changing PHP version or directory updates nginx automatically). Webhook settings, deploy key and the danger zone.

Deleting a project

Settings → Danger zone. Workers, cron jobs, FTP accounts and the deploy key are always removed. You choose whether to delete the files, drop linked databases, and delete the domains (otherwise they're parked). You have to type the project's slug to confirm.