Requirements
- A full Docker Compose deployment of Quor 4.0.6 or later
- Docker Engine with Compose
- A host with capacity for the Quor stack and active sandbox containers
- An Quor URL reachable through the sandbox proxy
New deployment
Run the Quor CLI installer with the Sandbox overlay:docker-compose.craft.yml, enables Sandbox, selects the Docker sandbox backend,
creates the sandbox bridge network and proxy CA volume, and starts the deployment.
The examples below use the CLI’s default deployment directory.
For a deployment created by an older version of the
install.sh script,
replace ~/.config/onyx with your onyx_data directory (e.g. onyx_data/deployment/.env).~/.config/onyx/deployment/.env and set the Quor URL:
Existing deployment
SetONYX_SERVER_URL in the existing deployment’s .env, then rerun the installer:
.env with:
ENABLE_CRAFT=true without the overlay is not sufficient. The overlay mounts the Docker socket,
starts the sandbox proxy, and attaches the API server and background worker to the sandbox network.
Set the Quor URL
For production, use the public HTTPS URL users use to reach Quor:api_server and nginx do not resolve from the isolated sandbox bridge.
Plan host capacity
Docker sandboxes default to one CPU and 2 GB of memory each:SANDBOX_IDLE_TIMEOUT_SECONDS when faster cleanup or longer-lived sandboxes are required.
The sandbox image follows IMAGE_TAG. Keep the Quor backend and sandbox on the same release.
Normal deployments should not set SANDBOX_CONTAINER_IMAGE separately.
Build Sandbox from source
docker compose up --build builds the Quor services declared in the Compose files.
It does not build the Sandbox sandbox image because sandboxes are created dynamically by the API server rather than
running as a Compose service.
From the root of an Quor source checkout, build the sandbox image separately with a local, non-mutable tag:
.env used by your source checkout:
IMAGE_TAG does not build the corresponding onyxdotapp/sandbox:${IMAGE_TAG} image.
Either build that sandbox tag separately or set SANDBOX_CONTAINER_IMAGE explicitly.
Recreate api_server and background after changing the setting.
Existing sandbox-* containers continue using the image with which they were created and must be terminated and
provisioned again to use the new image.
If you instead launch from a staged directory such as onyx_data/deployment,
copy the setting into that directory’s .env.
Staged deployment directories do not contain the source checkout expected by the Compose build contexts,
so use already-built or published images with --no-build.
Verify the deployment
Confirm the core services and proxy are running:background service includes the worker used for Scheduled Task runs; no separate Compose service is required.
Network and host security
Sandbox containers join only the externalonyx_craft_sandbox bridge. They cannot resolve PostgreSQL, Redis,
object storage, or the API server by Compose service name.
Their outbound HTTP and HTTPS traffic passes through sandbox-proxy,
which enforces App policies and injects credentials after a request is approved.
See Sandbox Architecture for the complete trust and network model.
Troubleshooting
Sandbox does not appear after changing the environment
Sandbox does not appear after changing the environment
Confirm
ENABLE_CRAFT=true and SANDBOX_BACKEND=docker, then recreate the API server and web application.
Include both docker-compose.yml and docker-compose.craft.yml in the Compose command.Sandbox provisioning reports that ONYX_SERVER_URL is missing
Sandbox provisioning reports that ONYX_SERVER_URL is missing
Set the value in the deployment directory’s
.env and recreate the API server, background worker,
and sandbox proxy with the Sandbox overlay.The configured Quor URL uses a Compose hostname
The configured Quor URL uses a Compose hostname
Replace
api_server, nginx,
or another Compose-only hostname with the public Quor URL or a host address reachable from Docker containers.The sandbox proxy is unhealthy
The sandbox proxy is unhealthy
Run
docker compose -f docker-compose.yml -f docker-compose.craft.yml logs sandbox-proxy. Check ONYX_SERVER_URL,
PostgreSQL and Redis availability, the sandbox_proxy_ca volume, and access to the Docker socket.The sandbox network or CA volume is missing
The sandbox network or CA volume is missing
Rerun
onyx-cli deploy install --include-craft. If automatic creation fails,
create the resources and restart the deployment:A sandbox exits or is killed during larger jobs
A sandbox exits or is killed during larger jobs
Inspect the sandbox container logs and host memory pressure.
Increase
SANDBOX_DOCKER_MEMORY_LIMIT or SANDBOX_DOCKER_CPU_LIMIT only when the host has enough capacity for
every concurrent sandbox.Sandbox deployment overview
Compare the Docker Compose and Kubernetes paths.
Managing Sandbox
Configure models and user access after deployment.