Picked Anything from git? Your site is ready for your own code, from GitHub, GitLab or any other Git host. We install nothing in it: you connect a repository and every deploy builds and publishes it.
What the site runs
Anything from git runs on our PHP stack: nginx and PHP-FPM, with Composer. Until your first deploy it shows a page saying Your site is ready. It suits plain PHP, Symfony, CodeIgniter, Slim, or any app whose pages are files in a public/ folder.
- For a Laravel app, the Laravel entry is the better pick: Laravel: your first steps.
- For a Node.js server (Express, Next.js, Nuxt and the like), pick Any Node.js app instead: this site would build your front end, but nothing would start a Node.js server. See Node.js apps.
- For files only, a static site is simpler.
Connect your repository
- Open Sites → your site → Deploys. On a new site the Deploy from your repository panel is already open.
- Connect your Git host and pick the repository, or paste its URL. Deploy from Git walks through both, including private repositories.
- We look inside the repository (on GitHub, GitLab and connected Git hosts) and show it under Repository layout, starting with We found:, for example PHP app at the top level, web root public/. Build: composer install.
- If that is right, press ✓ Deploy this way. Progress shows at the top of the tab.
How we read your repository
We decide what your repository is from the files at its top level:
- WordPress site:
wp-config.php,wp-config-sample.php,wp-load.phpor awp-content/folder. - Laravel app:
artisanandcomposer.json. - Symfony app:
bin/consoleandcomposer.json. - PHP app:
composer.json,index.phporpublic/index.php. - Node.js app:
package.jsonand noindex.html. - Static site:
index.htmlorpublic/index.html(with or without apackage.json). - Docker project: only Docker files. We do not run Docker, so there is nothing to deploy; put the app itself (
composer.json,package.jsonorindex.html) in the repository.
The web root is the folder visitors are served from. On this site it is public/.
When the repository does not fit
The Repository layout panel tells you before anything is deployed:
- This repository cannot be deployed here as it is. Two layouts cannot be published yet: an app kept in a subfolder (such as
app/orsrc/), and a PHP app whose pages are not inpublic/. Move the app to the top of the repository, and the files visitors load (index.php) intopublic/. - This is a Node.js app, and … runs PHP (or another mismatch). The panel lists your options. To go ahead, tick Deploy anyway — I mean to put this repository on … and press Deploy anyway.
What a deploy runs
Each deploy builds in a fresh build container, then publishes to your site:
- Install and Build, only when your repository has a
package.json:npm ci, then yourbuildscript. - Tests, if you set a test command. A failing test stops the deploy and your site stays as it was.
- On your site:
composer install --no-devwhen there is acomposer.json.
Change the install, build and test commands under Build steps: Build steps.
A database
This site has no database to start with. To add one, open the site's Databases tab, choose an Engine and press Create database. Your app receives the connection as DB_* environment variables; How your app reads this on the same tab lists them.