Skip to main content
Use the pull-only Docker Compose stack to evaluate Den web, Den API, and organization management on one machine. The stack downloads published OpenWork images and MySQL, runs database migrations, and starts the browser experience at http://localhost:3005.
This stack is for evaluation only. Its HTTP ports bind to loopback, but it enables public signup by default, uses development credentials, keeps MySQL on one local Docker volume, and uses a stub worker provisioner. Do not change the port bindings to expose it on a network or use it for production data.

Before you start

Install Docker Engine or Docker Desktop with Docker Compose v2. The machine must be able to pull images from GitHub Container Registry and Docker Hub.

Start the stack

  1. Download the Compose file into an empty directory:
    Continue only when the checksum command prints docker-compose.eval.yml: OK. The commit-specific URL and checksum ensure you run the reviewed Compose definition rather than the latest content of a mutable branch.
  2. Start the services and wait for their health checks:
  3. Open http://localhost:3005 and create an account.
The stack exposes Den web on 127.0.0.1:3005 and Den API on 127.0.0.1:8788. MySQL is reachable only inside the Compose network.

Configure the evaluation

Set variables in your shell before running docker compose, or save them in a .env file beside docker-compose.eval.yml. The setup command writes unique secrets to .env so subsequent Compose commands reuse them. Keep this file private and do not commit it. To rotate the secrets, replace their values before recreating the services. The Compose file pins the MySQL, Den API, and Den web images to immutable digests. Download a newer Compose file to evaluate a newer release rather than changing only an image tag. If you create .env separately, generate unique secrets with:

Connect from another machine

Keep the Compose ports bound to loopback. To evaluate a stack running on a remote host, create an encrypted SSH tunnel from your local machine:
Then open http://localhost:3005. Authentication and API traffic travel through the SSH tunnel rather than across the network as plaintext HTTP.

Inspect or stop the stack

View service state and logs:
Stop the services while retaining the evaluation database:
Stop the services and permanently delete the evaluation database:

Evaluation limitations

The stack does not provide:
  • production worker provisioning or cloud sandboxes;
  • transactional email or email verification;
  • TLS termination, private ingress, or secret management;
  • database high availability, backups, or a restore plan; or
  • production-safe authentication and database defaults.
For production, use the supported private-cloud architecture with Kubernetes, Helm, managed MySQL, HTTPS, private networking, managed secrets, and the secure first-administrator flow.