Deployment
Docus Plus supports two server deployment paths: a Nitro Node server and a Cloudflare Worker.
Choose the path at build time with NITRO_PRESET; static generation is not supported.
Choose a runtime
| Runtime | Build output | Cache storage in production |
|---|---|---|
node-server | A Nitro Node server | Redis/Valkey when configured; otherwise in-memory storage |
cloudflare_module | A Cloudflare Worker | Cloudflare KV |
Set the runtime explicitly in the environment that builds the application:
NITRO_PRESET=node-server
NUXT_PUBLIC_SITE_URL=https://docs.example.com
The layer defaults to node-server when NITRO_PRESET is not set, but declaring it makes the
deployment contract visible in your environment configuration.
Deploy a Node server
Build the Node target and run the generated Nitro entry point:
NITRO_PRESET=node-server pnpm build
node .output/server/index.mjs
Configure your platform to provide the production environment variables at build and runtime. At a
minimum, include the required core variables such as NUXT_PUBLIC_SITE_URL, API_TOKEN,
NUXT_OG_IMAGE_SECRET, and MISTRAL_API_KEY when those layer features remain enabled.
Configure Node cache storage
For a persistent cache that can be shared by multiple Node instances, provide Redis or Valkey connection settings. The URL form is the shortest configuration:
REDIS_URL=rediss://default:YOUR_REDIS_PASSWORD@redis.example.com:6380
If your provider does not supply a URL, configure REDIS_HOST, REDIS_USERNAME, and
REDIS_PASSWORD. You may also set REDIS_PORT (defaults to 6379), REDIS_DB (defaults to 0),
REDIS_TLS, and REDIS_TLS_REJECT_UNAUTHORIZED. Do not set REDIS_TLS_REJECT_UNAUTHORIZED=false
unless your provider requires it.
When no Redis settings are present, Docus Plus uses its supported in-memory cache driver. It does not persist across process restarts and is not shared by replicas, so use Redis or Valkey for a production deployment with more than one instance or where cache durability matters.
Deploy a Cloudflare Worker
Set NITRO_PRESET=cloudflare_module and configure the Cloudflare values before building:
NITRO_PRESET=cloudflare_module
NUXT_PUBLIC_SITE_URL=https://docs.example.com
CLOUDFLARE_WORKER_NAME=example-docs
CLOUDFLARE_ACCOUNT_ID=YOUR_ACCOUNT_ID
CLOUDFLARE_CACHE_NAMESPACE_ID=YOUR_CACHE_NAMESPACE_ID
CLOUDFLARE_KV_API_TOKEN=cfat_YOUR_TOKEN
Build with the Cloudflare target, then use your normal Cloudflare deployment workflow for the generated Worker output:
NITRO_PRESET=cloudflare_module pnpm build
The layer generates the Worker configuration, including a CACHE binding to
CLOUDFLARE_CACHE_NAMESPACE_ID. The API token needs Cloudflare KV namespace read and write access.
The cache module also uses this token to remove multiple cache keys through the Cloudflare API,
because KV bindings do not support bulk deletion.
cloudflare_module. Do not configure Redis
variables for this target; the Worker uses the CACHE KV binding instead.Verify the deployment
After deploying, check the public system endpoints before routing traffic:
curl --fail https://docs.example.com/api/system/ping
curl --fail https://docs.example.com/api/system/health
The first command returns pong. The second verifies that the selected cache backend can write,
read, and remove a value; it returns HTTP 503 if that check fails. See Server Utils
to configure cache invalidation, endpoint authentication, and health thresholds.
Keep in touch with the latest
Sign up for our monthly deep dives - straight to your inbox.