Create a site

Updated October 7, 2026 · 7 min read

Choose the right site type for your project and put a static website or a PHP or Laravel site online from a GitHub repository or a ZIP file, with its own domain and HTTPS.

On this page
  1. Which site type to choose
  2. Step 1: Open the create page
  3. Step 2: Choose the server
  4. Step 3: Pick the site type
  5. Step 4: Choose the framework and source
  6. Step 5: Pick the repository or upload the ZIP
  7. Step 6: Set the domain and folders
  8. Step 7: Choose the options
  9. Step 8: Add environment variables
  10. Step 9: Deploy the site
  11. What happens next
  12. Troubleshooting

Before you start

  • An active server. If you don't have one yet, follow Create a server.
  • Room for another site on your plan. See Usage and limits.
  • Your code in a GitHub repository, or as a folder or .zip file on your computer.
  • A domain you can point at the server, such as example.com or www.example.com.

Which site type to choose

Nuvlo deploys five kinds of sites. The type decides how the code is built and served, and which servers can run it. Static and PHP sites run on any server; the others need a server set up for them.

Site typeUse it forRuns on
WordPressA managed WordPress site with its own database and Redis cache. See Install WordPress.Docker host or general-purpose servers
Node.js appNuxt, Next.js, Express and other Node apps from GitHub, built and kept running. See Deploy a Node.js app.Application or general-purpose servers
HeadlessAn Astro, Next.js or Nuxt frontend that loads its content from one of your WordPress sites. See Headless WordPress.Application or general-purpose servers
PHP & LaravelLaravel, Symfony or plain PHP, including HTML sites with a PHP contact form.Any server
Static websitePlain HTML, or a Vite, Astro or Eleventy build, served straight from Nginx.Any server

This guide walks through PHP & Laravel and Static website. The first PHP site on a server installs PHP-FPM and Composer on it.

Already have the site somewhere else? Use Move an existing site instead, described in Move a WordPress site. It works for WordPress, PHP and HTML sites and keeps the old site online while Nuvlo copies it.

Step 1 Open the create page

Go to Sites, click Create and choose Site. The page Create site opens with the question What would you like to deploy?

If your plan has no room for another site, the Site item shows your usage and links to Billing instead.

Step 2 Choose the server

Under Server, click the server the site should run on. Each card shows the provider, the number of vCPUs and the memory. If you have many servers, use the page numbers below the list.

If you opened the page from a server, that server is already chosen. Click Change server to pick another one.

With a server selected, site types that can't run on it are greyed out and show what they need, for example Requires an application or general-purpose server.

Step 3 Pick the site type

Under Site type, click PHP & Laravel or Static website. The setup continues on the Choose your project step.

You can also drop a project folder or a .zip file on the box Drop a folder or .zip. Nuvlo detects the type and fills in the settings. That path is described in Upload a site from your computer.

Step 4 Choose the framework and source

Under Framework, pick what the project is built with. The choice fills in sensible folders and build steps, which you can change on the next step.

Site typeFrameworks
PHP & LaravelLaravel, Symfony, PHP
Static websiteHTML, Vite, Astro, Eleventy, Other

Under Source, choose where the code comes from:

  • GitHub repository deploys again on every push.
  • ZIP upload deploys a .zip file you upload. To update the site later, you upload a new .zip.

If you skipped the server on the first step, pick it here from the Server list.

Step 5 Pick the repository or upload the ZIP

For GitHub repository: if GitHub isn't connected yet, click Connect GitHub and authorize Nuvlo in the window that opens. See Connect GitHub. Then search your repositories with Search repositories and click the one to deploy.

Nuvlo reads the repository and selects the matching framework, marked Detected. If the code looks like a different site type, a note says so, for example that the repository contains PHP code or looks like a Node.js application.

For ZIP upload: drop the .zip on Upload your site or click it to browse. The archive can be up to 100 MB. If it has a single top-level folder, Nuvlo unwraps it.

Click Next: configure site.

Step 6 Set the domain and folders

Enter the Domain the site answers on, for example example.com. Below it, choose how the www address behaves. Nuvlo picks the usual choice for the domain you typed; click an option to change it.

  • No redirect serves both the www and the non-www address.
  • www → root redirects www.example.com to example.com.
  • root → www redirects example.com to www.example.com.

Then check the folders:

  • Branch (Git only): the branch that is deployed. It defaults to the repository's default branch.
  • Root directory: for monorepos, the folder that holds the site. Leave / otherwise.
  • Web directory (PHP): the folder Nginx serves. Laravel and Symfony use public.
  • Publish directory (static): the folder that is published. Leave it empty to publish the root directory.
  • PHP version (PHP): the PHP version for this site.
  • Build command (static): leave it empty to publish the files as they are. When you enter one, Package manager and Node.js appear so you can choose how it builds.

Step 7 Choose the options

Under Options, switch on what the site needs. Which options appear depends on the site type and framework.

OptionWhat it does
Single-page appStatic sites. For React, Vue or Svelte apps that handle their own page links: every address loads index.html.
Links without .htmlVisitors can open /about instead of /about.html. Old links with .html keep working.
Create a databasePHP sites, only when the server has MySQL, MariaDB or PostgreSQL. Creates a database and user on the server and adds the credentials as DB_* variables.
Update the database on deployLaravel. Runs php artisan migrate before the new version goes live.
Scheduled tasksLaravel. Runs php artisan schedule:run every minute.
Build CSS and JavaScriptPHP sites that compile their styles and scripts first, for example with Vite. Plain HTML and PHP sites leave this off.
Send every page through index.phpPlain PHP. Needed for most CMSes; leave it off for sites made of separate .html or .php files.
Deploy on pushGit only. Every push to the branch updates the live site.

Step 8 Add environment variables

Optional. Under Environment variables, drop a .env file to import it, or click Add variable and enter a name and value. Names may contain only letters, numbers and underscores, and each name can appear once.

You can change variables any time later. See Environment variables.

Step 9 Deploy the site

Click Deploy site. The Deploy step shows each stage as it runs: creating the site, preparing the server, fetching the code, installing dependencies, building, creating the release, going live, configuring Nginx and checking the site.

When it finishes, click Open site to go to the site's page.

If the deploy stops, the failed stage is marked. Click View deploy log to see the full output, or Back to settings if the site wasn't created.

What happens next

Point your domain at the server if you haven't yet: add an A record for the domain with the server's IP address at your DNS provider. If the domain is in a Cloudflare account you connected, Nuvlo can create the record for you; otherwise the deploy screen tells you what to add. HTTPS is issued automatically once the domain points at the server. See Add a domain and SSL certificates.

From the site's page you can follow deployments, change build settings and environment variables, and adjust PHP and routing settings.

Troubleshooting

  • A site type is greyed out: the selected server can't run it. Pick another server, or create a server of the needed type.
  • Another site on this server already uses this domain: delete the old site first, or redeploy that site instead of creating a new one.
  • This server has no MySQL, MariaDB or PostgreSQL installed: create the site without Create a database, or choose a server with a database. See Create a database.
  • Repositories could not be loaded or No repositories found: reconnect GitHub under Git providers and make sure Nuvlo has access to the repository.