Skip to main content
An Astro site builds to static HTML by default, and Sevalla publishes it as a static site: the build runs astro build from your Git repository and Cloudflare serves the dist folder. A site that renders pages on demand uses the Node.js adapter and runs as an application instead.

Before you begin

  • A Sevalla company with a payment method, and a GitHub, GitLab or Bitbucket account for the repository. See Git providers.
  • Node.js 24 or later on your computer.

Create the project

Create a project from Astro’s basics template:
The project comes with a .gitignore, a Git repository and a build script that runs astro build.

Prepare the project for Sevalla

A static Astro site needs no changes. astro build writes every page to dist, as about/index.html for /about, which is how a static site serves it. Static sites take the Node.js version from their build settings, not from package.json, and the default, Latest LTS, meets Astro 7’s requirement of Node.js 22.22 or later. Run npm run build && npm run preview and open http://localhost:4321 to check the build locally. Then push the repository that create astro made to your Git provider:

Deploy to Sevalla

1

Choose the repository

In the sidebar, click Static sites, then click Create static site. Under Source, click Private repository, then choose the Git provider, the Repository and the Branch.
2

Check the build settings

Under Build settings, Sevalla shows Framework detected: Astro and fills in the values. Check them:
3

Create the static site

Enter a Name under Details, then click Create static site. Sevalla starts the first deployment right away, and deploys every push to the branch while Auto-deploy is on.
See Build settings for every field.

Verify the deployment

  1. On the Deployments tab, wait for the deployment’s status to change to Deployed. The site’s Status on the Overview tab changes to Live.
  2. On the Overview tab, click Visit site. The Astro starter page opens on the site’s *.sevalla.page domain.
The static site's Details card with its domain, Live status, source repository and the Visit site buttonThe static site's Details card with its domain, Live status, source repository and the Visit site button
If the deployment fails, open it on the Deployments tab and read its build log, then see Troubleshoot static sites.

Render pages on demand

Pages that run code for each request, such as API endpoints, authentication or pages that export prerender = false, need a server. Build them with the Node.js adapter and deploy the project as an application. Add the adapter, the start script and the Node.js version:
Then set astro.config.mjs like this:
astro.config.mjs
The standalone server takes its port from PORT, which Sevalla sets to the web process’s port (8080 by default). Commit and push the changes, then create the application:
1

Create the application

In the sidebar, click Applications, then click Create > Application. Under Source, click Private repository, then choose the Git provider, the Repository and the Branch. Under Location, choose a Data center. Keep the Size at H1 or choose a larger one, then click Create application. The application opens on its Overview tab with the status Not deployed yet: creating an application doesn’t deploy it.
2

Deploy

Click the Overview tab, then click Deploy now under Recent deployments. Check the Branch and click Deploy.
3

Turn on auto-deploy

To deploy every push to the branch automatically, click the Settings tab, then click Update auto-deploy in the Auto-deploy section. Turn on Auto-deploy and click Update auto-deploy. See Deployments.
When the deployment’s status changes to Deployed on the Deployments tab, click the domain under the application’s name, for example storefront-x7k2m.sevalla.app. If the deployment fails, see Troubleshoot builds and deployments. Astro’s hashed assets under /_astro/ are safe to cache for a long time: turn on the CDN on the application’s Networking tab to serve them from Cloudflare. See CDN and edge caching.

Add a custom domain

To serve the site from your own domain, such as shop.example.com, add the domain on the static site’s Domains tab and create the DNS records that Sevalla shows. Applications have a Domains tab too, but custom domains need a web process larger than H1. See Custom domains.