Documentation

Quickstart: Docker Compose

Five minutes to a Stowage + MinIO stack. Useful when you want a more realistic environment than the bundled-MinIO quickstart — both processes run in their own containers, and the compose file is a good starting point for adapting to a real deployment.

#Prerequisites

  • Docker 24+
  • A clone of the Stowage repository (the compose file references the Dockerfile so it can build from source).

#Bring the stack up

From the repo root:

docker compose -f deploy/compose/docker-compose.yml up -d

This launches:

  • minioquay.io/minio/minio:latest, root user minioadmin, exposed on :9000 (S3 API) and :9001 (MinIO console).
  • stowage — built from deploy/docker/Dockerfile, configured by config.example.yaml mounted into the container, exposed on :8080.

The Stowage container waits on MinIO's health check before it starts the dashboard.

#Create the first admin user

docker compose -f deploy/compose/docker-compose.yml exec stowage \
  stowage create-admin \
    --username admin \
    --password 'S3cur3-P@ssw0rd!'

The password rule is at least 12 characters; the demo config relaxes the zxcvbn strength check, but production deployments should not.

#Log in

Open http://localhost:8080, log in as admin, and you should land in the dashboard with local-minio listed as a backend.

#Inspect what you have

docker compose -f deploy/compose/docker-compose.yml ps
docker compose -f deploy/compose/docker-compose.yml logs stowage --tail=20

The MinIO console is at http://localhost:9001 if you want to look at the underlying bucket directly. Tenants don't need it — they go through Stowage.

#Tear it down

docker compose -f deploy/compose/docker-compose.yml down -v

The -v flag removes the named volume minio-data. Drop it to keep the bucket contents around between runs.

#What's in the compose file

deploy/compose/docker-compose.yml is intentionally minimal — two services, no reverse proxy, no TLS, no volume for Stowage's own state. For anything beyond local kicking-of- tyres, add:

#Next step