zshot/cliDownload

Docker

scaleassembly/zshot-server

Runs ZShot’s HTTP server in container mode on 0.0.0.0:3000, with a built-in health check. Use it to deploy ZShot as a service: supply a license and it serves with no flags.

docker run --rm -p 3000:3000 \
  -e ZSHOT_LICENSE="MY-ZSHOT-LICENSE-KEY" \
  scaleassembly/zshot-server

The image exits at startup without a license. Environment lists the variables that set the port, authentication and concurrency, so a deploy needs no custom command. Flags after the image name override the defaults. See Server for the endpoints and tuning flags.

scaleassembly/zshot

Runs zshot with the arguments you pass, as on the command line, and applies --container. Use it for captures, or for a server you configure entirely with flags:

docker run --rm -p 3000:3000 \
  -e ZSHOT_LICENSE="MY-ZSHOT-LICENSE-KEY" \
  scaleassembly/zshot \
  --server --server-bind-address 0.0.0.0

--server-bind-address 0.0.0.0 listens on all interfaces; the server binds 127.0.0.1 by default, which is unreachable from outside the container.

License

Supply the license one of two ways.

Set the ZSHOT_LICENSE environment variable to your license key:

docker run --rm -p 3000:3000 \
  -e ZSHOT_LICENSE="MY-ZSHOT-LICENSE-KEY" \
  scaleassembly/zshot-server

Or mount a zshot.toml and point --config at it:

docker run --rm -p 3000:3000 \
  -v /host/zshot.toml:/etc/zshot/zshot.toml:ro \
  scaleassembly/zshot-server \
  --config /etc/zshot/zshot.toml

Both images run in container mode, so a license activated from a key is released when the container stops and the next start activates it again. That keeps a disposable or serverless deployment within its activation limit without a writable config file. Give the container time to shut down on SIGTERM: a container killed outright holds its activation until it ages out server-side.

Sandbox

Both images keep Chromium’s sandbox on where the runtime permits it, which under Docker needs a seccomp profile; without one they render unsandboxed and print a warning. Hardening covers the profile that ships in the image, the recommended runtime settings and a published Compose file. Kubernetes has the manifests, and Railway a hosted deploy.

Health checks

scaleassembly/zshot-server ships a Docker HEALTHCHECK that probes /status. To check it yourself, or to add one to the generic image:

curl http://localhost:3000/status

It returns 200 with the current number of in-flight requests once the server is ready. /status is not behind authentication.