VeilBrowserDocs

Configuration reference

Environment variables, ports, volumes and roles for the cluster manager, workers and updater agent.

Every setting each component reads, with its default. Values marked required cause the process to exit at startup if unset.

Cluster manager

The control plane. Listens on PORT behind the OpenResty edge, which owns ports 80 and 443.

Core

Prop

Type

In the container, VEIL_INSTALL_DIR is /srv/cluster-manager, backed by the cm-state volume, and DATABASE_URL is set to the absolute file:/srv/cluster-manager/data/cluster-manager.db for exactly that reason.

Only some paths are anchored to the install root

VEIL_INSTALL_DIR anchors the secrets, TLS material, ACME state and TUS_UPLOADS_DIR, so those survive an image roll wherever the process happens to start. DATABASE_URL is not among them on the cluster manager. (On a worker it is: a file:./ path there does resolve under the install directory.)

Authentication

Prop

Type

Licensing and registry

Prop

Type

Releases and storage

Prop

Type

Edge (OpenResty)

Prop

Type

Docker provisioning and self-update

Prop

Type

Worker (Local API)

Prop

Type

Launch broker

Prop

Type

Set VEIL_MAX_BROWSERS on every worker

The default of 0 means unlimited, so a worker will keep accepting launches until it runs out of memory. Set it to what the host can actually hold, and the load balancer will route overflow to another worker instead of degrading this one.

Container and display

Prop

Type

Updater agent

A sidecar that pulls and recreates a container on request, because a container cannot recreate itself.

Prop

Type

Ports

PortComponentExposure
80OpenResty edgePublic — ACME challenges, or the origin in Cloudflare Flexible mode
443OpenResty edgePublic — console, wss://…/launch, release origin
4180Cluster managerInternal, behind the edge
38923WorkerThe published container image's port. 3000 is the from-source default and appears only in a development checkout
3999Updater agentInternal only — never expose it

Volumes

VolumeMountContents
cm-state/srv/cluster-managerDatabase, auth secret, setup token, TLS and ACME material, logs
cm-webroot/var/www/releasePublished browser builds and profile bundles
cm-openresty…/nginx/conf/conf.dThe rendered edge configuration. Derived from the database — nothing here needs backing up
veil-install/var/veil/installWorker's browsers and profiles trees

All three cm-* volumes are declared with explicit, unprefixed names so they survive re-creation under a different Compose project name. Address them as cm-state, not veil_cm-state.

Workers have host requirements beyond these volumes — the Chromium sandbox, a sized /dev/shm, a writable /tmp. They are stated once, with the reason for each, in Run a worker.

Console roles

RoleCan
adminEverything below, plus manage users, apply config reloads that touch the live load balancer, and delete releases
operatorEdit the cluster and fleet, publish and activate releases, preview renders, manage uploads
viewerRead-only dashboards

The first admin is created in the first-run wizard from a one-time setup token. Add more users under Users in the console.

Next steps

Was this page helpful?

On this page