Docker Compose
Last updated
Was this helpful?
Use this path if you run the full Oz API stack (api6) via Docker Compose. Echo is one of several services api6 brings up; this guide covers the Echo-specific parts of that process. It assumes you're already following api6's own README for the base stack – the steps below are the subset that matter for Echo.
Shared concepts (authentication, endpoints, configuration reference) can be found on the parent page.
Docker Compose v2.20.3 or newer (the compose files use the include: key)
The api6 release contents laid out in an install directory, e.g., /opt/oz/api6.
All commands below must be run from that install directory – cross-file service discovery (nginx → Echo → Mongo) depends on every compose invocation sharing the same default network, which Compose derives from the working directory
Echo uses the public half of this keypair to verify tokens issued by the main API.
openssl ecparam -name secp384r1 -genkey -noout | openssl pkcs8 -topk8 -nocrypt \
-out "$API_DIR/configs/api/keys/jwt/jwt.key"
openssl ec -in "$API_DIR/configs/api/keys/jwt/jwt.key" -pubout \
-out "$API_DIR/configs/api/keys/jwt/jwt.pub"Edit these – empty by default:
configs/echo/service.toml – comma-separated list of accounts allowed to call GET /api/event_sessions.
configs/echo/static_tokens.toml – "email" = "token" pre-shared bearer tokens.
configs/echo/users.toml – "email" = "password" login accounts.
cd "$API_DIR"
docker compose -f ./docker/docker-compose-api-local-local.yml up -d # or -local-s3.yml for S3 storage
docker compose -f ./docker/docker-compose-echo-maxwell.yml up -dThis brings up three containers: api6-echo, api6-mongo (shared with Maxwell), and api6-maxwell.
Echo does not publish a host port in this setup. It's reverse-proxied through api6-nginx, controlled by two variables in configs/env/nginx.env:
ECHO_ENABLE="Yes"
ECHO_HOST="api6-echo"To disable Echo, comment out both lines (confirm it with Oz Forensics support first, since it's treated as an essential component).
Through Nginx, from outside:
curl https://<your-api-host>/api/event_sessions/... # via whatever path/port your nginx is configured withDirectly, from inside the Docker network (useful for a quick sanity check without going through nginx/TLS):
Last updated
Was this helpful?
Was this helpful?
docker exec -it api6-echo curl -s http://localhost:8010/healthz