Skip to content

MinIO / Tigris / LocalStack

NamiDB’s s3:// scheme works against any S3-compatible endpoint. The only thing that changes is endpoint=… in the URI.

MinIO (self-hosted)

The canonical “S3 on my own metal” backend.

Terminal window
docker run -d --rm -p 9000:9000 -p 9001:9001 \
-e MINIO_ROOT_USER=minioadmin \
-e MINIO_ROOT_PASSWORD=minioadmin \
--name minio minio/minio server /data --console-address ":9001"
docker exec minio mc alias set local http://127.0.0.1:9000 minioadmin minioadmin
docker exec minio mc mb local/namidb
import os
os.environ["AWS_ACCESS_KEY_ID"] = "minioadmin"
os.environ["AWS_SECRET_ACCESS_KEY"] = "minioadmin"
client = tg.Client(
"s3://namidb?ns=dev"
"&endpoint=http://127.0.0.1:9000"
"&region=us-east-1"
"&allow_http=true"
)

The allow_http=true flag is required because MinIO does not serve TLS by default.

For a production-style MinIO + namidb-server + docker-compose stack, see Self-host with Docker Compose.

Tigris

Tigris is an edge-native S3-compatible storage service.

client = tg.Client(
"s3://my-bucket?ns=prod"
"&endpoint=https://fly.storage.tigris.dev"
"&region=auto"
)

Set AWS_ACCESS_KEY_ID / AWS_SECRET_ACCESS_KEY to your Tigris token.

LocalStack

For tests that need an in-process S3 mock:

Terminal window
docker run -p 4566:4566 -e SERVICES=s3 localstack/localstack
aws --endpoint-url=http://localhost:4566 s3 mb s3://namidb-dev
export AWS_ACCESS_KEY_ID=test
export AWS_SECRET_ACCESS_KEY=test
client = tg.Client(
"s3://namidb-dev?ns=local"
"&endpoint=http://localhost:4566"
"&allow_http=true"
"&region=us-east-1"
)

See also