The broker's default bucket is a local MinIO.

Defaults are http://127.0.0.1:9100, bucket camus, access key camus, secret camus-dev-secret. Override any of them when the bucket is not that.

Why this image is built here

Current community MinIO images are no longer published upstream. deploy/minio builds one from the archived release this repo pins. Compose names it camus-minio and uses it both for the server and for the one-shot that creates the bucket.

docker compose up -d minio create-bucket

The API is on 9100, mapped to 9000 in the container. The console is on 9101. create-bucket waits until MinIO answers, then creates camus if it is missing.

What the broker reads

Leave the variables unset and a broker on the host uses the defaults above. Set them when the endpoint, bucket, or keys differ.

From inside the Camus container

127.0.0.1 inside the container is the container, not the host where MinIO is published. Point CAMUS_S3_ENDPOINT at the host, for example http://host.docker.internal:9100. On a shared Docker network the hostname is the compose service, http://minio:9000, because that name uses the container port rather than the published one.

Connecting does not dial the bucket at process start. The failure shows up when an upload or a read of a sealed object needs it. That is why a one-broker run can look healthy and still lose the seal.