Deploying websites
This guide shows you how to deploy a Website to Forte. Use the console or CLI tab that matches your workflow.
Prerequisites
- A Forte account
- A GitHub repository with your website's source code
- The Forte GitHub App installed on your repository
If you prefer the CLI, follow the Forte CLI installation guide before continuing.
Step 1: Create your Project
Projects group related resources. You need at least one project before creating a website.
- Open the Forte Console and click Create Project from the dashboard.
- Enter a name for your project (for example,
my-app). - Click Create — your project is ready.
Step 2: Create a Website
A website connects a GitHub repository to Forte's build and hosting pipeline.
- Select your project from the sidebar, then navigate to Websites.
- Click Create Website to open the creation form.
- Fill in the website details:
- Website Name — A unique name within the project (for example,
marketing-site). - GitHub Repository — Select from repositories where the Forte GitHub App is installed.
- Build trigger — Choose On every push to branch for continuous deployment, or On GitHub release published for tagged-release deploys.
- GitHub Branch — The branch to deploy from (typically
main). Required when the trigger is push-based.
- Website Name — A unique name within the project (for example,
- (Optional) Expand the Advanced section to override Forte's framework auto-detection by setting the build command, output directory, install command, package manager, or Node.js version.
- Click Create Website to start the first deployment.
Step 3: Watch your deployment
Once created, Forte starts the first build automatically. You can follow along in real time on the website's detail page:
- Public URL — Shown at the top once the build is live (
https://{websiteId}.sites.tryforte.dev). - Domain status — Shows
Liveonce the URL is reachable; otherwise showsURL Pending. - Detected framework — Forte fills this in after the first successful build (for example,
Next.js,Vite,Astro). - Recent deployments — A timeline of each build with logs and status.
Once configured, Forte automatically deploys when you push to your configured branch — or when you publish a GitHub release, depending on your trigger. You don't need to do anything for routine deployments.
Step 4: Deploy a specific commit or release (optional)
To redeploy a specific target — for example, to roll back to a previous build:
- On the website, click Deploy a different commit/release….
- In the Select a target to deploy dialog, choose the Commits or Releases tab and pick the commit or release you want.
- Confirm to start the build.
You can also click Retry Deployment on any past deployment to rebuild it as-is.
Setting environment variables and secrets
To add or update environment variables and secrets:
- From the website's detail page, click Edit.
- Expand the Environment Variables or Secrets section.
- Add
KEY=VALUEpairs as needed. Secrets are encrypted at rest and never displayed once saved. - Click Save — Forte triggers a new build that picks up the new values.
The FORTE_ and AWS_ prefixes are reserved, and the names Forte injects automatically (FORTE_PROJECT_ID, FORTE_WEB_APP_ID, and their NEXT_PUBLIC_, VITE_, REACT_APP_, NG_APP_, PUBLIC_, and NUXT_PUBLIC_ variants) are reserved too — attempting to set any of them is rejected. See Automatic identifiers for the full list.
Support for monorepos
If your repository contains more than one project (for example, a Next.js app in apps/web/ and a Node API in apps/api/), set the Subdirectory field when creating the website. Forte builds from that subdirectory only.
For repositories where you want to deploy both a website and a Service from the same repo, create both resources separately and configure each one's subdirectory accordingly. See the monorepo guide for more.
What happens behind the scenes
When you create a website, Forte runs a multi-stage pipeline:
- Repository connection — Forte connects to your GitHub repository through the Forte GitHub App.
- Framework detection — Forte auto-detects your framework, recognizing Next.js, Vite, Astro, Create React App, Vue, Angular, plain HTML, and more out of the box. You can override the detection by setting the build command and output directory manually.
- Build — Forte builds your code in a Linux build environment using your selected Node.js version and package manager. Environment variables configured on the website are available during the build (as standard env vars and
BUILD_ENV_VARS_B64). For static websites, secrets are also available during the build (as standard env vars, transported separately from environment variables) — they're never written to build logs. For server-rendered (SSR) websites, secrets are not part of the build; they're injected into the Lambda runtime instead, after the build completes. See Environment Variables and Secrets for details. - Publishing — Forte publishes the build output to a global content delivery network. Each push to your configured branch creates a new immutable build.
- DNS & TLS — A permanent HTTPS URL is provisioned on the
sites.tryforte.devdomain. This URL never changes for the lifetime of the website.
Each step is logged and visible on the website's deployment detail page.
GitHub deployment status
Like services, websites report deployment status back to your GitHub repository using GitHub Deployments. For each deployment, Forte:
- Creates a GitHub Deployment linked to the commit (or branch HEAD for manual triggers).
- Posts status updates as the pipeline progresses:
in_progresswhen the build starts, andsuccessorfailurewhen it completes. - Links back to the Forte Console — each status includes a link to the deployment detail page with full build logs.
The deployment environment name in GitHub is set to your website name, so you can track deployment history per website directly in your repository's Environments tab.