Skip to content

Latest commit

 

History

History
49 lines (31 loc) · 3.87 KB

File metadata and controls

49 lines (31 loc) · 3.87 KB

Cloudflare Build and Deployment

The Node.js Website can be built using the OpenNext Cloudflare adapter. Such build generates a Cloudflare Worker that can be deployed on the Cloudflare network using Cloudflare Workers.

Configurations

There are two key configuration files related to Cloudflare deployments.

Wrangler Configuration

This file defines the settings for the Cloudflare Worker, which serves the website.

For more details, refer to the Wrangler documentation.

Key configurations include:

  • main: Points to the worker generated by the OpenNext adapter.
  • account_id: Specifies the Cloudflare account ID. This is not required for local previews but is necessary for deployments. You can obtain an account ID for free by signing up at dash.cloudflare.com.
    • This is currently set to fb4a2d0f103c6ff38854ac69eb709272 which is the id of a Cloudflare account, named nodejs.org, that the nodejs team is using for testing the Cloudflare deployment.
  • build: Defines the build command to generate Node.js filesystem polyfills required for the application to run on Cloudflare Workers. This uses the @flarelabs/wrangler-build-time-fs-assets-polyfilling package.
  • alias: Maps aliases for the Node.js filesystem polyfills generated during the build process.
  • kv_namespaces: Contains a single KV binding definition for NEXT_INC_CACHE_KV. This is used to implement the Next.js incremental cache.
    • This is currently set up to a KV in the nodejs.org Cloudflare testing account.

OpenNext Configuration

This is the configuration for the OpenNext Cloudflare adapter, for more details on such configuration please refer to the official OpenNext documentation.

Skew Protection

While Vercel offers version skew protection out of the box, such mechanism is not present on the platform level in the Cloudflare network and the Open-next adapter provides its own implementation, for more details refer to the OpenNext official Skew protection documentation.

The OpenNext skew protection requires the following environment variables to be set in the Wrangler configuration file:

  • CF_WORKER_NAME
    • The name of the worker (the same as name)
  • CF_ACCOUNT_ID
    • The id of the Cloudflare account (this is the same as account_id, and again this is set to the Cloudflare testing account used by the nodejs team)
  • CF_PREVIEW_DOMAIN
    • The preview domain for the worker, given that the preview url for the testing Cloudflare deployments is https://nodejs-website.nodejsorg.workers.dev/ the domain here is nodejsorg

Additionally upon deployments an extra CF_WORKERS_SCRIPTS_API_TOKEN environment variable needs to be set. This variable needs to be set to an API token that has the Workers Scripts:Read permission available on the worker's account.

Scripts

Preview and deployment of the website targeting the Cloudflare network is implemented via the following two commands:

  • pnpm cloudflare:preview builds the website using the OpenNext Cloudflare adapter and runs the website locally in a server simulating the Cloudflare hosting (using the Wrangler CLI)
  • pnpm cloudflare:deploy builds the website using the OpenNext Cloudflare adapter and deploys the website to the Cloudflare network (using the Wrangler CLI)