Deploy App
PHP, Laravel and WordPress
Deploy a PHP site, a Laravel app or a WordPress blog to your server — HTTPS, uploads and databases handled.
PHP
Choose PHP as the project type. Your code runs on Apache with PHP (8.4, 8.3 or 8.2), with the extensions most sites need (MySQL / MariaDB, PostgreSQL, GD, intl, zip, Redis, OPcache).
- Composer: if your project has a
composer.json, its packages are installed at each deploy (commit yourcomposer.lock). - Web root folder: leave empty when
index.phpis at the top; setpublicorwebif your site lives in a sub-folder. .htaccessfiles work.- Persistent folders: anything users upload is lost on the next deploy
unless its folder is listed here (for example
uploads). Those folders are kept on the server across deploys. - Uploads up to 64 MB.
Laravel
Choose Laravel. On top of PHP:
composer install, and your Vite assets are built (npm run build).APP_KEYis generated for you if your.envdoesn't have one, with sensible production defaults (APP_ENV=production, logs to the app's Logs tab). Paste your own.envto override any of them.storage/app(uploaded files) is kept across deploys.- Config, routes and views are cached each time the app starts.
- Run database migrations on every deploy: when on,
php artisan migrate --forceruns before the new version goes live. If a migration fails, the deploy stops and the previous version keeps running. - To use a database from the Databases page, set
DB_HOSTto its container name (for exampledcp-mysql-shop) — they share a private network.
Queue workers and the scheduler aren't run yet: use a custom container from the same image if you need them.
WordPress
Choose WordPress. There's no code to give: we run the official WordPress image, with its files on a volume so plugins, themes and uploads survive every update.
- Database: by default WordPress gets its own MariaDB, created and kept
with the site. Or choose Use my own database and set
WORDPRESS_DB_HOST,WORDPRESS_DB_USER,WORDPRESS_DB_PASSWORDandWORDPRESS_DB_NAME. - After the first deploy, open your domain and finish WordPress's 5-minute install. Then Apply SSL on the Domains tab.
- Uploads up to 64 MB; HTTPS works behind the panel without redirect loops.
- Don't change
WORDPRESS_DB_PASSWORDafter the first deploy: the database keeps the password it was created with. - Deploy pulls the WordPress image again; WordPress itself and plugins update from its admin screen as usual.
