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
CLI users

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.

  1. Open the Forte Console and click Create Project from the dashboard.
  2. Enter a name for your project (for example, my-app).
  3. Click Create — your project is ready.
Open Console →

Step 2: Create a Website

A website connects a GitHub repository to Forte's build and hosting pipeline.

  1. Select your project from the sidebar, then navigate to Websites.
  2. Click Create Website to open the creation form.
  3. 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.
  4. (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.
  5. Click Create Website to start the first deployment.
Open Create Website →

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 Live once the URL is reachable; otherwise shows URL 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.
Open Websites →
Auto-Deploy

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:

  1. On the website, click Deploy a different commit/release….
  2. In the Select a target to deploy dialog, choose the Commits or Releases tab and pick the commit or release you want.
  3. 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:

  1. From the website's detail page, click Edit.
  2. Expand the Environment Variables or Secrets section.
  3. Add KEY=VALUE pairs as needed. Secrets are encrypted at rest and never displayed once saved.
  4. 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:

  1. Repository connection — Forte connects to your GitHub repository through the Forte GitHub App.
  2. 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.
  3. 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.
  4. Publishing — Forte publishes the build output to a global content delivery network. Each push to your configured branch creates a new immutable build.
  5. DNS & TLS — A permanent HTTPS URL is provisioned on the sites.tryforte.dev domain. 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_progress when the build starts, and success or failure when 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.

Next steps

  • Read the Websites reference for the full configuration model
  • Set up a Service if you need an authenticated back-end API
  • Configure your monorepo for projects that deploy more than one resource

Search

Search documentation and console pages